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  }