mirror of
https://github.com/weaveworks/scope.git
synced 2026-08-18 11:56:39 +00:00
render: fixes for new merge semantics
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
|
||||
"github.com/weaveworks/scope/render"
|
||||
"github.com/weaveworks/scope/report"
|
||||
"github.com/weaveworks/scope/test"
|
||||
)
|
||||
|
||||
func TestMergeRenderableNodes(t *testing.T) {
|
||||
@@ -17,19 +18,45 @@ func TestMergeRenderableNodes(t *testing.T) {
|
||||
"bar": render.RenderableNode{ID: "bar"},
|
||||
"baz": render.RenderableNode{ID: "baz"},
|
||||
}
|
||||
|
||||
want := render.RenderableNodes{
|
||||
want := sterilize(render.RenderableNodes{
|
||||
"foo": render.RenderableNode{ID: "foo"},
|
||||
"bar": render.RenderableNode{ID: "bar"},
|
||||
"baz": render.RenderableNode{ID: "baz"},
|
||||
}
|
||||
}, false)
|
||||
nodes1.Merge(nodes2)
|
||||
|
||||
if !reflect.DeepEqual(want, nodes1) {
|
||||
t.Errorf("want %+v, have %+v", want, nodes1)
|
||||
if have := sterilize(nodes1, false); !reflect.DeepEqual(want, have) {
|
||||
t.Error(test.Diff(want, have))
|
||||
}
|
||||
}
|
||||
|
||||
func sterilize(r render.RenderableNodes, destructive bool) render.RenderableNodes {
|
||||
// Since introducing new map fields to the report.NodeMetadata type, its
|
||||
// zero value is •not valid• -- every time you need one, you need to use
|
||||
// the report.MakeNodeMetadata constructor. (Similarly, but not exactly
|
||||
// the same, is that a zero-value Adjacency is not the same as a created
|
||||
// but empty Adjacency.)
|
||||
//
|
||||
// But we're not doing this in tests. So this function sterilizes invalid
|
||||
// RenderableNodes by fixing all nil Metadata fields. The proper fix
|
||||
// involves lots of annoying changes to instantiation.
|
||||
//
|
||||
// The extra destructive parameter is to support a historical test use
|
||||
// case where we explicitly don't compare node metadata.
|
||||
for id, n := range r {
|
||||
if n.Adjacency == nil {
|
||||
n.Adjacency = report.IDList{}
|
||||
}
|
||||
if destructive || n.NodeMetadata.Metadata == nil {
|
||||
n.NodeMetadata.Metadata = map[string]string{}
|
||||
}
|
||||
if destructive || n.NodeMetadata.Counters == nil {
|
||||
n.NodeMetadata.Counters = map[string]int{}
|
||||
}
|
||||
r[id] = n
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func TestMergeRenderableNode(t *testing.T) {
|
||||
node1 := render.RenderableNode{
|
||||
ID: "foo",
|
||||
@@ -49,19 +76,19 @@ func TestMergeRenderableNode(t *testing.T) {
|
||||
Adjacency: report.MakeIDList("a2"),
|
||||
Origins: report.MakeIDList("o2"),
|
||||
}
|
||||
|
||||
want := render.RenderableNode{
|
||||
ID: "foo",
|
||||
LabelMajor: "major",
|
||||
LabelMinor: "minor",
|
||||
Rank: "rank",
|
||||
Pseudo: false,
|
||||
Adjacency: report.MakeIDList("a1", "a2"),
|
||||
Origins: report.MakeIDList("o1", "o2"),
|
||||
ID: "foo",
|
||||
LabelMajor: "major",
|
||||
LabelMinor: "minor",
|
||||
Rank: "rank",
|
||||
Pseudo: false,
|
||||
Adjacency: report.MakeIDList("a1", "a2"),
|
||||
Origins: report.MakeIDList("o1", "o2"),
|
||||
NodeMetadata: report.MakeNodeMetadata(),
|
||||
EdgeMetadata: report.EdgeMetadata{},
|
||||
}
|
||||
node1.Merge(node2)
|
||||
|
||||
if !reflect.DeepEqual(want, node1) {
|
||||
t.Errorf("want %+v, have %+v", want, node1)
|
||||
if have := node1; !reflect.DeepEqual(want, have) {
|
||||
t.Error(test.Diff(want, have))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user