diff --git a/render/detailed/node.go b/render/detailed/node.go index 2dc246e47..ff15b5e86 100644 --- a/render/detailed/node.go +++ b/render/detailed/node.go @@ -1,6 +1,8 @@ package detailed import ( + "context" + "fmt" "sort" "github.com/ugorji/go/codec" @@ -9,6 +11,7 @@ import ( "github.com/weaveworks/scope/probe/docker" "github.com/weaveworks/scope/probe/kubernetes" "github.com/weaveworks/scope/probe/process" + "github.com/weaveworks/scope/render" "github.com/weaveworks/scope/report" ) @@ -101,6 +104,12 @@ func MakeNode(topologyID string, rc RenderContext, ns report.Nodes, n report.Nod } } +func MakeDetailedHostNode(ctx context.Context, rpt report.Report, id string) Node { + renderableNodes := render.HostRenderer.Render(ctx, rpt).Nodes + renderableNode := renderableNodes[id] + return MakeNode("hosts", RenderContext{Report: rpt}, renderableNodes, renderableNode) +} + func controlsFor(topology report.Topology, nodeID string) []ControlInstance { result := []ControlInstance{} node, ok := topology.Nodes[nodeID] @@ -223,6 +232,7 @@ var nodeSummaryGroupSpecs = []struct { func children(rc RenderContext, n report.Node) []NodeSummaryGroup { summaries := map[string][]NodeSummary{} + fmt.Printf("children: %v\n", n.ChildIDs) for _, childID := range n.ChildIDs { if childID == n.ID { continue diff --git a/render/detailed/node_test.go b/render/detailed/node_test.go index f666367b8..37a15ab88 100644 --- a/render/detailed/node_test.go +++ b/render/detailed/node_test.go @@ -30,9 +30,10 @@ func connectionID(nodeID string, addr string) string { } func TestMakeDetailedHostNode(t *testing.T) { - renderableNodes := render.HostRenderer.Render(context.Background(), fixture.Report).Nodes - renderableNode := renderableNodes[fixture.ClientHostNodeID] - have := detailed.MakeNode("hosts", detailed.RenderContext{Report: fixture.Report}, renderableNodes, renderableNode) + //renderableNodes := render.HostRenderer.Render(context.Background(), fixture.Report).Nodes + //renderableNode := renderableNodes[fixture.ClientHostNodeID] + //have := detailed.MakeNode("hosts", detailed.RenderContext{Report: fixture.Report}, renderableNodes, renderableNode) + have := detailed.MakeDetailedHostNode(context.Background(), fixture.Report, fixture.ClientHostNodeID) containerImageNodeSummary := child(t, render.ContainerImageRenderer, expected.ClientContainerImageNodeID) containerNodeSummary := child(t, render.ContainerRenderer, fixture.ClientContainerNodeID) diff --git a/render/detailed/summary.go b/render/detailed/summary.go index aa26ef046..0e3667a97 100644 --- a/render/detailed/summary.go +++ b/render/detailed/summary.go @@ -3,6 +3,7 @@ package detailed import ( "context" "fmt" + "runtime/debug" "strings" opentracing "github.com/opentracing/opentracing-go" @@ -128,6 +129,10 @@ func MakeBasicNodeSummary(r report.Report, n report.Node) (BasicNodeSummary, boo summary.Tag = t.Tag } + fmt.Printf("MakeBasicNodeSummary %s: %s\n", n.ID, n.Topology) + if n.Topology == "host" { + debug.PrintStack() + } // Do we have a renderer for the topology? if renderer, ok := renderers[n.Topology]; ok { if renderer == nil { // we don't want to render this @@ -437,6 +442,7 @@ func pluralize(n report.Node, key, singular, plural string) string { if !ok { c = n.CountChildrenOfTopology(key) } + fmt.Printf("pluralize: %d of %s in %s %v\n", c, key, n.ID, n.ChildIDs) if c == 1 { return fmt.Sprintf("%d %s", c, singular) } diff --git a/render/detailed/summary_test.go b/render/detailed/summary_test.go index 584279336..c77ee022d 100644 --- a/render/detailed/summary_test.go +++ b/render/detailed/summary_test.go @@ -195,15 +195,17 @@ func TestMakeNodeSummary(t *testing.T) { }, } for _, testcase := range testcases { - have, ok := detailed.MakeNodeSummary(detailed.RenderContext{Report: fixture.Report}, testcase.input) - if ok != testcase.ok { - t.Errorf("%s: MakeNodeSummary failed: expected ok value to be: %v", testcase.name, testcase.ok) - continue - } + t.Run(testcase.name, func(t *testing.T) { + have, ok := detailed.MakeNodeSummary(detailed.RenderContext{Report: fixture.Report}, testcase.input) + if ok != testcase.ok { + t.Errorf("%s: MakeNodeSummary failed: expected ok value to be: %v", testcase.name, testcase.ok) + return + } - if !reflect.DeepEqual(testcase.want, have) { - t.Errorf("%s: Node Summary did not match: %s", testcase.name, test.Diff(testcase.want, have)) - } + if !reflect.DeepEqual(testcase.want, have) { + t.Errorf("%s: Node Summary did not match: %s", testcase.name, test.Diff(testcase.want, have)) + } + }) } }