mirror of
https://github.com/weaveworks/scope.git
synced 2026-02-14 18:09:59 +00:00
164 lines
3.5 KiB
Go
164 lines
3.5 KiB
Go
package report_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/weaveworks/scope/common/mtime"
|
|
"github.com/weaveworks/scope/report"
|
|
"github.com/weaveworks/scope/test"
|
|
"github.com/weaveworks/scope/test/reflect"
|
|
)
|
|
|
|
const (
|
|
PID = "pid"
|
|
Name = "name"
|
|
Domain = "domain"
|
|
)
|
|
|
|
func TestMergeNodes(t *testing.T) {
|
|
mtime.NowForce(time.Now())
|
|
defer mtime.NowReset()
|
|
|
|
for name, c := range map[string]struct {
|
|
a, b, want report.Nodes
|
|
}{
|
|
"Empty a": {
|
|
a: report.Nodes{},
|
|
b: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "23128",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
want: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "23128",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
},
|
|
"Empty b": {
|
|
a: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "23128",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
b: report.Nodes{},
|
|
want: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "23128",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
},
|
|
"Simple merge": {
|
|
a: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "23128",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
b: report.Nodes{
|
|
":192.168.1.2:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "42",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
want: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "23128",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
":192.168.1.2:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "42",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
},
|
|
"Merge conflict with rank difference": {
|
|
a: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "23128",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
b: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{ // <-- same ID
|
|
PID: "0",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
want: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "23128",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
},
|
|
"Merge conflict with no rank difference": {
|
|
a: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "23128",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
b: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{ // <-- same ID
|
|
PID: "0",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
want: report.Nodes{
|
|
":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
|
|
PID: "23128",
|
|
Name: "curl",
|
|
Domain: "node-a.local",
|
|
}),
|
|
},
|
|
},
|
|
"Counters": {
|
|
a: report.Nodes{
|
|
"1": report.MakeNode().WithCounters(map[string]int{
|
|
"a": 13,
|
|
"b": 57,
|
|
"c": 89,
|
|
}),
|
|
},
|
|
b: report.Nodes{
|
|
"1": report.MakeNode().WithCounters(map[string]int{
|
|
"a": 78,
|
|
"b": 3,
|
|
"d": 47,
|
|
}),
|
|
},
|
|
want: report.Nodes{
|
|
"1": report.MakeNode().WithCounters(map[string]int{
|
|
"a": 91,
|
|
"b": 60,
|
|
"c": 89,
|
|
"d": 47,
|
|
}),
|
|
},
|
|
},
|
|
} {
|
|
if have := c.a.Merge(c.b); !reflect.DeepEqual(c.want, have) {
|
|
t.Errorf("%s: %s", name, test.Diff(c.want, have))
|
|
}
|
|
}
|
|
}
|