mirror of
https://github.com/weaveworks/scope.git
synced 2026-08-19 04:16:21 +00:00
Extend testing for EdgeMetadatas.
This commit is contained in:
@@ -33,7 +33,7 @@ func (c EdgeMetadatas) Copy() EdgeMetadatas {
|
||||
// Add value to the counter 'key'
|
||||
func (c EdgeMetadatas) Add(key string, value EdgeMetadata) EdgeMetadatas {
|
||||
if existingValue, ok := c.psMap.Lookup(key); ok {
|
||||
value.Merge(existingValue.(EdgeMetadata))
|
||||
value = value.Merge(existingValue.(EdgeMetadata))
|
||||
}
|
||||
return EdgeMetadatas{
|
||||
c.psMap.Set(key, value),
|
||||
|
||||
@@ -0,0 +1,224 @@
|
||||
package report
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/weaveworks/scope/test"
|
||||
"github.com/weaveworks/scope/test/reflect"
|
||||
)
|
||||
|
||||
func TestEdgeMetadatasAdd(t *testing.T) {
|
||||
want := EmptyEdgeMetadatas.
|
||||
Add("foo",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(3),
|
||||
})
|
||||
have := EmptyEdgeMetadatas.
|
||||
Add("foo",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
}).
|
||||
Add("foo",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(2),
|
||||
})
|
||||
if !reflect.DeepEqual(want, have) {
|
||||
t.Errorf(test.Diff(want, have))
|
||||
}
|
||||
if emd, ok := have.Lookup("foo"); !ok || *emd.EgressPacketCount != 3 {
|
||||
t.Errorf("foo.EgressPacketCount != 3")
|
||||
}
|
||||
if emd, ok := have.Lookup("bar"); ok || emd.EgressPacketCount != nil {
|
||||
t.Errorf("bar.EgressPacketCount != nil")
|
||||
}
|
||||
have.ForEach(func(k string, emd EdgeMetadata) {
|
||||
if k != "foo" || *emd.EgressPacketCount != 3 {
|
||||
t.Errorf("foo.EgressPacketCount != 3")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestEdgeMetadatasMerge(t *testing.T) {
|
||||
for name, c := range map[string]struct {
|
||||
a, b, want EdgeMetadatas
|
||||
}{
|
||||
"Empty a": {
|
||||
a: EmptyEdgeMetadatas,
|
||||
b: EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
MaxConnCountTCP: newu64(2),
|
||||
}),
|
||||
want: EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
MaxConnCountTCP: newu64(2),
|
||||
}),
|
||||
},
|
||||
"Empty b": {
|
||||
a: EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(12),
|
||||
EgressByteCount: newu64(999),
|
||||
}),
|
||||
b: EmptyEdgeMetadatas,
|
||||
want: EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(12),
|
||||
EgressByteCount: newu64(999),
|
||||
}),
|
||||
},
|
||||
"Host merge": {
|
||||
a: EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(12),
|
||||
EgressByteCount: newu64(500),
|
||||
MaxConnCountTCP: newu64(4),
|
||||
}),
|
||||
b: EmptyEdgeMetadatas.
|
||||
Add("hostQ|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
EgressByteCount: newu64(2),
|
||||
MaxConnCountTCP: newu64(6),
|
||||
}),
|
||||
want: EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(12),
|
||||
EgressByteCount: newu64(500),
|
||||
MaxConnCountTCP: newu64(4),
|
||||
}).
|
||||
Add("hostQ|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
EgressByteCount: newu64(2),
|
||||
MaxConnCountTCP: newu64(6),
|
||||
}),
|
||||
},
|
||||
"Edge merge": {
|
||||
a: EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(12),
|
||||
EgressByteCount: newu64(1000),
|
||||
MaxConnCountTCP: newu64(7),
|
||||
}),
|
||||
b: EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
IngressByteCount: newu64(123),
|
||||
EgressByteCount: newu64(2),
|
||||
MaxConnCountTCP: newu64(9),
|
||||
}),
|
||||
want: EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
EdgeMetadata{
|
||||
EgressPacketCount: newu64(13),
|
||||
IngressByteCount: newu64(123),
|
||||
EgressByteCount: newu64(1002),
|
||||
MaxConnCountTCP: newu64(9),
|
||||
}),
|
||||
},
|
||||
} {
|
||||
if have := c.a.Merge(c.b); !reflect.DeepEqual(c.want, have) {
|
||||
t.Errorf("%s:\n%s", name, test.Diff(c.want, have))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestEdgeMetadataFlatten(t *testing.T) {
|
||||
{
|
||||
have := (EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
MaxConnCountTCP: newu64(2),
|
||||
}).Flatten(EdgeMetadata{
|
||||
EgressPacketCount: newu64(4),
|
||||
EgressByteCount: newu64(8),
|
||||
MaxConnCountTCP: newu64(16),
|
||||
})
|
||||
want := EdgeMetadata{
|
||||
EgressPacketCount: newu64(1 + 4),
|
||||
EgressByteCount: newu64(8),
|
||||
MaxConnCountTCP: newu64(2 + 16), // flatten should sum MaxConnCountTCP
|
||||
}
|
||||
if !reflect.DeepEqual(want, have) {
|
||||
t.Error(test.Diff(want, have))
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
have := EmptyEdgeMetadatas.
|
||||
Add("foo", EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
MaxConnCountTCP: newu64(2),
|
||||
}).
|
||||
Add("bar", EdgeMetadata{
|
||||
EgressPacketCount: newu64(3),
|
||||
MaxConnCountTCP: newu64(5),
|
||||
}).Flatten()
|
||||
want := EdgeMetadata{
|
||||
EgressPacketCount: newu64(1 + 3),
|
||||
MaxConnCountTCP: newu64(2 + 5),
|
||||
}
|
||||
if !reflect.DeepEqual(want, have) {
|
||||
t.Error(test.Diff(want, have))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestEdgeMetadataReversed(t *testing.T) {
|
||||
have := EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
}.Reversed()
|
||||
want := EdgeMetadata{
|
||||
IngressPacketCount: newu64(1),
|
||||
}
|
||||
if !reflect.DeepEqual(want, have) {
|
||||
t.Error(test.Diff(want, have))
|
||||
}
|
||||
}
|
||||
|
||||
func TestEdgeMetadataEncoding(t *testing.T) {
|
||||
want := EmptyEdgeMetadatas.
|
||||
Add("foo", EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
MaxConnCountTCP: newu64(2),
|
||||
}).
|
||||
Add("bar", EdgeMetadata{
|
||||
EgressPacketCount: newu64(3),
|
||||
MaxConnCountTCP: newu64(5),
|
||||
})
|
||||
|
||||
{
|
||||
gobs, err := want.GobEncode()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
have := EmptyEdgeMetadatas
|
||||
have.GobDecode(gobs)
|
||||
if !reflect.DeepEqual(want, have) {
|
||||
t.Error(test.Diff(want, have))
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
json, err := want.MarshalJSON()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
have := EmptyEdgeMetadatas
|
||||
have.UnmarshalJSON(json)
|
||||
if !reflect.DeepEqual(want, have) {
|
||||
t.Error(test.Diff(want, have))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func newu64(value uint64) *uint64 { return &value }
|
||||
@@ -16,120 +16,6 @@ const (
|
||||
Domain = "domain"
|
||||
)
|
||||
|
||||
func TestMergeEdgeMetadatas(t *testing.T) {
|
||||
for name, c := range map[string]struct {
|
||||
a, b, want report.EdgeMetadatas
|
||||
}{
|
||||
"Empty a": {
|
||||
a: report.EmptyEdgeMetadatas,
|
||||
b: report.EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
MaxConnCountTCP: newu64(2),
|
||||
}),
|
||||
want: report.EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
MaxConnCountTCP: newu64(2),
|
||||
}),
|
||||
},
|
||||
"Empty b": {
|
||||
a: report.EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(12),
|
||||
EgressByteCount: newu64(999),
|
||||
}),
|
||||
b: report.EmptyEdgeMetadatas,
|
||||
want: report.EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(12),
|
||||
EgressByteCount: newu64(999),
|
||||
}),
|
||||
},
|
||||
"Host merge": {
|
||||
a: report.EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(12),
|
||||
EgressByteCount: newu64(500),
|
||||
MaxConnCountTCP: newu64(4),
|
||||
}),
|
||||
b: report.EmptyEdgeMetadatas.
|
||||
Add("hostQ|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
EgressByteCount: newu64(2),
|
||||
MaxConnCountTCP: newu64(6),
|
||||
}),
|
||||
want: report.EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(12),
|
||||
EgressByteCount: newu64(500),
|
||||
MaxConnCountTCP: newu64(4),
|
||||
}).
|
||||
Add("hostQ|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
EgressByteCount: newu64(2),
|
||||
MaxConnCountTCP: newu64(6),
|
||||
}),
|
||||
},
|
||||
"Edge merge": {
|
||||
a: report.EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(12),
|
||||
EgressByteCount: newu64(1000),
|
||||
MaxConnCountTCP: newu64(7),
|
||||
}),
|
||||
b: report.EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
IngressByteCount: newu64(123),
|
||||
EgressByteCount: newu64(2),
|
||||
MaxConnCountTCP: newu64(9),
|
||||
}),
|
||||
want: report.EmptyEdgeMetadatas.
|
||||
Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
|
||||
report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(13),
|
||||
IngressByteCount: newu64(123),
|
||||
EgressByteCount: newu64(1002),
|
||||
MaxConnCountTCP: newu64(9),
|
||||
}),
|
||||
},
|
||||
} {
|
||||
if have := c.a.Merge(c.b); !reflect.DeepEqual(c.want, have) {
|
||||
t.Errorf("%s:\n%s", name, test.Diff(c.want, have))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestFlattenEdgeMetadata(t *testing.T) {
|
||||
have := (report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(1),
|
||||
MaxConnCountTCP: newu64(2),
|
||||
}).Flatten(report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(4),
|
||||
EgressByteCount: newu64(8),
|
||||
MaxConnCountTCP: newu64(16),
|
||||
})
|
||||
want := report.EdgeMetadata{
|
||||
EgressPacketCount: newu64(1 + 4),
|
||||
EgressByteCount: newu64(8),
|
||||
MaxConnCountTCP: newu64(2 + 16), // flatten should sum MaxConnCountTCP
|
||||
}
|
||||
if !reflect.DeepEqual(want, have) {
|
||||
t.Error(test.Diff(want, have))
|
||||
}
|
||||
}
|
||||
|
||||
func TestMergeNodes(t *testing.T) {
|
||||
mtime.NowForce(time.Now())
|
||||
defer mtime.NowReset()
|
||||
@@ -275,5 +161,3 @@ func TestMergeNodes(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func newu64(value uint64) *uint64 { return &value }
|
||||
|
||||
@@ -7,6 +7,8 @@ import (
|
||||
"github.com/weaveworks/scope/report"
|
||||
)
|
||||
|
||||
func newu64(value uint64) *uint64 { return &value }
|
||||
|
||||
// Make sure we don't add a topology and miss it in the Topologies method.
|
||||
func TestReportTopologies(t *testing.T) {
|
||||
var (
|
||||
|
||||
Reference in New Issue
Block a user