483 lines
9.3 KiB
Go
483 lines
9.3 KiB
Go
|
package snmp_legacy
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/influxdata/telegraf/testutil"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestSNMPErrorGet1(t *testing.T) {
|
||
|
get1 := Data{
|
||
|
Name: "oid1",
|
||
|
Unit: "octets",
|
||
|
Oid: ".1.3.6.1.2.1.2.2.1.16.1",
|
||
|
}
|
||
|
h := Host{
|
||
|
Collect: []string{"oid1"},
|
||
|
}
|
||
|
s := Snmp{
|
||
|
SnmptranslateFile: "bad_oid.txt",
|
||
|
Host: []Host{h},
|
||
|
Get: []Data{get1},
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
err := s.Gather(&acc)
|
||
|
require.Error(t, err)
|
||
|
}
|
||
|
|
||
|
func TestSNMPErrorGet2(t *testing.T) {
|
||
|
get1 := Data{
|
||
|
Name: "oid1",
|
||
|
Unit: "octets",
|
||
|
Oid: ".1.3.6.1.2.1.2.2.1.16.1",
|
||
|
}
|
||
|
h := Host{
|
||
|
Collect: []string{"oid1"},
|
||
|
}
|
||
|
s := Snmp{
|
||
|
Host: []Host{h},
|
||
|
Get: []Data{get1},
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
err := s.Gather(&acc)
|
||
|
require.NoError(t, err)
|
||
|
assert.Equal(t, 0, len(acc.Metrics))
|
||
|
}
|
||
|
|
||
|
func TestSNMPErrorBulk(t *testing.T) {
|
||
|
bulk1 := Data{
|
||
|
Name: "oid1",
|
||
|
Unit: "octets",
|
||
|
Oid: ".1.3.6.1.2.1.2.2.1.16",
|
||
|
}
|
||
|
h := Host{
|
||
|
Address: testutil.GetLocalHost(),
|
||
|
Collect: []string{"oid1"},
|
||
|
}
|
||
|
s := Snmp{
|
||
|
Host: []Host{h},
|
||
|
Bulk: []Data{bulk1},
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
err := s.Gather(&acc)
|
||
|
require.NoError(t, err)
|
||
|
assert.Equal(t, 0, len(acc.Metrics))
|
||
|
}
|
||
|
|
||
|
func TestSNMPGet1(t *testing.T) {
|
||
|
if testing.Short() {
|
||
|
t.Skip("Skipping integration test in short mode")
|
||
|
}
|
||
|
get1 := Data{
|
||
|
Name: "oid1",
|
||
|
Unit: "octets",
|
||
|
Oid: ".1.3.6.1.2.1.2.2.1.16.1",
|
||
|
}
|
||
|
h := Host{
|
||
|
Address: testutil.GetLocalHost() + ":31161",
|
||
|
Community: "telegraf",
|
||
|
Version: 2,
|
||
|
Timeout: 2.0,
|
||
|
Retries: 2,
|
||
|
Collect: []string{"oid1"},
|
||
|
}
|
||
|
s := Snmp{
|
||
|
Host: []Host{h},
|
||
|
Get: []Data{get1},
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
err := s.Gather(&acc)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"oid1",
|
||
|
map[string]interface{}{
|
||
|
"oid1": uint(543846),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
}
|
||
|
|
||
|
func TestSNMPGet2(t *testing.T) {
|
||
|
if testing.Short() {
|
||
|
t.Skip("Skipping integration test in short mode")
|
||
|
}
|
||
|
get1 := Data{
|
||
|
Name: "oid1",
|
||
|
Oid: "ifNumber",
|
||
|
}
|
||
|
h := Host{
|
||
|
Address: testutil.GetLocalHost() + ":31161",
|
||
|
Community: "telegraf",
|
||
|
Version: 2,
|
||
|
Timeout: 2.0,
|
||
|
Retries: 2,
|
||
|
Collect: []string{"oid1"},
|
||
|
}
|
||
|
s := Snmp{
|
||
|
SnmptranslateFile: "./testdata/oids.txt",
|
||
|
Host: []Host{h},
|
||
|
Get: []Data{get1},
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
err := s.Gather(&acc)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifNumber",
|
||
|
map[string]interface{}{
|
||
|
"ifNumber": int(4),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"instance": "0",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
}
|
||
|
|
||
|
func TestSNMPGet3(t *testing.T) {
|
||
|
if testing.Short() {
|
||
|
t.Skip("Skipping integration test in short mode")
|
||
|
}
|
||
|
get1 := Data{
|
||
|
Name: "oid1",
|
||
|
Unit: "octets",
|
||
|
Oid: "ifSpeed",
|
||
|
Instance: "1",
|
||
|
}
|
||
|
h := Host{
|
||
|
Address: testutil.GetLocalHost() + ":31161",
|
||
|
Community: "telegraf",
|
||
|
Version: 2,
|
||
|
Timeout: 2.0,
|
||
|
Retries: 2,
|
||
|
Collect: []string{"oid1"},
|
||
|
}
|
||
|
s := Snmp{
|
||
|
SnmptranslateFile: "./testdata/oids.txt",
|
||
|
Host: []Host{h},
|
||
|
Get: []Data{get1},
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
err := s.Gather(&acc)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifSpeed",
|
||
|
map[string]interface{}{
|
||
|
"ifSpeed": uint(10000000),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"instance": "1",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
}
|
||
|
|
||
|
func TestSNMPEasyGet4(t *testing.T) {
|
||
|
if testing.Short() {
|
||
|
t.Skip("Skipping integration test in short mode")
|
||
|
}
|
||
|
get1 := Data{
|
||
|
Name: "oid1",
|
||
|
Unit: "octets",
|
||
|
Oid: "ifSpeed",
|
||
|
Instance: "1",
|
||
|
}
|
||
|
h := Host{
|
||
|
Address: testutil.GetLocalHost() + ":31161",
|
||
|
Community: "telegraf",
|
||
|
Version: 2,
|
||
|
Timeout: 2.0,
|
||
|
Retries: 2,
|
||
|
Collect: []string{"oid1"},
|
||
|
GetOids: []string{"ifNumber"},
|
||
|
}
|
||
|
s := Snmp{
|
||
|
SnmptranslateFile: "./testdata/oids.txt",
|
||
|
Host: []Host{h},
|
||
|
Get: []Data{get1},
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
err := s.Gather(&acc)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifSpeed",
|
||
|
map[string]interface{}{
|
||
|
"ifSpeed": uint(10000000),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"instance": "1",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifNumber",
|
||
|
map[string]interface{}{
|
||
|
"ifNumber": int(4),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"instance": "0",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
}
|
||
|
|
||
|
func TestSNMPEasyGet5(t *testing.T) {
|
||
|
if testing.Short() {
|
||
|
t.Skip("Skipping integration test in short mode")
|
||
|
}
|
||
|
get1 := Data{
|
||
|
Name: "oid1",
|
||
|
Unit: "octets",
|
||
|
Oid: "ifSpeed",
|
||
|
Instance: "1",
|
||
|
}
|
||
|
h := Host{
|
||
|
Address: testutil.GetLocalHost() + ":31161",
|
||
|
Community: "telegraf",
|
||
|
Version: 2,
|
||
|
Timeout: 2.0,
|
||
|
Retries: 2,
|
||
|
Collect: []string{"oid1"},
|
||
|
GetOids: []string{".1.3.6.1.2.1.2.1.0"},
|
||
|
}
|
||
|
s := Snmp{
|
||
|
SnmptranslateFile: "./testdata/oids.txt",
|
||
|
Host: []Host{h},
|
||
|
Get: []Data{get1},
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
err := s.Gather(&acc)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifSpeed",
|
||
|
map[string]interface{}{
|
||
|
"ifSpeed": uint(10000000),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"instance": "1",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifNumber",
|
||
|
map[string]interface{}{
|
||
|
"ifNumber": int(4),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"instance": "0",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
}
|
||
|
|
||
|
func TestSNMPEasyGet6(t *testing.T) {
|
||
|
if testing.Short() {
|
||
|
t.Skip("Skipping integration test in short mode")
|
||
|
}
|
||
|
h := Host{
|
||
|
Address: testutil.GetLocalHost() + ":31161",
|
||
|
Community: "telegraf",
|
||
|
Version: 2,
|
||
|
Timeout: 2.0,
|
||
|
Retries: 2,
|
||
|
GetOids: []string{"1.3.6.1.2.1.2.1.0"},
|
||
|
}
|
||
|
s := Snmp{
|
||
|
SnmptranslateFile: "./testdata/oids.txt",
|
||
|
Host: []Host{h},
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
err := s.Gather(&acc)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifNumber",
|
||
|
map[string]interface{}{
|
||
|
"ifNumber": int(4),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"instance": "0",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
}
|
||
|
|
||
|
func TestSNMPBulk1(t *testing.T) {
|
||
|
if testing.Short() {
|
||
|
t.Skip("Skipping integration test in short mode")
|
||
|
}
|
||
|
bulk1 := Data{
|
||
|
Name: "oid1",
|
||
|
Unit: "octets",
|
||
|
Oid: ".1.3.6.1.2.1.2.2.1.16",
|
||
|
MaxRepetition: 2,
|
||
|
}
|
||
|
h := Host{
|
||
|
Address: testutil.GetLocalHost() + ":31161",
|
||
|
Community: "telegraf",
|
||
|
Version: 2,
|
||
|
Timeout: 2.0,
|
||
|
Retries: 2,
|
||
|
Collect: []string{"oid1"},
|
||
|
}
|
||
|
s := Snmp{
|
||
|
SnmptranslateFile: "./testdata/oids.txt",
|
||
|
Host: []Host{h},
|
||
|
Bulk: []Data{bulk1},
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
err := s.Gather(&acc)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifOutOctets",
|
||
|
map[string]interface{}{
|
||
|
"ifOutOctets": uint(543846),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"instance": "1",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifOutOctets",
|
||
|
map[string]interface{}{
|
||
|
"ifOutOctets": uint(26475179),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"instance": "2",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifOutOctets",
|
||
|
map[string]interface{}{
|
||
|
"ifOutOctets": uint(108963968),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"instance": "3",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifOutOctets",
|
||
|
map[string]interface{}{
|
||
|
"ifOutOctets": uint(12991453),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"instance": "36",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
}
|
||
|
|
||
|
// TODO find why, if this test is active
|
||
|
// Circle CI stops with the following error...
|
||
|
// bash scripts/circle-test.sh died unexpectedly
|
||
|
// Maybe the test is too long ??
|
||
|
func dTestSNMPBulk2(t *testing.T) {
|
||
|
bulk1 := Data{
|
||
|
Name: "oid1",
|
||
|
Unit: "octets",
|
||
|
Oid: "ifOutOctets",
|
||
|
MaxRepetition: 2,
|
||
|
}
|
||
|
h := Host{
|
||
|
Address: testutil.GetLocalHost() + ":31161",
|
||
|
Community: "telegraf",
|
||
|
Version: 2,
|
||
|
Timeout: 2.0,
|
||
|
Retries: 2,
|
||
|
Collect: []string{"oid1"},
|
||
|
}
|
||
|
s := Snmp{
|
||
|
SnmptranslateFile: "./testdata/oids.txt",
|
||
|
Host: []Host{h},
|
||
|
Bulk: []Data{bulk1},
|
||
|
}
|
||
|
|
||
|
var acc testutil.Accumulator
|
||
|
err := s.Gather(&acc)
|
||
|
require.NoError(t, err)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifOutOctets",
|
||
|
map[string]interface{}{
|
||
|
"ifOutOctets": uint(543846),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"instance": "1",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifOutOctets",
|
||
|
map[string]interface{}{
|
||
|
"ifOutOctets": uint(26475179),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"instance": "2",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifOutOctets",
|
||
|
map[string]interface{}{
|
||
|
"ifOutOctets": uint(108963968),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"instance": "3",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t,
|
||
|
"ifOutOctets",
|
||
|
map[string]interface{}{
|
||
|
"ifOutOctets": uint(12991453),
|
||
|
},
|
||
|
map[string]string{
|
||
|
"unit": "octets",
|
||
|
"instance": "36",
|
||
|
"snmp_host": testutil.GetLocalHost(),
|
||
|
},
|
||
|
)
|
||
|
}
|