mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-03 10:11:03 +00:00
Squash of: - use detailed.Summaries to render topology nodes - ban merging nodes of different topologies (they should be mapped) - need to prune parents when mapping node types - render container images by id if they have no name - remove separate render ids and prune parents in NewDerived* - don't render metrics/metadata for groups of nodes - fixing up tests - removing pending unit tests (for mapping.go, for now) - updating experimental dir for RenderableNode removal
97 lines
2.6 KiB
Go
97 lines
2.6 KiB
Go
package render_test
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/weaveworks/scope/render"
|
|
"github.com/weaveworks/scope/report"
|
|
"github.com/weaveworks/scope/test"
|
|
)
|
|
|
|
type mockRenderer struct {
|
|
report.Nodes
|
|
}
|
|
|
|
func (m mockRenderer) Render(rpt report.Report) report.Nodes { return m.Nodes }
|
|
func (m mockRenderer) Stats(rpt report.Report) render.Stats { return render.Stats{} }
|
|
|
|
func TestReduceRender(t *testing.T) {
|
|
renderer := render.Reduce([]render.Renderer{
|
|
mockRenderer{Nodes: report.Nodes{"foo": report.MakeNode().WithID("foo")}},
|
|
mockRenderer{Nodes: report.Nodes{"bar": report.MakeNode().WithID("bar")}},
|
|
})
|
|
|
|
want := report.Nodes{
|
|
"foo": report.MakeNode().WithID("foo"),
|
|
"bar": report.MakeNode().WithID("bar"),
|
|
}
|
|
have := renderer.Render(report.MakeReport())
|
|
if !reflect.DeepEqual(want, have) {
|
|
t.Errorf("want %+v, have %+v", want, have)
|
|
}
|
|
}
|
|
|
|
func TestMapRender1(t *testing.T) {
|
|
// 1. Check when we return false, the node gets filtered out
|
|
mapper := render.Map{
|
|
MapFunc: func(nodes report.Node, _ report.Networks) report.Nodes {
|
|
return report.Nodes{}
|
|
},
|
|
Renderer: mockRenderer{Nodes: report.Nodes{
|
|
"foo": report.MakeNode().WithID("foo"),
|
|
}},
|
|
}
|
|
want := report.Nodes{}
|
|
have := mapper.Render(report.MakeReport())
|
|
if !reflect.DeepEqual(want, have) {
|
|
t.Errorf("want %+v, have %+v", want, have)
|
|
}
|
|
}
|
|
|
|
func TestMapRender2(t *testing.T) {
|
|
// 2. Check we can remap two nodes into one
|
|
mapper := render.Map{
|
|
MapFunc: func(nodes report.Node, _ report.Networks) report.Nodes {
|
|
return report.Nodes{
|
|
"bar": report.MakeNode().WithID("bar"),
|
|
}
|
|
},
|
|
Renderer: mockRenderer{Nodes: report.Nodes{
|
|
"foo": report.MakeNode().WithID("foo"),
|
|
"baz": report.MakeNode().WithID("baz"),
|
|
}},
|
|
}
|
|
want := report.Nodes{
|
|
"bar": report.MakeNode().WithID("bar"),
|
|
}
|
|
have := mapper.Render(report.MakeReport())
|
|
if !reflect.DeepEqual(want, have) {
|
|
t.Error(test.Diff(want, have))
|
|
}
|
|
}
|
|
|
|
func TestMapRender3(t *testing.T) {
|
|
// 3. Check we can remap adjacencies
|
|
mapper := render.Map{
|
|
MapFunc: func(nodes report.Node, _ report.Networks) report.Nodes {
|
|
id := "_" + nodes.ID
|
|
return report.Nodes{id: report.MakeNode().WithID(id)}
|
|
},
|
|
Renderer: mockRenderer{Nodes: report.Nodes{
|
|
"foo": report.MakeNode().WithID("foo").WithAdjacent("baz"),
|
|
"baz": report.MakeNode().WithID("baz").WithAdjacent("foo"),
|
|
}},
|
|
}
|
|
want := report.Nodes{
|
|
"_foo": report.MakeNode().WithID("_foo").WithAdjacent("_baz"),
|
|
"_baz": report.MakeNode().WithID("_baz").WithAdjacent("_foo"),
|
|
}
|
|
have := mapper.Render(report.MakeReport())
|
|
if !reflect.DeepEqual(want, have) {
|
|
t.Error(test.Diff(want, have))
|
|
}
|
|
}
|
|
|
|
func newu64(value uint64) *uint64 { return &value }
|