mirror of
https://github.com/weaveworks/scope.git
synced 2026-05-06 01:08:03 +00:00
We eliminate the custom parent renderer, which was a very partial implementation MakeBasicNodeSummary. We also ensure that parents are always rendered in the same, sensible order. Previously the order was an alphabetic sort of the parent topology IDs. Now lower level topologies come before higher level topologies.
66 lines
2.0 KiB
Go
66 lines
2.0 KiB
Go
package detailed_test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/weaveworks/common/test"
|
|
"github.com/weaveworks/scope/render"
|
|
"github.com/weaveworks/scope/render/detailed"
|
|
"github.com/weaveworks/scope/render/expected"
|
|
"github.com/weaveworks/scope/report"
|
|
"github.com/weaveworks/scope/test/fixture"
|
|
"github.com/weaveworks/scope/test/reflect"
|
|
)
|
|
|
|
func TestParents(t *testing.T) {
|
|
for _, c := range []struct {
|
|
name string
|
|
node report.Node
|
|
want []detailed.Parent
|
|
}{
|
|
{
|
|
name: "Node accidentally tagged with itself",
|
|
node: render.HostRenderer.Render(fixture.Report).Nodes[fixture.ClientHostNodeID].WithParents(
|
|
report.MakeSets().Add(report.Host, report.MakeStringSet(fixture.ClientHostNodeID)),
|
|
),
|
|
want: nil,
|
|
},
|
|
{
|
|
node: render.HostRenderer.Render(fixture.Report).Nodes[fixture.ClientHostNodeID],
|
|
want: nil,
|
|
},
|
|
{
|
|
name: "Container image",
|
|
node: render.ContainerImageRenderer.Render(fixture.Report).Nodes[expected.ClientContainerImageNodeID],
|
|
want: []detailed.Parent{
|
|
{ID: fixture.ClientHostNodeID, Label: "client", TopologyID: "hosts"},
|
|
},
|
|
},
|
|
{
|
|
name: "Container",
|
|
node: render.ContainerWithImageNameRenderer.Render(fixture.Report).Nodes[fixture.ClientContainerNodeID],
|
|
want: []detailed.Parent{
|
|
{ID: expected.ClientContainerImageNodeID, Label: fixture.ClientContainerImageName, TopologyID: "containers-by-image"},
|
|
{ID: fixture.ClientPodNodeID, Label: "pong-a", TopologyID: "pods"},
|
|
{ID: fixture.ClientHostNodeID, Label: "client", TopologyID: "hosts"},
|
|
},
|
|
},
|
|
{
|
|
node: render.ProcessRenderer.Render(fixture.Report).Nodes[fixture.ClientProcess1NodeID],
|
|
want: []detailed.Parent{
|
|
{ID: fixture.ClientContainerNodeID, Label: fixture.ClientContainerName, TopologyID: "containers"},
|
|
{ID: fixture.ClientHostNodeID, Label: "client", TopologyID: "hosts"},
|
|
},
|
|
},
|
|
} {
|
|
name := c.name
|
|
if name == "" {
|
|
name = fmt.Sprintf("Node %q", c.node.ID)
|
|
}
|
|
if have := detailed.Parents(fixture.Report, c.node); !reflect.DeepEqual(c.want, have) {
|
|
t.Errorf("%s: %s", name, test.Diff(c.want, have))
|
|
}
|
|
}
|
|
}
|