func child(t *testing.T, r render.Renderer, id string) detailed.NodeSummary { s, ok := detailed.MakeNodeSummary(fixture.Report, r.Render(fixture.Report, render.FilterNoop)[id]) if !ok { t.Fatalf("Expected node %s to be summarizable, but wasn't", id) } return s.SummarizeMetrics() }
func TestMakeNodeSummary(t *testing.T) { testcases := []struct { name string input report.Node ok bool want detailed.NodeSummary }{ { name: "single process rendering", input: expected.RenderedProcesses[fixture.ClientProcess1NodeID], ok: true, want: detailed.NodeSummary{ ID: fixture.ClientProcess1NodeID, Label: fixture.Client1Name, LabelMinor: "client.hostname.com (10001)", Rank: fixture.Client1Name, Shape: "square", Metadata: []report.MetadataRow{ {ID: process.PID, Label: "PID", Value: fixture.Client1PID, Priority: 1, Datatype: "number"}, }, Adjacency: report.MakeIDList(fixture.ServerProcessNodeID), }, }, { name: "single container rendering", input: expected.RenderedContainers[fixture.ClientContainerNodeID], ok: true, want: detailed.NodeSummary{ ID: fixture.ClientContainerNodeID, Label: fixture.ClientContainerName, LabelMinor: fixture.ClientHostName, Rank: fixture.ClientContainerImageName, Shape: "hexagon", Linkable: true, Metadata: []report.MetadataRow{ {ID: docker.ContainerID, Label: "ID", Value: fixture.ClientContainerID, Priority: 1}, }, Adjacency: report.MakeIDList(fixture.ServerContainerNodeID), }, }, { name: "single container image rendering", input: expected.RenderedContainerImages[fixture.ClientContainerImageNodeID], ok: true, want: detailed.NodeSummary{ ID: fixture.ClientContainerImageNodeID, Label: fixture.ClientContainerImageName, LabelMinor: "1 container", Rank: fixture.ClientContainerImageName, Shape: "hexagon", Linkable: true, Stack: true, Metadata: []report.MetadataRow{ {ID: docker.ImageID, Label: "Image ID", Value: fixture.ClientContainerImageID, Priority: 1}, {ID: report.Container, Label: "# Containers", Value: "1", Priority: 2, Datatype: "number"}, }, Adjacency: report.MakeIDList(fixture.ServerContainerImageNodeID), }, }, { name: "single host rendering", input: expected.RenderedHosts[fixture.ClientHostNodeID], ok: true, want: detailed.NodeSummary{ ID: fixture.ClientHostNodeID, Label: "client", LabelMinor: "hostname.com", Rank: "hostname.com", Shape: "circle", Linkable: true, Metadata: []report.MetadataRow{ {ID: host.HostName, Label: "Hostname", Value: fixture.ClientHostName, Priority: 11}, }, Adjacency: report.MakeIDList(fixture.ServerHostNodeID), }, }, { name: "group node rendering", input: expected.RenderedProcessNames[fixture.ServerName], ok: true, want: detailed.NodeSummary{ ID: "apache", Label: "apache", LabelMinor: "1 process", Rank: "apache", Shape: "square", Stack: true, Linkable: true, }, }, } for _, testcase := range testcases { have, ok := detailed.MakeNodeSummary(fixture.Report, testcase.input) if ok != testcase.ok { t.Errorf("%s: MakeNodeSummary failed: expected ok value to be: %v", testcase.name, testcase.ok) continue } if !reflect.DeepEqual(testcase.want, have) { t.Errorf("%s: Node Summary did not match: %s", testcase.name, test.Diff(testcase.want, have)) } } }