2022-01-28 05:38:03 +08:00
|
|
|
package snmp
|
|
|
|
|
|
|
|
|
|
import (
|
2022-02-17 03:25:20 +08:00
|
|
|
"path/filepath"
|
|
|
|
|
"runtime"
|
2022-01-28 05:38:03 +08:00
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
|
|
|
|
|
"github.com/influxdata/telegraf/testutil"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestTrapLookup(t *testing.T) {
|
|
|
|
|
tests := []struct {
|
|
|
|
|
name string
|
|
|
|
|
oid string
|
|
|
|
|
expected MibEntry
|
|
|
|
|
}{
|
|
|
|
|
{
|
|
|
|
|
name: "Known trap OID",
|
|
|
|
|
oid: ".1.3.6.1.6.3.1.1.5.1",
|
|
|
|
|
expected: MibEntry{
|
|
|
|
|
MibName: "TGTEST-MIB",
|
|
|
|
|
OidText: "coldStart",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "Known trap value OID",
|
|
|
|
|
oid: ".1.3.6.1.2.1.1.3.0",
|
|
|
|
|
expected: MibEntry{
|
|
|
|
|
MibName: "TGTEST-MIB",
|
|
|
|
|
OidText: "sysUpTimeInstance",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "Unknown enterprise sub-OID",
|
|
|
|
|
oid: ".1.3.6.1.4.1.0.1.2.3",
|
|
|
|
|
expected: MibEntry{
|
|
|
|
|
MibName: "TGTEST-MIB",
|
|
|
|
|
OidText: "enterprises.0.1.2.3",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "Unknown MIB",
|
|
|
|
|
oid: ".1.2.3",
|
|
|
|
|
expected: MibEntry{OidText: "iso.2.3"},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Load the MIBs
|
2022-02-17 03:25:20 +08:00
|
|
|
require.NoError(t, LoadMibsFromPath([]string{"testdata/mibs"}, testutil.Logger{}, &GosmiMibLoader{}))
|
2022-01-28 05:38:03 +08:00
|
|
|
|
|
|
|
|
for _, tt := range tests {
|
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
|
// Run the actual test
|
|
|
|
|
actual, err := TrapLookup(tt.oid)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
require.Equal(t, tt.expected, actual)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestTrapLookupFail(t *testing.T) {
|
|
|
|
|
tests := []struct {
|
|
|
|
|
name string
|
|
|
|
|
oid string
|
|
|
|
|
expected string
|
|
|
|
|
}{
|
|
|
|
|
{
|
|
|
|
|
name: "New top level OID",
|
|
|
|
|
oid: ".3.6.1.3.0",
|
|
|
|
|
expected: "Could not find node for OID 3.6.1.3.0",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "Malformed OID",
|
|
|
|
|
oid: ".1.3.dod.1.3.0",
|
|
|
|
|
expected: "could not convert OID .1.3.dod.1.3.0: strconv.ParseUint: parsing \"dod\": invalid syntax",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Load the MIBs
|
2022-02-17 03:25:20 +08:00
|
|
|
require.NoError(t, LoadMibsFromPath([]string{"testdata/mibs"}, testutil.Logger{}, &GosmiMibLoader{}))
|
2022-01-28 05:38:03 +08:00
|
|
|
|
|
|
|
|
for _, tt := range tests {
|
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
|
// Run the actual test
|
|
|
|
|
_, err := TrapLookup(tt.oid)
|
|
|
|
|
require.EqualError(t, err, tt.expected)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-02-17 03:25:20 +08:00
|
|
|
|
|
|
|
|
type TestingMibLoader struct {
|
|
|
|
|
folders []string
|
|
|
|
|
files []string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (t *TestingMibLoader) appendPath(path string) {
|
|
|
|
|
t.folders = append(t.folders, path)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (t *TestingMibLoader) loadModule(path string) error {
|
|
|
|
|
t.files = append(t.files, path)
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
func TestFolderLookup(t *testing.T) {
|
|
|
|
|
if runtime.GOOS == "windows" {
|
|
|
|
|
t.Skip("Skipping on windows")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tests := []struct {
|
|
|
|
|
name string
|
|
|
|
|
mibPath [][]string
|
|
|
|
|
paths [][]string
|
|
|
|
|
files []string
|
|
|
|
|
}{
|
|
|
|
|
{
|
|
|
|
|
name: "loading folders",
|
|
|
|
|
mibPath: [][]string{{"testdata", "loadMibsFromPath", "root"}},
|
|
|
|
|
paths: [][]string{
|
|
|
|
|
{"testdata", "loadMibsFromPath", "root"},
|
|
|
|
|
{"testdata", "loadMibsFromPath", "root", "dirOne"},
|
|
|
|
|
{"testdata", "loadMibsFromPath", "root", "dirOne", "dirTwo"},
|
|
|
|
|
{"testdata", "loadMibsFromPath", "linkTarget"},
|
|
|
|
|
},
|
|
|
|
|
files: []string{"empty", "emptyFile"},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, tt := range tests {
|
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
|
loader := TestingMibLoader{}
|
2022-03-11 23:29:16 +08:00
|
|
|
|
|
|
|
|
var givenPath []string
|
2022-02-17 03:25:20 +08:00
|
|
|
for _, paths := range tt.mibPath {
|
|
|
|
|
rootPath := filepath.Join(paths...)
|
|
|
|
|
givenPath = append(givenPath, rootPath)
|
|
|
|
|
}
|
2022-03-11 23:29:16 +08:00
|
|
|
|
2022-02-17 03:25:20 +08:00
|
|
|
err := LoadMibsFromPath(givenPath, testutil.Logger{}, &loader)
|
|
|
|
|
require.NoError(t, err)
|
2022-03-11 23:29:16 +08:00
|
|
|
|
|
|
|
|
var folders []string
|
2022-02-17 03:25:20 +08:00
|
|
|
for _, pathSlice := range tt.paths {
|
|
|
|
|
path := filepath.Join(pathSlice...)
|
|
|
|
|
folders = append(folders, path)
|
|
|
|
|
}
|
|
|
|
|
require.Equal(t, folders, loader.folders)
|
2022-03-11 23:29:16 +08:00
|
|
|
|
2022-02-17 03:25:20 +08:00
|
|
|
require.Equal(t, tt.files, loader.files)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|