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 }