138 lines
4.4 KiB
Go
138 lines
4.4 KiB
Go
package lanz
|
|
|
|
import (
|
|
"net/url"
|
|
"strconv"
|
|
"testing"
|
|
|
|
pb "github.com/aristanetworks/goarista/lanz/proto"
|
|
"github.com/golang/protobuf/proto"
|
|
"github.com/influxdata/telegraf/testutil"
|
|
)
|
|
|
|
var testProtoBufCongestionRecord1 = &pb.LanzRecord{
|
|
CongestionRecord: &pb.CongestionRecord{
|
|
Timestamp: proto.Uint64(100000000000000),
|
|
IntfName: proto.String("eth1"),
|
|
SwitchId: proto.Uint32(1),
|
|
PortId: proto.Uint32(1),
|
|
QueueSize: proto.Uint32(1),
|
|
EntryType: pb.CongestionRecord_EntryType.Enum(1),
|
|
TrafficClass: proto.Uint32(1),
|
|
TimeOfMaxQLen: proto.Uint64(100000000000000),
|
|
TxLatency: proto.Uint32(100),
|
|
QDropCount: proto.Uint32(1),
|
|
FabricPeerIntfName: proto.String("FabricPeerIntfName1"),
|
|
},
|
|
}
|
|
var testProtoBufCongestionRecord2 = &pb.LanzRecord{
|
|
CongestionRecord: &pb.CongestionRecord{
|
|
Timestamp: proto.Uint64(200000000000000),
|
|
IntfName: proto.String("eth2"),
|
|
SwitchId: proto.Uint32(2),
|
|
PortId: proto.Uint32(2),
|
|
QueueSize: proto.Uint32(2),
|
|
EntryType: pb.CongestionRecord_EntryType.Enum(2),
|
|
TrafficClass: proto.Uint32(2),
|
|
TimeOfMaxQLen: proto.Uint64(200000000000000),
|
|
TxLatency: proto.Uint32(200),
|
|
QDropCount: proto.Uint32(2),
|
|
FabricPeerIntfName: proto.String("FabricPeerIntfName2"),
|
|
},
|
|
}
|
|
|
|
var testProtoBufGlobalBufferUsageRecord = &pb.LanzRecord{
|
|
GlobalBufferUsageRecord: &pb.GlobalBufferUsageRecord{
|
|
EntryType: pb.GlobalBufferUsageRecord_EntryType.Enum(1),
|
|
Timestamp: proto.Uint64(100000000000000),
|
|
BufferSize: proto.Uint32(1),
|
|
Duration: proto.Uint32(10),
|
|
},
|
|
}
|
|
|
|
func TestLanzGeneratesMetrics(t *testing.T) {
|
|
|
|
var acc testutil.Accumulator
|
|
|
|
l := NewLanz()
|
|
|
|
l.Servers = append(l.Servers, "tcp://switch01.int.example.com:50001")
|
|
l.Servers = append(l.Servers, "tcp://switch02.int.example.com:50001")
|
|
deviceUrl1, err := url.Parse(l.Servers[0])
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
deviceUrl2, err := url.Parse(l.Servers[1])
|
|
if err != nil {
|
|
t.Fail()
|
|
}
|
|
|
|
msgToAccumulator(&acc, testProtoBufCongestionRecord1, deviceUrl1)
|
|
acc.Wait(1)
|
|
|
|
vals1 := map[string]interface{}{
|
|
"timestamp": int64(100000000000000),
|
|
"queue_size": int64(1),
|
|
"time_of_max_qlen": int64(100000000000000),
|
|
"tx_latency": int64(100),
|
|
"q_drop_count": int64(1),
|
|
}
|
|
tags1 := map[string]string{
|
|
"intf_name": "eth1",
|
|
"switch_id": strconv.FormatInt(int64(1), 10),
|
|
"port_id": strconv.FormatInt(int64(1), 10),
|
|
"entry_type": strconv.FormatInt(int64(1), 10),
|
|
"traffic_class": strconv.FormatInt(int64(1), 10),
|
|
"fabric_peer_intf_name": "FabricPeerIntfName1",
|
|
"source": "switch01.int.example.com",
|
|
"port": "50001",
|
|
}
|
|
|
|
acc.AssertContainsFields(t, "lanz_congestion_record", vals1)
|
|
acc.AssertContainsTaggedFields(t, "lanz_congestion_record", vals1, tags1)
|
|
|
|
acc.ClearMetrics()
|
|
msgToAccumulator(&acc, testProtoBufCongestionRecord2, deviceUrl2)
|
|
acc.Wait(1)
|
|
|
|
vals2 := map[string]interface{}{
|
|
"timestamp": int64(200000000000000),
|
|
"queue_size": int64(2),
|
|
"time_of_max_qlen": int64(200000000000000),
|
|
"tx_latency": int64(200),
|
|
"q_drop_count": int64(2),
|
|
}
|
|
tags2 := map[string]string{
|
|
"intf_name": "eth2",
|
|
"switch_id": strconv.FormatInt(int64(2), 10),
|
|
"port_id": strconv.FormatInt(int64(2), 10),
|
|
"entry_type": strconv.FormatInt(int64(2), 10),
|
|
"traffic_class": strconv.FormatInt(int64(2), 10),
|
|
"fabric_peer_intf_name": "FabricPeerIntfName2",
|
|
"source": "switch02.int.example.com",
|
|
"port": "50001",
|
|
}
|
|
|
|
acc.AssertContainsFields(t, "lanz_congestion_record", vals2)
|
|
acc.AssertContainsTaggedFields(t, "lanz_congestion_record", vals2, tags2)
|
|
|
|
acc.ClearMetrics()
|
|
msgToAccumulator(&acc, testProtoBufGlobalBufferUsageRecord, deviceUrl1)
|
|
acc.Wait(1)
|
|
|
|
gburVals1 := map[string]interface{}{
|
|
"timestamp": int64(100000000000000),
|
|
"buffer_size": int64(1),
|
|
"duration": int64(10),
|
|
}
|
|
gburTags1 := map[string]string{
|
|
"entry_type": strconv.FormatInt(int64(1), 10),
|
|
"source": "switch01.int.example.com",
|
|
"port": "50001",
|
|
}
|
|
|
|
acc.AssertContainsFields(t, "lanz_global_buffer_usage_record", gburVals1)
|
|
acc.AssertContainsTaggedFields(t, "lanz_global_buffer_usage_record", gburVals1, gburTags1)
|
|
|
|
}
|