github.com/influxdata/telegraf@v1.30.3/internal/snmp/wrapper_test.go (about)

     1  package snmp
     2  
     3  import "github.com/gosnmp/gosnmp"
     4  
     5  type testSNMPConnection struct {
     6  	host   string
     7  	values map[string]interface{}
     8  }
     9  
    10  func (tsc *testSNMPConnection) Host() string {
    11  	return tsc.host
    12  }
    13  
    14  func (tsc *testSNMPConnection) Get(oids []string) (*gosnmp.SnmpPacket, error) {
    15  	sp := &gosnmp.SnmpPacket{}
    16  	for _, oid := range oids {
    17  		v, ok := tsc.values[oid]
    18  		if !ok {
    19  			sp.Variables = append(sp.Variables, gosnmp.SnmpPDU{
    20  				Name: oid,
    21  				Type: gosnmp.NoSuchObject,
    22  			})
    23  			continue
    24  		}
    25  		sp.Variables = append(sp.Variables, gosnmp.SnmpPDU{
    26  			Name:  oid,
    27  			Value: v,
    28  		})
    29  	}
    30  	return sp, nil
    31  }
    32  func (tsc *testSNMPConnection) Walk(oid string, wf gosnmp.WalkFunc) error {
    33  	for void, v := range tsc.values {
    34  		if void == oid || (len(void) > len(oid) && void[:len(oid)+1] == oid+".") {
    35  			if err := wf(gosnmp.SnmpPDU{
    36  				Name:  void,
    37  				Value: v,
    38  			}); err != nil {
    39  				return err
    40  			}
    41  		}
    42  	}
    43  	return nil
    44  }
    45  func (tsc *testSNMPConnection) Reconnect() error {
    46  	return nil
    47  }
    48  
    49  var tsc = &testSNMPConnection{
    50  	host: "tsc",
    51  	values: map[string]interface{}{
    52  		".1.0.0.0.1.1.0":         "foo",
    53  		".1.0.0.0.1.1.1":         []byte("bar"),
    54  		".1.0.0.0.1.1.2":         []byte(""),
    55  		".1.0.0.0.1.102":         "bad",
    56  		".1.0.0.0.1.2.0":         1,
    57  		".1.0.0.0.1.2.1":         2,
    58  		".1.0.0.0.1.2.2":         0,
    59  		".1.0.0.0.1.3.0":         "0.123",
    60  		".1.0.0.0.1.3.1":         "0.456",
    61  		".1.0.0.0.1.3.2":         "0.000",
    62  		".1.0.0.0.1.3.3":         "9.999",
    63  		".1.0.0.0.1.5.0":         123456,
    64  		".1.0.0.0.1.6.0":         ".1.0.0.0.1.7",
    65  		".1.0.0.1.1":             "baz",
    66  		".1.0.0.1.2":             234,
    67  		".1.0.0.1.3":             []byte("byte slice"),
    68  		".1.0.0.2.1.5.0.9.9":     11,
    69  		".1.0.0.2.1.5.1.9.9":     22,
    70  		".1.0.0.3.1.1.10":        "instance",
    71  		".1.0.0.3.1.1.11":        "instance2",
    72  		".1.0.0.3.1.1.12":        "instance3",
    73  		".1.0.0.3.1.2.10":        10,
    74  		".1.0.0.3.1.2.11":        20,
    75  		".1.0.0.3.1.2.12":        20,
    76  		".1.0.0.3.1.3.10":        1,
    77  		".1.0.0.3.1.3.11":        2,
    78  		".1.0.0.3.1.3.12":        3,
    79  		".1.3.6.1.2.1.3.1.1.1.0": "foo",
    80  		".1.3.6.1.2.1.3.1.1.1.1": []byte("bar"),
    81  		".1.3.6.1.2.1.3.1.1.1.2": []byte(""),
    82  		".1.3.6.1.2.1.3.1.1.102": "bad",
    83  		".1.3.6.1.2.1.3.1.1.2.0": 1,
    84  		".1.3.6.1.2.1.3.1.1.2.1": 2,
    85  		".1.3.6.1.2.1.3.1.1.2.2": 0,
    86  		".1.3.6.1.2.1.3.1.1.3.0": "1.3.6.1.2.1.3.1.1.3",
    87  		".1.3.6.1.2.1.3.1.1.5.0": 123456,
    88  	},
    89  }