mirror of
https://github.com/weaveworks/scope.git
synced 2026-08-18 20:07:06 +00:00
Review feedback II
This commit is contained in:
@@ -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
@@ -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()
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user