Review feedback II

This commit is contained in:
Tom Wilkie
2016-03-04 14:07:56 +00:00
parent 7d0b1cec61
commit 51fa8d8ce0
6 changed files with 109 additions and 294 deletions
-34
View File
@@ -261,40 +261,6 @@ func TestMakeDetailedContainerNode(t *testing.T) {
},
},
},
{
ID: "pseudo:10.10.10.10:192.168.1.1:80",
Label: "10.10.10.10",
Linkable: true,
Metadata: []detailed.MetadataRow{
{
ID: "port",
Value: "80",
Datatype: "number",
},
{
ID: "count",
Value: "2",
Datatype: "number",
},
},
},
{
ID: "pseudo:10.10.10.11:192.168.1.1:80",
Label: "10.10.10.11",
Linkable: true,
Metadata: []detailed.MetadataRow{
{
ID: "port",
Value: "80",
Datatype: "number",
},
{
ID: "count",
Value: "1",
Datatype: "number",
},
},
},
},
},
{
+58 -171
View File
@@ -2,7 +2,6 @@ package expected
import (
"fmt"
"net"
"github.com/weaveworks/scope/render"
"github.com/weaveworks/scope/report"
@@ -27,7 +26,7 @@ var (
NonContainerEndpointID = render.MakeEndpointID(fixture.ServerHostID, fixture.ServerIP, fixture.NonContainerClientPort)
GoogleEndpointID = render.MakeEndpointID("", fixture.GoogleIP, fixture.GooglePort)
RemappedEndpoints = (render.RenderableNodes{
RenderedEndpoints = (render.RenderableNodes{
Client54001EndpointID: {
ID: Client54001EndpointID,
Shape: circle,
@@ -104,12 +103,12 @@ var (
},
}).Prune()
Client54001PseudoEndpointID = render.MakePseudoEndpointID(fixture.ClientHostID, fixture.ClientIP, fixture.ClientPort54001)
Client54002PseudoEndpointID = render.MakePseudoEndpointID(fixture.ClientHostID, fixture.ClientIP, fixture.ClientPort54002)
ServerPseudoEndpointID = render.MakePseudoEndpointID(fixture.ServerHostID, fixture.ServerIP, fixture.ServerPort)
NonContainerPseudoEndpointID = render.MakePseudoEndpointID(fixture.ServerHostID, fixture.ServerIP, fixture.NonContainerClientPort)
unknownPseudoNode1ID = render.MakePseudoNodeID(fixture.UnknownClient1IP, fixture.ServerIP, fixture.ServerPort)
unknownPseudoNode2ID = render.MakePseudoNodeID(fixture.UnknownClient3IP, fixture.ServerIP, fixture.ServerPort)
ClientProcess1ID = render.MakeProcessID(fixture.ClientHostID, fixture.Client1PID)
ClientProcess2ID = render.MakeProcessID(fixture.ClientHostID, fixture.Client2PID)
ServerProcessID = render.MakeProcessID(fixture.ServerHostID, fixture.ServerPID)
nonContainerProcessID = render.MakeProcessID(fixture.ServerHostID, fixture.NonContainerPID)
unknownPseudoNode1ID = render.MakePseudoNodeID(fixture.UnknownClient1IP, fixture.ServerIP, fixture.ServerPort)
unknownPseudoNode2ID = render.MakePseudoNodeID(fixture.UnknownClient3IP, fixture.ServerIP, fixture.ServerPort)
unknownPseudoNode1 = func(adjacent string) render.RenderableNode {
return render.RenderableNode{
@@ -119,8 +118,8 @@ var (
Shape: circle,
Node: report.MakeNode().WithAdjacent(adjacent),
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[UnknownClient1EndpointID],
RemappedEndpoints[UnknownClient2EndpointID],
RenderedEndpoints[UnknownClient1EndpointID],
RenderedEndpoints[UnknownClient2EndpointID],
),
EdgeMetadata: report.EdgeMetadata{
EgressPacketCount: newu64(70),
@@ -136,7 +135,7 @@ var (
Shape: circle,
Node: report.MakeNode().WithAdjacent(adjacent),
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[UnknownClient3EndpointID],
RenderedEndpoints[UnknownClient3EndpointID],
),
EdgeMetadata: report.EdgeMetadata{
EgressPacketCount: newu64(50),
@@ -153,7 +152,7 @@ var (
Shape: cloud,
Node: report.MakeNode().WithAdjacent(adjacent),
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[RandomClientEndpointID],
RenderedEndpoints[RandomClientEndpointID],
),
EdgeMetadata: report.EdgeMetadata{
EgressPacketCount: newu64(60),
@@ -170,86 +169,20 @@ var (
Node: report.MakeNode(),
EdgeMetadata: report.EdgeMetadata{},
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[GoogleEndpointID],
RenderedEndpoints[GoogleEndpointID],
),
}
RenderedEndpoints = (render.RenderableNodes{
Client54001PseudoEndpointID: {
ID: Client54001PseudoEndpointID,
LabelMajor: net.JoinHostPort(fixture.ClientIP, fixture.ClientPort54001),
LabelMinor: fmt.Sprintf("%s (%s)", fixture.ClientHostID, fixture.Client1PID),
Shape: circle,
Node: report.MakeNode().WithAdjacent(ServerPseudoEndpointID),
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[Client54001EndpointID],
),
EdgeMetadata: report.EdgeMetadata{
EgressPacketCount: newu64(10),
EgressByteCount: newu64(100),
},
},
Client54002PseudoEndpointID: {
ID: Client54002PseudoEndpointID,
LabelMajor: net.JoinHostPort(fixture.ClientIP, fixture.ClientPort54002),
LabelMinor: fmt.Sprintf("%s (%s)", fixture.ClientHostID, fixture.Client2PID),
Shape: circle,
Node: report.MakeNode().WithAdjacent(ServerPseudoEndpointID),
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[Client54002EndpointID],
),
EdgeMetadata: report.EdgeMetadata{
EgressPacketCount: newu64(20),
EgressByteCount: newu64(200),
},
},
ServerPseudoEndpointID: {
ID: ServerPseudoEndpointID,
LabelMajor: net.JoinHostPort(fixture.ServerIP, fixture.ServerPort),
LabelMinor: fmt.Sprintf("%s (%s)", fixture.ServerHostID, fixture.ServerPID),
Shape: circle,
Node: report.MakeNode(),
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[ServerEndpointID],
),
EdgeMetadata: report.EdgeMetadata{
IngressPacketCount: newu64(210),
IngressByteCount: newu64(2100),
},
},
NonContainerPseudoEndpointID: {
ID: NonContainerPseudoEndpointID,
LabelMajor: net.JoinHostPort(fixture.ServerIP, fixture.NonContainerClientPort),
LabelMinor: fmt.Sprintf("%s (%s)", fixture.ServerHostID, fixture.NonContainerPID),
Shape: circle,
Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID),
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[NonContainerEndpointID],
),
},
unknownPseudoNode1ID: unknownPseudoNode1(ServerPseudoEndpointID),
unknownPseudoNode2ID: unknownPseudoNode2(ServerPseudoEndpointID),
render.IncomingInternetID: theIncomingInternetNode(ServerPseudoEndpointID),
render.OutgoingInternetID: theOutgoingInternetNode,
}).Prune()
ClientProcess1ID = render.MakeProcessID(fixture.ClientHostID, fixture.Client1PID)
ClientProcess2ID = render.MakeProcessID(fixture.ClientHostID, fixture.Client2PID)
ServerProcessID = render.MakeProcessID(fixture.ServerHostID, fixture.ServerPID)
nonContainerProcessID = render.MakeProcessID(fixture.ServerHostID, fixture.NonContainerPID)
RenderedProcesses = (render.RenderableNodes{
ClientProcess1ID: {
ID: ClientProcess1ID,
LabelMajor: fixture.Client1Name,
LabelMinor: fmt.Sprintf("%s (%s)", fixture.ClientHostID, fixture.Client1PID),
Rank: fixture.Client1Name,
Pseudo: false,
Shape: square,
Node: report.MakeNode().WithAdjacent(ServerProcessID),
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[Client54001EndpointID],
RenderedEndpoints[Client54001PseudoEndpointID],
RenderedEndpoints[Client54001EndpointID],
),
EdgeMetadata: report.EdgeMetadata{
EgressPacketCount: newu64(10),
@@ -261,12 +194,10 @@ var (
LabelMajor: fixture.Client2Name,
LabelMinor: fmt.Sprintf("%s (%s)", fixture.ClientHostID, fixture.Client2PID),
Rank: fixture.Client2Name,
Pseudo: false,
Shape: square,
Node: report.MakeNode().WithAdjacent(ServerProcessID),
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[Client54002EndpointID],
RenderedEndpoints[Client54002PseudoEndpointID],
RenderedEndpoints[Client54002EndpointID],
),
EdgeMetadata: report.EdgeMetadata{
EgressPacketCount: newu64(20),
@@ -278,12 +209,10 @@ var (
LabelMajor: fixture.ServerName,
LabelMinor: fmt.Sprintf("%s (%s)", fixture.ServerHostID, fixture.ServerPID),
Rank: fixture.ServerName,
Pseudo: false,
Shape: square,
Node: report.MakeNode(),
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[ServerEndpointID],
RenderedEndpoints[ServerPseudoEndpointID],
RenderedEndpoints[ServerEndpointID],
),
EdgeMetadata: report.EdgeMetadata{
IngressPacketCount: newu64(210),
@@ -295,12 +224,10 @@ var (
LabelMajor: fixture.NonContainerName,
LabelMinor: fmt.Sprintf("%s (%s)", fixture.ServerHostID, fixture.NonContainerPID),
Rank: fixture.NonContainerName,
Pseudo: false,
Shape: square,
Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID),
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[NonContainerEndpointID],
RenderedEndpoints[NonContainerPseudoEndpointID],
RenderedEndpoints[NonContainerEndpointID],
),
EdgeMetadata: report.EdgeMetadata{},
},
@@ -316,14 +243,11 @@ var (
LabelMajor: fixture.Client1Name,
LabelMinor: "2 processes",
Rank: fixture.Client1Name,
Pseudo: false,
Shape: square,
Stack: true,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[Client54001EndpointID],
RemappedEndpoints[Client54002EndpointID],
RenderedEndpoints[Client54001PseudoEndpointID],
RenderedEndpoints[Client54002PseudoEndpointID],
RenderedEndpoints[Client54001EndpointID],
RenderedEndpoints[Client54002EndpointID],
RenderedProcesses[ClientProcess1ID],
RenderedProcesses[ClientProcess2ID],
),
@@ -338,12 +262,10 @@ var (
LabelMajor: fixture.ServerName,
LabelMinor: "1 process",
Rank: fixture.ServerName,
Pseudo: false,
Shape: square,
Stack: true,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[ServerEndpointID],
RenderedEndpoints[ServerPseudoEndpointID],
RenderedEndpoints[ServerEndpointID],
RenderedProcesses[ServerProcessID],
),
Node: report.MakeNode(),
@@ -357,12 +279,10 @@ var (
LabelMajor: fixture.NonContainerName,
LabelMinor: "1 process",
Rank: fixture.NonContainerName,
Pseudo: false,
Shape: square,
Stack: true,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[NonContainerEndpointID],
RenderedEndpoints[NonContainerPseudoEndpointID],
RenderedEndpoints[NonContainerEndpointID],
RenderedProcesses[nonContainerProcessID],
),
Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID),
@@ -383,13 +303,10 @@ var (
ID: ClientContainerID,
LabelMajor: "client",
LabelMinor: fixture.ClientHostName,
Pseudo: false,
Shape: hexagon,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[Client54001EndpointID],
RemappedEndpoints[Client54002EndpointID],
RenderedEndpoints[Client54001PseudoEndpointID],
RenderedEndpoints[Client54002PseudoEndpointID],
RenderedEndpoints[Client54001EndpointID],
RenderedEndpoints[Client54002EndpointID],
RenderedProcesses[ClientProcess1ID],
RenderedProcesses[ClientProcess2ID],
),
@@ -404,11 +321,9 @@ var (
ID: ServerContainerID,
LabelMajor: "server",
LabelMinor: fixture.ServerHostName,
Pseudo: false,
Shape: hexagon,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[ServerEndpointID],
RenderedEndpoints[ServerPseudoEndpointID],
RenderedEndpoints[ServerEndpointID],
RenderedProcesses[ServerProcessID],
),
Node: report.MakeNode(),
@@ -422,19 +337,18 @@ var (
ID: uncontainedServerID,
LabelMajor: render.UncontainedMajor,
LabelMinor: fixture.ServerHostName,
Pseudo: true,
Shape: square,
Stack: true,
Pseudo: true,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[NonContainerEndpointID],
RenderedEndpoints[NonContainerPseudoEndpointID],
RenderedEndpoints[NonContainerEndpointID],
RenderedProcesses[nonContainerProcessID],
),
Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID),
EdgeMetadata: report.EdgeMetadata{},
},
unknownPseudoNode1ID: unknownPseudoNode1(ServerContainerID),
unknownPseudoNode2ID: unknownPseudoNode2(ServerContainerID),
// unknownPseudoNode1ID: unknownPseudoNode1(ServerContainerID),
// unknownPseudoNode2ID: unknownPseudoNode2(ServerContainerID),
render.IncomingInternetID: theIncomingInternetNode(ServerContainerID),
render.OutgoingInternetID: theOutgoingInternetNode,
}).Prune()
@@ -448,14 +362,11 @@ var (
LabelMajor: fixture.ClientContainerImageName,
LabelMinor: "1 container",
Rank: fixture.ClientContainerImageName,
Pseudo: false,
Shape: hexagon,
Stack: true,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[Client54001EndpointID],
RemappedEndpoints[Client54002EndpointID],
RenderedEndpoints[Client54001PseudoEndpointID],
RenderedEndpoints[Client54002PseudoEndpointID],
RenderedEndpoints[Client54001EndpointID],
RenderedEndpoints[Client54002EndpointID],
RenderedProcesses[ClientProcess1ID],
RenderedProcesses[ClientProcess2ID],
RenderedContainers[ClientContainerID],
@@ -471,12 +382,10 @@ var (
LabelMajor: fixture.ServerContainerImageName,
LabelMinor: "1 container",
Rank: fixture.ServerContainerImageName,
Pseudo: false,
Shape: hexagon,
Stack: true,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[ServerEndpointID],
RenderedEndpoints[ServerPseudoEndpointID],
RenderedEndpoints[ServerEndpointID],
RenderedProcesses[ServerProcessID],
RenderedContainers[ServerContainerID],
),
@@ -490,19 +399,18 @@ var (
ID: uncontainedServerID,
LabelMajor: render.UncontainedMajor,
LabelMinor: fixture.ServerHostName,
Pseudo: true,
Shape: square,
Stack: true,
Pseudo: true,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[NonContainerEndpointID],
RenderedEndpoints[NonContainerPseudoEndpointID],
RenderedEndpoints[NonContainerEndpointID],
RenderedProcesses[nonContainerProcessID],
),
Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID),
EdgeMetadata: report.EdgeMetadata{},
},
unknownPseudoNode1ID: unknownPseudoNode1(ServerContainerImageID),
unknownPseudoNode2ID: unknownPseudoNode2(ServerContainerImageID),
// unknownPseudoNode1ID: unknownPseudoNode1(ServerContainerImageID),
// unknownPseudoNode2ID: unknownPseudoNode2(ServerContainerImageID),
render.IncomingInternetID: theIncomingInternetNode(ServerContainerImageID),
render.OutgoingInternetID: theOutgoingInternetNode,
}).Prune()
@@ -563,22 +471,14 @@ var (
LabelMajor: "client", // before first .
LabelMinor: "hostname.com", // after first .
Rank: "hostname.com",
Pseudo: false,
Shape: circle,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[Client54001EndpointID],
RemappedEndpoints[Client54002EndpointID],
RenderedEndpoints[Client54001PseudoEndpointID],
RenderedEndpoints[Client54002PseudoEndpointID],
RenderedEndpoints[Client54001EndpointID],
RenderedEndpoints[Client54002EndpointID],
RenderedProcesses[ClientProcess1ID],
RenderedProcesses[ClientProcess2ID],
RenderedContainers[ClientContainerID],
RenderedContainerImages[ClientContainerImageID],
RenderedAddresses[ClientAddressID],
),
Node: report.MakeNode().WithAdjacent(ServerHostID),
@@ -592,11 +492,9 @@ var (
LabelMajor: "server", // before first .
LabelMinor: "hostname.com", // after first .
Rank: "hostname.com",
Pseudo: false,
Shape: circle,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[ServerEndpointID],
RenderedEndpoints[ServerPseudoEndpointID],
RenderedEndpoints[ServerEndpointID],
RenderedProcesses[ServerProcessID],
RenderedContainers[ServerContainerID],
@@ -604,9 +502,10 @@ var (
RenderedAddresses[ServerAddressID],
// RemappedEndpoints[NonContainerEndpointID],
// RenderedEndpoints[NonContainerPseudoEndpointID],
// RenderedProcesses[nonContainerProcessID],
// See #1102
// RemappedEndpoints[NonContainerEndpointID],
// RenderedEndpoints[NonContainerPseudoEndpointID],
// RenderedProcesses[nonContainerProcessID],
),
Node: report.MakeNode(),
EdgeMetadata: report.EdgeMetadata{
@@ -623,9 +522,8 @@ var (
Node: report.MakeNode().WithAdjacent(ServerHostID),
EdgeMetadata: report.EdgeMetadata{},
Children: render.MakeRenderableNodeSet(
//TODO
//RenderedEndpoints[unknownPseudoNode2ID],
//RenderedAddresses[unknownPseudoAddress1ID],
// RenderedEndpoints[unknownPseudoNode2ID],
// RenderedAddresses[unknownPseudoAddress1ID],
),
},
pseudoHostID2: {
@@ -636,8 +534,8 @@ var (
Node: report.MakeNode().WithAdjacent(ServerHostID),
EdgeMetadata: report.EdgeMetadata{},
Children: render.MakeRenderableNodeSet(
//RenderedEndpoints[unknownPseudoNode2ID],
//RenderedAddresses[unknownPseudoAddress2ID],
// RenderedEndpoints[unknownPseudoNode2ID],
// RenderedAddresses[unknownPseudoAddress2ID],
),
},
render.IncomingInternetID: {
@@ -649,7 +547,7 @@ var (
Node: report.MakeNode().WithAdjacent(ServerHostID),
EdgeMetadata: report.EdgeMetadata{},
Children: render.MakeRenderableNodeSet(
//RenderedEndpoints[render.TheInternetID],
// RenderedEndpoints[render.TheInternetID],
),
},
}).Prune()
@@ -663,13 +561,10 @@ var (
LabelMajor: "pong-a",
LabelMinor: "1 container",
Rank: "ping/pong-a",
Pseudo: false,
Shape: heptagon,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[Client54001EndpointID],
RemappedEndpoints[Client54002EndpointID],
RenderedEndpoints[Client54001PseudoEndpointID],
RenderedEndpoints[Client54002PseudoEndpointID],
RenderedEndpoints[Client54001EndpointID],
RenderedEndpoints[Client54002EndpointID],
RenderedProcesses[ClientProcess1ID],
RenderedProcesses[ClientProcess2ID],
RenderedContainers[ClientContainerID],
@@ -685,11 +580,9 @@ var (
LabelMajor: "pong-b",
LabelMinor: "1 container",
Rank: "ping/pong-b",
Pseudo: false,
Shape: heptagon,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[ServerEndpointID],
RenderedEndpoints[ServerPseudoEndpointID],
RenderedEndpoints[ServerEndpointID],
RenderedProcesses[ServerProcessID],
RenderedContainers[ServerContainerID],
),
@@ -707,15 +600,14 @@ var (
Shape: square,
Stack: true,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[NonContainerEndpointID],
RenderedEndpoints[NonContainerPseudoEndpointID],
RenderedEndpoints[NonContainerEndpointID],
RenderedProcesses[nonContainerProcessID],
),
Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID),
EdgeMetadata: report.EdgeMetadata{},
},
unknownPseudoNode1ID: unknownPseudoNode1(ServerPodRenderedID),
unknownPseudoNode2ID: unknownPseudoNode2(ServerPodRenderedID),
// unknownPseudoNode1ID: unknownPseudoNode1(ServerPodRenderedID),
// unknownPseudoNode2ID: unknownPseudoNode2(ServerPodRenderedID),
render.IncomingInternetID: theIncomingInternetNode(ServerPodRenderedID),
render.OutgoingInternetID: theOutgoingInternetNode,
}).Prune()
@@ -728,16 +620,12 @@ var (
LabelMajor: "pongservice",
LabelMinor: "2 pods",
Rank: fixture.ServiceID,
Pseudo: false,
Shape: heptagon,
Stack: true,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[Client54001EndpointID],
RemappedEndpoints[Client54002EndpointID],
RemappedEndpoints[ServerEndpointID],
RenderedEndpoints[Client54001PseudoEndpointID],
RenderedEndpoints[Client54002PseudoEndpointID],
RenderedEndpoints[ServerPseudoEndpointID],
RenderedEndpoints[Client54001EndpointID],
RenderedEndpoints[Client54002EndpointID],
RenderedEndpoints[ServerEndpointID],
RenderedProcesses[ClientProcess1ID],
RenderedProcesses[ClientProcess2ID],
RenderedProcesses[ServerProcessID],
@@ -762,15 +650,14 @@ var (
Shape: square,
Stack: true,
Children: render.MakeRenderableNodeSet(
RemappedEndpoints[NonContainerEndpointID],
RenderedEndpoints[NonContainerPseudoEndpointID],
RenderedEndpoints[NonContainerEndpointID],
RenderedProcesses[nonContainerProcessID],
),
Node: report.MakeNode().WithAdjacent(render.OutgoingInternetID),
EdgeMetadata: report.EdgeMetadata{},
},
unknownPseudoNode1ID: unknownPseudoNode1(ServiceRenderedID),
unknownPseudoNode2ID: unknownPseudoNode2(ServiceRenderedID),
// unknownPseudoNode1ID: unknownPseudoNode1(ServiceRenderedID),
// unknownPseudoNode2ID: unknownPseudoNode2(ServiceRenderedID),
render.IncomingInternetID: theIncomingInternetNode(ServiceRenderedID),
render.OutgoingInternetID: theOutgoingInternetNode,
}).Prune()
-5
View File
@@ -24,11 +24,6 @@ func MakeEndpointID(hostID, addr, port string) string {
return makeID("endpoint", hostID, addr, port)
}
// MakePseudoEndpointID makes a pseudo endpoint node ID for rendered nodes.
func MakePseudoEndpointID(hostID, addr, port string) string {
return makeID("pseudo-endpoint", hostID, addr, port)
}
// MakeProcessID makes a process node ID for rendered nodes.
func MakeProcessID(hostID, pid string) string {
return makeID("process", hostID, pid)
+50 -69
View File
@@ -60,29 +60,11 @@ func theInternetNode(m RenderableNode) RenderableNode {
return node
}
// RemapEndpointIDs remaps endpoints to have an id format consistent
// MapEndpointIdentity remaps endpoints to have an id format consistent
// with render/id.go; no pseudo nodes are introduced in this step, so
// that pseudo nodes introduces later are guaranteed to have endpoints
// as children. This is needed to construct the connection details tables.
func RemapEndpointIDs(m RenderableNode, _ report.Networks) RenderableNodes {
addr, ok := m.Latest.Lookup(endpoint.Addr)
if !ok {
return RenderableNodes{}
}
port, ok := m.Latest.Lookup(endpoint.Port)
if !ok {
return RenderableNodes{}
}
id := MakeEndpointID(report.ExtractHostID(m.Node), addr, port)
return RenderableNodes{id: NewRenderableNodeWith(id, "", "", "", m)}
}
// MapEndpointIdentity maps an endpoint topology node to a single endpoint
// renderable node. As it is only ever run on endpoint topology nodes, we
// expect that certain keys are present.
func MapEndpointIdentity(m RenderableNode, local report.Networks) RenderableNodes {
func MapEndpointIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
addr, ok := m.Latest.Lookup(endpoint.Addr)
if !ok {
return RenderableNodes{}
@@ -99,50 +81,8 @@ func MapEndpointIdentity(m RenderableNode, local report.Networks) RenderableNode
return RenderableNodes{}
}
// Nodes without a hostid are treated as psuedo nodes
if _, ok = m.Latest.Lookup(report.HostNodeID); !ok {
var node RenderableNode
if ip := net.ParseIP(addr); ip != nil && !local.Contains(ip) {
// If the dstNodeAddr is not in a network local to this report, we emit an
// internet node
node = theInternetNode(m)
} else if p, err := strconv.Atoi(port); err == nil && len(m.Adjacency) > 0 && p >= 32768 && p < 65535 {
// We are a 'client' pseudo node if the port is in the ephemeral port range.
// Linux uses 32768 to 61000, IANA suggests 49152 to 65535.
// We only exist if there is something in our adjacency
// Generate a single pseudo node for every (client ip, server ip, server port)
_, serverIP, serverPort, _ := ParseEndpointID(m.Adjacency[0])
node = newDerivedPseudoNode(MakePseudoNodeID(addr, serverIP, serverPort), addr, m)
} else if port != "" {
// Otherwise (the server node is missing), generate a pseudo node for every (server ip, server port)
node = newDerivedPseudoNode(MakePseudoNodeID(addr, port), addr+":"+port, m)
} else {
// Empty port for some reason...
node = newDerivedPseudoNode(MakePseudoNodeID(addr, port), addr, m)
}
node.Children = node.Children.Add(m)
return RenderableNodes{node.ID: node}
}
var (
id = MakePseudoEndpointID(report.ExtractHostID(m.Node), addr, port)
major = fmt.Sprintf("%s:%s", addr, port)
minor = report.ExtractHostID(m.Node)
)
pid, pidOK := m.Latest.Lookup(process.PID)
if pidOK {
minor = fmt.Sprintf("%s (%s)", minor, pid)
}
node := NewRenderableNodeWith(id, major, minor, "", m)
node.Children = node.Children.Add(m)
return RenderableNodes{id: node}
id := MakeEndpointID(report.ExtractHostID(m.Node), addr, port)
return RenderableNodes{id: NewRenderableNodeWith(id, "", "", "", m)}
}
// MapProcessIdentity maps a process topology node to a process renderable
@@ -447,9 +387,45 @@ func MapIP2Container(n RenderableNode, _ report.Networks) RenderableNodes {
// format for a process, but without any Major or Minor labels.
// It does not have enough info to do that, and the resulting graph
// must be merged with a process graph to get that info.
func MapEndpoint2Process(n RenderableNode, _ report.Networks) RenderableNodes {
if n.Pseudo {
return RenderableNodes{n.ID: n}
func MapEndpoint2Process(n RenderableNode, local report.Networks) RenderableNodes {
// Nodes without a hostid are treated as psuedo nodes
if _, ok := n.Latest.Lookup(report.HostNodeID); !ok {
var node RenderableNode
addr, ok := n.Latest.Lookup(endpoint.Addr)
if !ok {
return RenderableNodes{}
}
port, ok := n.Latest.Lookup(endpoint.Port)
if !ok {
return RenderableNodes{}
}
if ip := net.ParseIP(addr); ip != nil && !local.Contains(ip) {
// If the dstNodeAddr is not in a network local to this report, we emit an
// internet node
node = theInternetNode(n)
} else if p, err := strconv.Atoi(port); err == nil && len(n.Adjacency) > 0 && p >= 32768 && p < 65535 {
// We are a 'client' pseudo node if the port is in the ephemeral port range.
// Linux uses 32768 to 61000, IANA suggests 49152 to 65535.
// We only exist if there is something in our adjacency
// Generate a single pseudo node for every (client ip, server ip, server port)
_, serverIP, serverPort, _ := ParseEndpointID(n.Adjacency[0])
node = newDerivedPseudoNode(MakePseudoNodeID(addr, serverIP, serverPort), addr, n)
} else if port != "" {
// Otherwise (the server node is missing), generate a pseudo node for every (server ip, server port)
node = newDerivedPseudoNode(MakePseudoNodeID(addr, port), addr+":"+port, n)
} else {
// Empty port for some reason...
node = newDerivedPseudoNode(MakePseudoNodeID(addr, port), addr, n)
}
node.Children = node.Children.Add(n)
return RenderableNodes{node.ID: node}
}
pid, ok := n.Node.Latest.Lookup(process.PID)
@@ -476,11 +452,16 @@ func MapEndpoint2Process(n RenderableNode, _ report.Networks) RenderableNodes {
// It does not have enough info to do that, and the resulting graph
// must be merged with a container graph to get that info.
func MapProcess2Container(n RenderableNode, _ report.Networks) RenderableNodes {
// Propogate pseudo node
if n.Pseudo {
// Propogate the internet pseudo node
if strings.HasSuffix(n.ID, TheInternetID) {
return RenderableNodes{n.ID: n}
}
// Don't propogate non-internet pseudo nodes
if n.Pseudo {
return RenderableNodes{}
}
// Otherwise, if the process is not in a container, group it
// into an per-host "Uncontained" node. If for whatever reason
// this node doesn't have a host id in their nodemetadata, it'll
+1 -4
View File
@@ -13,10 +13,7 @@ import (
// EndpointRenderer is a Renderer which produces a renderable endpoint graph.
var EndpointRenderer = MakeMap(
MapEndpointIdentity,
MakeMap(
RemapEndpointIDs,
SelectEndpoint,
),
SelectEndpoint,
)
// ProcessRenderer is a Renderer which produces a renderable process
-11
View File
@@ -13,17 +13,6 @@ import (
"github.com/weaveworks/scope/test/reflect"
)
func TestRemappedEndpoints(t *testing.T) {
have := render.MakeMap(
render.RemapEndpointIDs,
render.SelectEndpoint,
).Render(fixture.Report).Prune()
want := expected.RemappedEndpoints
if !reflect.DeepEqual(want, have) {
t.Error(test.Diff(want, have))
}
}
func TestEndpointRenderer(t *testing.T) {
have := render.EndpointRenderer.Render(fixture.Report).Prune()
want := expected.RenderedEndpoints