mirror of
https://github.com/weaveworks/scope.git
synced 2026-08-19 04:16:21 +00:00
Merge pull request #3005 from weaveworks/move-rendercontext
refactor: move RenderContext where it belongs
This commit is contained in:
@@ -78,9 +78,15 @@ func (c *ControlInstance) CodecDecodeSelf(decoder *codec.Decoder) {
|
||||
}
|
||||
}
|
||||
|
||||
// RenderContext carries contextual data that is needed when rendering parts of the report.
|
||||
type RenderContext struct {
|
||||
report.Report
|
||||
MetricsGraphURL string
|
||||
}
|
||||
|
||||
// MakeNode transforms a renderable node to a detailed node. It uses
|
||||
// aggregate metadata, plus the set of origin node IDs, to produce tables.
|
||||
func MakeNode(topologyID string, rc report.RenderContext, ns report.Nodes, n report.Node) Node {
|
||||
func MakeNode(topologyID string, rc RenderContext, ns report.Nodes, n report.Node) Node {
|
||||
summary, _ := MakeNodeSummary(rc, n)
|
||||
return Node{
|
||||
NodeSummary: summary,
|
||||
@@ -181,7 +187,7 @@ var nodeSummaryGroupSpecs = []struct {
|
||||
},
|
||||
}
|
||||
|
||||
func children(rc report.RenderContext, n report.Node) []NodeSummaryGroup {
|
||||
func children(rc RenderContext, n report.Node) []NodeSummaryGroup {
|
||||
summaries := map[string][]NodeSummary{}
|
||||
n.Children.ForEach(func(child report.Node) {
|
||||
if child.ID == n.ID {
|
||||
|
||||
@@ -18,7 +18,7 @@ import (
|
||||
)
|
||||
|
||||
func child(t *testing.T, r render.Renderer, id string) detailed.NodeSummary {
|
||||
s, ok := detailed.MakeNodeSummary(report.RenderContext{Report: fixture.Report}, r.Render(fixture.Report).Nodes[id])
|
||||
s, ok := detailed.MakeNodeSummary(detailed.RenderContext{Report: fixture.Report}, r.Render(fixture.Report).Nodes[id])
|
||||
if !ok {
|
||||
t.Fatalf("Expected node %s to be summarizable, but wasn't", id)
|
||||
}
|
||||
@@ -32,7 +32,7 @@ func connectionID(nodeID string, addr string) string {
|
||||
func TestMakeDetailedHostNode(t *testing.T) {
|
||||
renderableNodes := render.HostRenderer.Render(fixture.Report).Nodes
|
||||
renderableNode := renderableNodes[fixture.ClientHostNodeID]
|
||||
have := detailed.MakeNode("hosts", report.RenderContext{Report: fixture.Report}, renderableNodes, renderableNode)
|
||||
have := detailed.MakeNode("hosts", detailed.RenderContext{Report: fixture.Report}, renderableNodes, renderableNode)
|
||||
|
||||
containerImageNodeSummary := child(t, render.ContainerImageRenderer, expected.ClientContainerImageNodeID)
|
||||
containerNodeSummary := child(t, render.ContainerRenderer, fixture.ClientContainerNodeID)
|
||||
@@ -185,7 +185,7 @@ func TestMakeDetailedContainerNode(t *testing.T) {
|
||||
if !ok {
|
||||
t.Fatalf("Node not found: %s", id)
|
||||
}
|
||||
have := detailed.MakeNode("containers", report.RenderContext{Report: fixture.Report}, renderableNodes, renderableNode)
|
||||
have := detailed.MakeNode("containers", detailed.RenderContext{Report: fixture.Report}, renderableNodes, renderableNode)
|
||||
|
||||
serverProcessNodeSummary := child(t, render.ProcessRenderer, fixture.ServerProcessNodeID)
|
||||
serverProcessNodeSummary.Linkable = true
|
||||
@@ -317,7 +317,7 @@ func TestMakeDetailedPodNode(t *testing.T) {
|
||||
if !ok {
|
||||
t.Fatalf("Node not found: %s", id)
|
||||
}
|
||||
have := detailed.MakeNode("pods", report.RenderContext{Report: fixture.Report}, renderableNodes, renderableNode)
|
||||
have := detailed.MakeNode("pods", detailed.RenderContext{Report: fixture.Report}, renderableNodes, renderableNode)
|
||||
|
||||
containerNodeSummary := child(t, render.ContainerWithImageNameRenderer, fixture.ServerContainerNodeID)
|
||||
serverProcessNodeSummary := child(t, render.ProcessRenderer, fixture.ServerProcessNodeID)
|
||||
|
||||
@@ -138,7 +138,7 @@ func MakeBasicNodeSummary(r report.Report, n report.Node) (BasicNodeSummary, boo
|
||||
}
|
||||
|
||||
// MakeNodeSummary summarizes a node, if possible.
|
||||
func MakeNodeSummary(rc report.RenderContext, n report.Node) (NodeSummary, bool) {
|
||||
func MakeNodeSummary(rc RenderContext, n report.Node) (NodeSummary, bool) {
|
||||
base, ok := MakeBasicNodeSummary(rc.Report, n)
|
||||
if !ok {
|
||||
return NodeSummary{}, false
|
||||
@@ -411,7 +411,7 @@ func (s nodeSummariesByID) Less(i, j int) bool { return s[i].ID < s[j].ID }
|
||||
type NodeSummaries map[string]NodeSummary
|
||||
|
||||
// Summaries converts RenderableNodes into a set of NodeSummaries
|
||||
func Summaries(rc report.RenderContext, rns report.Nodes) NodeSummaries {
|
||||
func Summaries(rc RenderContext, rns report.Nodes) NodeSummaries {
|
||||
|
||||
result := NodeSummaries{}
|
||||
for id, node := range rns {
|
||||
|
||||
@@ -21,7 +21,7 @@ import (
|
||||
func TestSummaries(t *testing.T) {
|
||||
{
|
||||
// Just a convenient source of some rendered nodes
|
||||
have := detailed.Summaries(report.RenderContext{Report: fixture.Report}, render.ProcessRenderer.Render(fixture.Report).Nodes)
|
||||
have := detailed.Summaries(detailed.RenderContext{Report: fixture.Report}, render.ProcessRenderer.Render(fixture.Report).Nodes)
|
||||
// The ids of the processes rendered above
|
||||
expectedIDs := []string{
|
||||
fixture.ClientProcess1NodeID,
|
||||
@@ -53,7 +53,7 @@ func TestSummaries(t *testing.T) {
|
||||
processNode.Metrics = processNode.Metrics.Copy()
|
||||
processNode.Metrics[process.CPUUsage] = metric
|
||||
input.Process.Nodes[fixture.ClientProcess1NodeID] = processNode
|
||||
have := detailed.Summaries(report.RenderContext{Report: input}, render.ProcessRenderer.Render(input).Nodes)
|
||||
have := detailed.Summaries(detailed.RenderContext{Report: input}, render.ProcessRenderer.Render(input).Nodes)
|
||||
|
||||
node, ok := have[fixture.ClientProcess1NodeID]
|
||||
if !ok {
|
||||
@@ -196,7 +196,7 @@ func TestMakeNodeSummary(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for _, testcase := range testcases {
|
||||
have, ok := detailed.MakeNodeSummary(report.RenderContext{Report: fixture.Report}, testcase.input)
|
||||
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
|
||||
@@ -228,7 +228,7 @@ func TestMakeNodeSummaryNoMetadata(t *testing.T) {
|
||||
report.Overlay: report.MakeOverlayNodeID("", "3e:ca:14:ca:12:5c"),
|
||||
processNameTopology: "/home/weave/scope",
|
||||
} {
|
||||
summary, b := detailed.MakeNodeSummary(report.RenderContext{}, report.MakeNode(id).WithTopology(topology))
|
||||
summary, b := detailed.MakeNodeSummary(detailed.RenderContext{}, report.MakeNode(id).WithTopology(topology))
|
||||
switch {
|
||||
case !b:
|
||||
t.Errorf("Node Summary missing for topology %s, id %s", topology, id)
|
||||
@@ -270,7 +270,7 @@ func TestNodeMetadata(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for _, input := range inputs {
|
||||
summary, _ := detailed.MakeNodeSummary(report.RenderContext{Report: fixture.Report}, input.node)
|
||||
summary, _ := detailed.MakeNodeSummary(detailed.RenderContext{Report: fixture.Report}, input.node)
|
||||
have := summary.Metadata
|
||||
if !reflect.DeepEqual(input.want, have) {
|
||||
t.Errorf("%s: %s", input.name, test.Diff(input.want, have))
|
||||
@@ -371,7 +371,7 @@ func TestNodeMetrics(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for _, input := range inputs {
|
||||
summary, _ := detailed.MakeNodeSummary(report.RenderContext{Report: fixture.Report}, input.node)
|
||||
summary, _ := detailed.MakeNodeSummary(detailed.RenderContext{Report: fixture.Report}, input.node)
|
||||
have := summary.Metrics
|
||||
if !reflect.DeepEqual(input.want, have) {
|
||||
t.Errorf("%s: %s", input.name, test.Diff(input.want, have))
|
||||
@@ -468,7 +468,7 @@ func TestNodeTables(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for _, input := range inputs {
|
||||
summary, _ := detailed.MakeNodeSummary(report.RenderContext{Report: input.rpt}, input.node)
|
||||
summary, _ := detailed.MakeNodeSummary(detailed.RenderContext{Report: input.rpt}, input.node)
|
||||
have := summary.Tables
|
||||
if !reflect.DeepEqual(input.want, have) {
|
||||
t.Errorf("%s: %s", input.name, test.Diff(input.want, have))
|
||||
|
||||
Reference in New Issue
Block a user