github.com/influxdata/telegraf@v1.30.3/internal/snmp/mib_loader_test.go (about) 1 package snmp 2 3 import ( 4 "path/filepath" 5 "runtime" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 10 "github.com/influxdata/telegraf/testutil" 11 ) 12 13 type TestingMibLoader struct { 14 folders []string 15 files []string 16 } 17 18 func (t *TestingMibLoader) appendPath(path string) { 19 t.folders = append(t.folders, path) 20 } 21 22 func (t *TestingMibLoader) loadModule(path string) error { 23 t.files = append(t.files, path) 24 return nil 25 } 26 func TestFolderLookup(t *testing.T) { 27 if runtime.GOOS == "windows" { 28 t.Skip("Skipping on windows") 29 } 30 31 tests := []struct { 32 name string 33 mibPath [][]string 34 paths [][]string 35 files []string 36 }{ 37 { 38 name: "loading folders", 39 mibPath: [][]string{{"testdata", "loadMibsFromPath", "root"}}, 40 paths: [][]string{ 41 {"testdata", "loadMibsFromPath", "root"}, 42 {"testdata", "loadMibsFromPath", "root", "dirOne"}, 43 {"testdata", "loadMibsFromPath", "root", "dirOne", "dirTwo"}, 44 {"testdata", "loadMibsFromPath", "linkTarget"}, 45 }, 46 files: []string{"empty", "emptyFile"}, 47 }, 48 } 49 50 for _, tt := range tests { 51 t.Run(tt.name, func(t *testing.T) { 52 loader := TestingMibLoader{} 53 54 var givenPath []string 55 for _, paths := range tt.mibPath { 56 rootPath := filepath.Join(paths...) 57 givenPath = append(givenPath, rootPath) 58 } 59 60 err := LoadMibsFromPath(givenPath, testutil.Logger{}, &loader) 61 require.NoError(t, err) 62 63 var folders []string 64 for _, pathSlice := range tt.paths { 65 path := filepath.Join(pathSlice...) 66 folders = append(folders, path) 67 } 68 require.Equal(t, folders, loader.folders) 69 70 require.Equal(t, tt.files, loader.files) 71 }) 72 } 73 } 74 75 func TestMissingMibPath(t *testing.T) { 76 log := testutil.Logger{} 77 path := []string{"non-existing-directory"} 78 require.NoError(t, LoadMibsFromPath(path, log, &GosmiMibLoader{})) 79 } 80 81 func BenchmarkMibLoading(b *testing.B) { 82 log := testutil.Logger{} 83 path := []string{"testdata/gosmi"} 84 for i := 0; i < b.N; i++ { 85 require.NoError(b, LoadMibsFromPath(path, log, &GosmiMibLoader{})) 86 } 87 }