diff --git a/render/expected/expected.go b/render/expected/expected.go index 160d1309e..c0b0dd0dd 100644 --- a/render/expected/expected.go +++ b/render/expected/expected.go @@ -15,8 +15,8 @@ func Sterilize(r render.RenderableNodes) render.RenderableNodes { // state not sent to the client. So in the tests we ignore // this state. for id, n := range r { - n.NodeMetadata.Metadata = map[string]string{} - n.NodeMetadata.Counters = map[string]int{} + n.NodeMetadata.Metadata = report.Metadata{} + n.NodeMetadata.Counters = report.Counters{} n.NodeMetadata.Edges = report.EdgeMetadatas{} r[id] = n } diff --git a/render/mapping.go b/render/mapping.go index e1f14a975..7c13d82dd 100644 --- a/render/mapping.go +++ b/render/mapping.go @@ -28,8 +28,7 @@ const ( // MapFunc is anything which can take an arbitrary RenderableNode and // return a set of other RenderableNodes. // -// As with LeafMapFunc, if the output is empty, the node -// shall be omitted from the rendered topology. +// If the output is empty, the node shall be omitted from the rendered topology. type MapFunc func(RenderableNode, report.Networks) RenderableNodes // MapEndpointIdentity maps an endpoint topology node to a single endpoint @@ -51,7 +50,7 @@ func MapEndpointIdentity(m RenderableNode, local report.Networks) RenderableNode if !ok { // If the dstNodeAddr is not in a network local to this report, we emit an // internet node - if !local.Contains(net.ParseIP(addr)) { + if ip := net.ParseIP(addr); ip != nil && !local.Contains(ip) { return RenderableNodes{TheInternetID: newDerivedPseudoNode(TheInternetID, TheInternetMajor, m)} } diff --git a/render/mapping_test.go b/render/mapping_test.go index 77c50e3d3..8b337041c 100644 --- a/render/mapping_test.go +++ b/render/mapping_test.go @@ -12,7 +12,7 @@ import ( ) func nrn(nmd report.NodeMetadata) render.RenderableNode { - return render.NewRenderableNode("").WithNode(nmd) + return render.NewRenderableNode("").WithNodeMetadata(nmd) } func TestMapEndpointIdentity(t *testing.T) { diff --git a/render/render_test.go b/render/render_test.go index 2a1e2bd33..d3802c2d5 100644 --- a/render/render_test.go +++ b/render/render_test.go @@ -98,13 +98,13 @@ func TestMapRender3(t *testing.T) { return render.RenderableNodes{id: render.NewRenderableNode(id)} }, Renderer: mockRenderer{RenderableNodes: render.RenderableNodes{ - "foo": render.NewRenderableNode("foo").WithNode(report.MakeNodeMetadata().WithAdjacent("baz")), - "baz": render.NewRenderableNode("baz").WithNode(report.MakeNodeMetadata().WithAdjacent("foo")), + "foo": render.NewRenderableNode("foo").WithNodeMetadata(report.MakeNodeMetadata().WithAdjacent("baz")), + "baz": render.NewRenderableNode("baz").WithNodeMetadata(report.MakeNodeMetadata().WithAdjacent("foo")), }}, } want := render.RenderableNodes{ - "_foo": render.NewRenderableNode("_foo").WithNode(report.MakeNodeMetadata().WithAdjacent("_baz")), - "_baz": render.NewRenderableNode("_baz").WithNode(report.MakeNodeMetadata().WithAdjacent("_foo")), + "_foo": render.NewRenderableNode("_foo").WithNodeMetadata(report.MakeNodeMetadata().WithAdjacent("_baz")), + "_baz": render.NewRenderableNode("_baz").WithNodeMetadata(report.MakeNodeMetadata().WithAdjacent("_foo")), } have := mapper.Render(report.MakeReport()) if !reflect.DeepEqual(want, have) { diff --git a/render/renderable_node.go b/render/renderable_node.go index 1aa03b242..c95de26ad 100644 --- a/render/renderable_node.go +++ b/render/renderable_node.go @@ -74,10 +74,10 @@ func newDerivedPseudoNode(id, major string, node RenderableNode) RenderableNode } } -// WithNode creates a new RenderableNode bases on rn, with n -func (rn RenderableNode) WithNode(n report.NodeMetadata) RenderableNode { +// WithNodeMetadata creates a new RenderableNode based on rn, with n +func (rn RenderableNode) WithNodeMetadata(n report.NodeMetadata) RenderableNode { result := rn.Copy() - result.NodeMetadata = n + result.NodeMetadata = result.NodeMetadata.Merge(n) return result } diff --git a/render/selectors.go b/render/selectors.go index c86225ddb..b3866744c 100644 --- a/render/selectors.go +++ b/render/selectors.go @@ -33,7 +33,7 @@ func (t TopologySelector) EdgeMetadata(rpt report.Report, srcID, dstID string) r func MakeRenderableNodes(t report.Topology) RenderableNodes { result := RenderableNodes{} for id, nmd := range t.NodeMetadatas { - rn := NewRenderableNode(id).WithNode(nmd) + rn := NewRenderableNode(id).WithNodeMetadata(nmd) rn.Origins = report.MakeIDList(id) if hostNodeID, ok := nmd.Metadata[report.HostNodeID]; ok { rn.Origins = rn.Origins.Add(hostNodeID) diff --git a/report/topology.go b/report/topology.go index 8fc530d99..bf0691c65 100644 --- a/report/topology.go +++ b/report/topology.go @@ -148,7 +148,7 @@ func (n NodeMetadata) Merge(other NodeMetadata) NodeMetadata { cp.Metadata = cp.Metadata.Merge(other.Metadata) cp.Counters = cp.Counters.Merge(other.Counters) cp.Adjacency = cp.Adjacency.Merge(other.Adjacency) - cp.Edges = cp.Edges.Merge(n.Edges) + cp.Edges = cp.Edges.Merge(other.Edges) return cp }