78 lines
2.3 KiB
Go
78 lines
2.3 KiB
Go
|
package bond
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/influxdata/telegraf/testutil"
|
||
|
)
|
||
|
|
||
|
var sampleTest802 = `
|
||
|
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
|
||
|
|
||
|
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
|
||
|
Transmit Hash Policy: layer2 (0)
|
||
|
MII Status: up
|
||
|
MII Polling Interval (ms): 100
|
||
|
Up Delay (ms): 0
|
||
|
Down Delay (ms): 0
|
||
|
|
||
|
802.3ad info
|
||
|
LACP rate: fast
|
||
|
Aggregator selection policy (ad_select): stable
|
||
|
bond bond0 has no active aggregator
|
||
|
|
||
|
Slave Interface: eth1
|
||
|
MII Status: up
|
||
|
Link Failure Count: 0
|
||
|
Permanent HW addr: 00:0c:29:f5:b7:11
|
||
|
Aggregator ID: N/A
|
||
|
|
||
|
Slave Interface: eth2
|
||
|
MII Status: up
|
||
|
Link Failure Count: 3
|
||
|
Permanent HW addr: 00:0c:29:f5:b7:1b
|
||
|
Aggregator ID: N/A
|
||
|
`
|
||
|
|
||
|
var sampleTestAB = `
|
||
|
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
|
||
|
|
||
|
Bonding Mode: fault-tolerance (active-backup)
|
||
|
Primary Slave: eth2 (primary_reselect always)
|
||
|
Currently Active Slave: eth2
|
||
|
MII Status: up
|
||
|
MII Polling Interval (ms): 100
|
||
|
Up Delay (ms): 0
|
||
|
Down Delay (ms): 0
|
||
|
|
||
|
Slave Interface: eth3
|
||
|
MII Status: down
|
||
|
Speed: 1000 Mbps
|
||
|
Duplex: full
|
||
|
Link Failure Count: 2
|
||
|
Permanent HW addr:
|
||
|
Slave queue ID: 0
|
||
|
|
||
|
Slave Interface: eth2
|
||
|
MII Status: up
|
||
|
Speed: 100 Mbps
|
||
|
Duplex: full
|
||
|
Link Failure Count: 0
|
||
|
Permanent HW addr:
|
||
|
`
|
||
|
|
||
|
func TestGatherBondInterface(t *testing.T) {
|
||
|
var acc testutil.Accumulator
|
||
|
bond := &Bond{}
|
||
|
|
||
|
bond.gatherBondInterface("bond802", sampleTest802, &acc)
|
||
|
acc.AssertContainsTaggedFields(t, "bond", map[string]interface{}{"status": 1}, map[string]string{"bond": "bond802"})
|
||
|
acc.AssertContainsTaggedFields(t, "bond_slave", map[string]interface{}{"failures": 0, "status": 1}, map[string]string{"bond": "bond802", "interface": "eth1"})
|
||
|
acc.AssertContainsTaggedFields(t, "bond_slave", map[string]interface{}{"failures": 3, "status": 1}, map[string]string{"bond": "bond802", "interface": "eth2"})
|
||
|
|
||
|
bond.gatherBondInterface("bondAB", sampleTestAB, &acc)
|
||
|
acc.AssertContainsTaggedFields(t, "bond", map[string]interface{}{"active_slave": "eth2", "status": 1}, map[string]string{"bond": "bondAB"})
|
||
|
acc.AssertContainsTaggedFields(t, "bond_slave", map[string]interface{}{"failures": 2, "status": 0}, map[string]string{"bond": "bondAB", "interface": "eth3"})
|
||
|
acc.AssertContainsTaggedFields(t, "bond_slave", map[string]interface{}{"failures": 0, "status": 1}, map[string]string{"bond": "bondAB", "interface": "eth2"})
|
||
|
}
|