mirror of
https://github.com/weaveworks/scope.git
synced 2026-02-14 18:09:59 +00:00
282 lines
11 KiB
Go
282 lines
11 KiB
Go
package expected
|
|
|
|
import (
|
|
"github.com/weaveworks/scope/probe/docker"
|
|
"github.com/weaveworks/scope/probe/host"
|
|
"github.com/weaveworks/scope/probe/process"
|
|
"github.com/weaveworks/scope/render"
|
|
"github.com/weaveworks/scope/report"
|
|
"github.com/weaveworks/scope/test/fixture"
|
|
)
|
|
|
|
// Exported for testing.
|
|
var (
|
|
circle = "circle"
|
|
square = "square"
|
|
heptagon = "heptagon"
|
|
hexagon = "hexagon"
|
|
cloud = "cloud"
|
|
|
|
// Helper to make a report.node with some common options
|
|
node = func(topology string) func(id string, adjacent ...string) report.Node {
|
|
return func(id string, adjacent ...string) report.Node {
|
|
n := report.MakeNode().WithID(id).WithTopology(topology)
|
|
for _, a := range adjacent {
|
|
n = n.WithAdjacent(a)
|
|
}
|
|
return n
|
|
}
|
|
}
|
|
pseudo = node(render.Pseudo)
|
|
endpoint = node(report.Endpoint)
|
|
processNode = node(report.Process)
|
|
container = node(report.Container)
|
|
containerImage = node(report.ContainerImage)
|
|
pod = node(report.Pod)
|
|
service = node(report.Service)
|
|
hostNode = node(report.Host)
|
|
|
|
UnknownPseudoNode1ID = render.MakePseudoNodeID(fixture.UnknownClient1IP)
|
|
UnknownPseudoNode2ID = render.MakePseudoNodeID(fixture.UnknownClient3IP)
|
|
|
|
unknownPseudoNode1 = func(adjacent ...string) report.Node {
|
|
return pseudo(UnknownPseudoNode1ID, adjacent...).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.UnknownClient1NodeID],
|
|
RenderedEndpoints[fixture.UnknownClient2NodeID],
|
|
))
|
|
}
|
|
unknownPseudoNode2 = func(adjacent ...string) report.Node {
|
|
return pseudo(UnknownPseudoNode2ID, adjacent...).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.UnknownClient3NodeID],
|
|
))
|
|
}
|
|
|
|
theIncomingInternetNode = func(adjacent ...string) report.Node {
|
|
return pseudo(render.IncomingInternetID, adjacent...).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.RandomClientNodeID],
|
|
))
|
|
}
|
|
|
|
theOutgoingInternetNode = pseudo(render.OutgoingInternetID).WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.GoogleEndpointNodeID],
|
|
))
|
|
|
|
RenderedEndpoints = report.Nodes{
|
|
fixture.Client54001NodeID: endpoint(fixture.Client54001NodeID, fixture.Server80NodeID),
|
|
fixture.Client54002NodeID: endpoint(fixture.Client54002NodeID, fixture.Server80NodeID),
|
|
fixture.Server80NodeID: endpoint(fixture.Server80NodeID),
|
|
fixture.UnknownClient1NodeID: endpoint(fixture.UnknownClient1NodeID, fixture.Server80NodeID),
|
|
fixture.UnknownClient2NodeID: endpoint(fixture.UnknownClient2NodeID, fixture.Server80NodeID),
|
|
fixture.UnknownClient3NodeID: endpoint(fixture.UnknownClient3NodeID, fixture.Server80NodeID),
|
|
fixture.RandomClientNodeID: endpoint(fixture.RandomClientNodeID, fixture.Server80NodeID),
|
|
fixture.NonContainerNodeID: endpoint(fixture.NonContainerNodeID, fixture.GoogleEndpointNodeID),
|
|
fixture.GoogleEndpointNodeID: endpoint(fixture.GoogleEndpointNodeID),
|
|
}
|
|
|
|
RenderedProcesses = report.Nodes{
|
|
fixture.ClientProcess1NodeID: processNode(fixture.ClientProcess1NodeID, fixture.ServerProcessNodeID).
|
|
WithLatests(map[string]string{
|
|
report.HostNodeID: fixture.ClientHostNodeID,
|
|
process.PID: fixture.Client1PID,
|
|
process.Name: fixture.Client1Name,
|
|
}).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Client54001NodeID],
|
|
)),
|
|
|
|
fixture.ClientProcess2NodeID: processNode(fixture.ClientProcess2NodeID, fixture.ServerProcessNodeID).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Client54002NodeID],
|
|
)),
|
|
|
|
fixture.ServerProcessNodeID: processNode(fixture.ServerProcessNodeID).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Server80NodeID],
|
|
)),
|
|
|
|
fixture.NonContainerProcessNodeID: processNode(fixture.NonContainerProcessNodeID, render.OutgoingInternetID).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.NonContainerNodeID],
|
|
)),
|
|
|
|
// due to https://github.com/weaveworks/scope/issues/1323 we are dropping
|
|
// all non-internet pseudo nodes for now.
|
|
// UnknownPseudoNode1ID: unknownPseudoNode1(fixture.ServerProcessNodeID),
|
|
// UnknownPseudoNode2ID: unknownPseudoNode2(fixture.ServerProcessNodeID),
|
|
render.IncomingInternetID: theIncomingInternetNode(fixture.ServerProcessNodeID),
|
|
render.OutgoingInternetID: theOutgoingInternetNode,
|
|
}
|
|
|
|
RenderedProcessNames = report.Nodes{
|
|
fixture.Client1Name: processNode(fixture.Client1Name, fixture.ServerName).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Client54001NodeID],
|
|
RenderedEndpoints[fixture.Client54002NodeID],
|
|
RenderedProcesses[fixture.ClientProcess1NodeID],
|
|
RenderedProcesses[fixture.ClientProcess2NodeID],
|
|
)),
|
|
|
|
fixture.ServerName: processNode(fixture.ServerName).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Server80NodeID],
|
|
RenderedProcesses[fixture.ServerProcessNodeID],
|
|
)),
|
|
|
|
fixture.NonContainerName: processNode(fixture.NonContainerName, render.OutgoingInternetID).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.NonContainerNodeID],
|
|
RenderedProcesses[fixture.NonContainerProcessNodeID],
|
|
)),
|
|
|
|
// due to https://github.com/weaveworks/scope/issues/1323 we are dropping
|
|
// all non-internet pseudo nodes for now.
|
|
// UnknownPseudoNode1ID: unknownPseudoNode1(fixture.ServerName),
|
|
// UnknownPseudoNode2ID: unknownPseudoNode2(fixture.ServerName),
|
|
render.IncomingInternetID: theIncomingInternetNode(fixture.ServerName),
|
|
render.OutgoingInternetID: theOutgoingInternetNode,
|
|
}
|
|
|
|
uncontainedServerID = render.MakePseudoNodeID(render.UncontainedID, fixture.ServerHostID)
|
|
uncontainedServerNode = pseudo(uncontainedServerID, render.OutgoingInternetID).WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.NonContainerNodeID],
|
|
RenderedProcesses[fixture.NonContainerProcessNodeID],
|
|
))
|
|
|
|
RenderedContainers = report.Nodes{
|
|
fixture.ClientContainerNodeID: container(fixture.ClientContainerNodeID, fixture.ServerContainerNodeID).
|
|
WithLatests(map[string]string{
|
|
report.HostNodeID: fixture.ClientHostNodeID,
|
|
docker.ContainerID: fixture.ClientContainerID,
|
|
docker.ContainerName: fixture.ClientContainerName,
|
|
docker.ImageName: fixture.ClientContainerImageName,
|
|
}).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Client54001NodeID],
|
|
RenderedEndpoints[fixture.Client54002NodeID],
|
|
RenderedProcesses[fixture.ClientProcess1NodeID],
|
|
RenderedProcesses[fixture.ClientProcess2NodeID],
|
|
)),
|
|
|
|
fixture.ServerContainerNodeID: container(fixture.ServerContainerNodeID).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Server80NodeID],
|
|
RenderedProcesses[fixture.ServerProcessNodeID],
|
|
)),
|
|
|
|
uncontainedServerID: uncontainedServerNode,
|
|
render.IncomingInternetID: theIncomingInternetNode(fixture.ServerContainerNodeID),
|
|
render.OutgoingInternetID: theOutgoingInternetNode,
|
|
}
|
|
|
|
RenderedContainerImages = report.Nodes{
|
|
fixture.ClientContainerImageNodeID: containerImage(fixture.ClientContainerImageNodeID, fixture.ServerContainerImageNodeID).
|
|
WithLatests(map[string]string{
|
|
report.HostNodeID: fixture.ClientHostNodeID,
|
|
docker.ImageID: fixture.ClientContainerImageID,
|
|
docker.ImageName: fixture.ClientContainerImageName,
|
|
}).
|
|
WithCounters(map[string]int{
|
|
report.Container: 1,
|
|
}).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Client54001NodeID],
|
|
RenderedEndpoints[fixture.Client54002NodeID],
|
|
RenderedProcesses[fixture.ClientProcess1NodeID],
|
|
RenderedProcesses[fixture.ClientProcess2NodeID],
|
|
RenderedContainers[fixture.ClientContainerNodeID],
|
|
)),
|
|
|
|
fixture.ServerContainerImageNodeID: containerImage(fixture.ServerContainerImageNodeID).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Server80NodeID],
|
|
RenderedProcesses[fixture.ServerProcessNodeID],
|
|
RenderedContainers[fixture.ServerContainerNodeID],
|
|
)),
|
|
|
|
uncontainedServerID: uncontainedServerNode,
|
|
render.IncomingInternetID: theIncomingInternetNode(fixture.ServerContainerImageNodeID),
|
|
render.OutgoingInternetID: theOutgoingInternetNode,
|
|
}
|
|
|
|
RenderedHosts = report.Nodes{
|
|
fixture.ClientHostNodeID: hostNode(fixture.ClientHostNodeID, fixture.ServerHostNodeID).
|
|
WithLatests(map[string]string{
|
|
host.HostName: fixture.ClientHostName,
|
|
}).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Client54001NodeID],
|
|
RenderedEndpoints[fixture.Client54002NodeID],
|
|
RenderedProcesses[fixture.ClientProcess1NodeID],
|
|
RenderedProcesses[fixture.ClientProcess2NodeID],
|
|
RenderedContainers[fixture.ClientContainerNodeID],
|
|
RenderedContainerImages[fixture.ClientContainerImageNodeID],
|
|
//RenderedPods[fixture.ClientPodNodeID], #1142
|
|
)),
|
|
|
|
fixture.ServerHostNodeID: hostNode(fixture.ServerHostNodeID, render.OutgoingInternetID).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Server80NodeID],
|
|
RenderedEndpoints[fixture.NonContainerNodeID],
|
|
RenderedProcesses[fixture.ServerProcessNodeID],
|
|
RenderedProcesses[fixture.NonContainerProcessNodeID],
|
|
RenderedContainers[fixture.ServerContainerNodeID],
|
|
RenderedContainerImages[fixture.ServerContainerImageNodeID],
|
|
//RenderedPods[fixture.ServerPodNodeID], #1142
|
|
)),
|
|
|
|
// due to https://github.com/weaveworks/scope/issues/1323 we are dropping
|
|
// all non-internet pseudo nodes for now.
|
|
// UnknownPseudoNode1ID: unknownPseudoNode1(fixture.ServerHostNodeID),
|
|
// UnknownPseudoNode2ID: unknownPseudoNode2(fixture.ServerHostNodeID),
|
|
render.IncomingInternetID: theIncomingInternetNode(fixture.ServerHostNodeID),
|
|
render.OutgoingInternetID: theOutgoingInternetNode,
|
|
}
|
|
|
|
RenderedPods = report.Nodes{
|
|
fixture.ClientPodNodeID: pod(fixture.ClientPodNodeID, fixture.ServerPodNodeID).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Client54001NodeID],
|
|
RenderedEndpoints[fixture.Client54002NodeID],
|
|
RenderedProcesses[fixture.ClientProcess1NodeID],
|
|
RenderedProcesses[fixture.ClientProcess2NodeID],
|
|
RenderedContainers[fixture.ClientContainerNodeID],
|
|
)),
|
|
|
|
fixture.ServerPodNodeID: pod(fixture.ServerPodNodeID).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Server80NodeID],
|
|
RenderedProcesses[fixture.ServerProcessNodeID],
|
|
RenderedContainers[fixture.ServerContainerNodeID],
|
|
)),
|
|
|
|
uncontainedServerID: uncontainedServerNode,
|
|
render.IncomingInternetID: theIncomingInternetNode(fixture.ServerPodNodeID),
|
|
render.OutgoingInternetID: theOutgoingInternetNode,
|
|
}
|
|
|
|
RenderedPodServices = report.Nodes{
|
|
fixture.ServiceNodeID: service(fixture.ServiceNodeID, fixture.ServiceNodeID).
|
|
WithChildren(report.MakeNodeSet(
|
|
RenderedEndpoints[fixture.Client54001NodeID],
|
|
RenderedEndpoints[fixture.Client54002NodeID],
|
|
RenderedEndpoints[fixture.Server80NodeID],
|
|
RenderedProcesses[fixture.ClientProcess1NodeID],
|
|
RenderedProcesses[fixture.ClientProcess2NodeID],
|
|
RenderedProcesses[fixture.ServerProcessNodeID],
|
|
RenderedContainers[fixture.ClientContainerNodeID],
|
|
RenderedContainers[fixture.ServerContainerNodeID],
|
|
RenderedPods[fixture.ClientPodNodeID],
|
|
RenderedPods[fixture.ServerPodNodeID],
|
|
)),
|
|
|
|
uncontainedServerID: uncontainedServerNode,
|
|
render.IncomingInternetID: theIncomingInternetNode(fixture.ServiceNodeID),
|
|
render.OutgoingInternetID: theOutgoingInternetNode,
|
|
}
|
|
)
|
|
|
|
func newu64(value uint64) *uint64 { return &value }
|