123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397 |
- package expected
- import (
- "github.com/weaveworks/scope/probe/docker"
- "github.com/weaveworks/scope/probe/kubernetes"
- "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"
- cylinder = "cylinder"
- dottedcylinder = "dottedcylinder"
- storagesheet = "sheet"
- // 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(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)
- processNameNode = node(render.MakeGroupNodeTopology(report.Process, process.Name))
- container = node(report.Container)
- containerHostnameNode = node(render.MakeGroupNodeTopology(report.Container, docker.ContainerHostname))
- containerImage = node(report.ContainerImage)
- pod = node(report.Pod)
- service = node(report.Service)
- hostNode = node(report.Host)
- persistentVolume = node(report.PersistentVolume)
- persistentVolumeClaim = node(report.PersistentVolumeClaim)
- StorageClass = node(report.StorageClass)
- volumeSnapshot = node(report.VolumeSnapshot)
- volumeSnapshotData = node(report.VolumeSnapshotData)
- 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: processNameNode(fixture.Client1Name, fixture.ServerName).
- WithLatests(map[string]string{process.Name: fixture.Client1Name}).
- AddCounter(report.Process, 2).
- WithChildren(report.MakeNodeSet(
- RenderedEndpoints[fixture.Client54001NodeID],
- RenderedEndpoints[fixture.Client54002NodeID],
- RenderedProcesses[fixture.ClientProcess1NodeID],
- RenderedProcesses[fixture.ClientProcess2NodeID],
- )),
- fixture.ServerName: processNameNode(fixture.ServerName).
- WithLatests(map[string]string{process.Name: fixture.ServerName}).
- AddCounter(report.Process, 1).
- WithChildren(report.MakeNodeSet(
- RenderedEndpoints[fixture.Server80NodeID],
- RenderedProcesses[fixture.ServerProcessNodeID],
- )),
- fixture.NonContainerName: processNameNode(fixture.NonContainerName, render.OutgoingInternetID).
- AddCounter(report.Process, 1).
- 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],
- )),
- fixture.ServerContainer2NodeID: container(fixture.ServerContainer2NodeID),
- uncontainedServerID: uncontainedServerNode,
- render.IncomingInternetID: theIncomingInternetNode(fixture.ServerContainerNodeID),
- render.OutgoingInternetID: theOutgoingInternetNode,
- }
- RenderedContainerHostnames = report.Nodes{
- fixture.ClientContainerHostname: containerHostnameNode(fixture.ClientContainerHostname, fixture.ServerContainerHostname).
- WithLatests(map[string]string{
- docker.ContainerHostname: fixture.ClientContainerHostname,
- }).
- AddCounter(report.Container, 1).
- WithChildren(report.MakeNodeSet(
- RenderedEndpoints[fixture.Client54001NodeID],
- RenderedEndpoints[fixture.Client54002NodeID],
- RenderedProcesses[fixture.ClientProcess1NodeID],
- RenderedProcesses[fixture.ClientProcess2NodeID],
- RenderedContainers[fixture.ClientContainerNodeID],
- )),
- fixture.ServerContainerHostname: containerHostnameNode(fixture.ServerContainerHostname).
- WithLatests(map[string]string{
- docker.ContainerHostname: fixture.ServerContainerHostname,
- }).
- AddCounter(report.Container, 2).
- WithChildren(report.MakeNodeSet(
- RenderedEndpoints[fixture.Server80NodeID],
- RenderedProcesses[fixture.ServerProcessNodeID],
- RenderedContainers[fixture.ServerContainerNodeID],
- RenderedContainers[fixture.ServerContainer2NodeID],
- )),
- uncontainedServerID: uncontainedServerNode,
- render.IncomingInternetID: theIncomingInternetNode(fixture.ServerContainerHostname),
- render.OutgoingInternetID: theOutgoingInternetNode,
- }
- ClientContainerImageNodeID = report.MakeContainerImageNodeID(fixture.ClientContainerImageName)
- ServerContainerImageNodeID = report.MakeContainerImageNodeID(fixture.ServerContainerImageName)
- RenderedContainerImages = report.Nodes{
- ClientContainerImageNodeID: containerImage(ClientContainerImageNodeID, ServerContainerImageNodeID).
- WithLatests(map[string]string{
- report.HostNodeID: fixture.ClientHostNodeID,
- docker.ImageID: fixture.ClientContainerImageID,
- docker.ImageName: fixture.ClientContainerImageName,
- }).
- AddCounter(report.Container, 1).
- WithChildren(report.MakeNodeSet(
- RenderedEndpoints[fixture.Client54001NodeID],
- RenderedEndpoints[fixture.Client54002NodeID],
- RenderedProcesses[fixture.ClientProcess1NodeID],
- RenderedProcesses[fixture.ClientProcess2NodeID],
- RenderedContainers[fixture.ClientContainerNodeID],
- )),
- ServerContainerImageNodeID: containerImage(ServerContainerImageNodeID).
- AddCounter(report.Container, 2).
- WithChildren(report.MakeNodeSet(
- RenderedEndpoints[fixture.Server80NodeID],
- RenderedProcesses[fixture.ServerProcessNodeID],
- RenderedContainers[fixture.ServerContainerNodeID],
- RenderedContainers[fixture.ServerContainer2NodeID],
- )),
- uncontainedServerID: uncontainedServerNode,
- render.IncomingInternetID: theIncomingInternetNode(ServerContainerImageNodeID),
- render.OutgoingInternetID: theOutgoingInternetNode,
- }
- UnmanagedServerID = render.MakePseudoNodeID(render.UnmanagedID, fixture.ServerHostID)
- unmanagedServerNode = pseudo(UnmanagedServerID, render.OutgoingInternetID).WithChildren(report.MakeNodeSet(
- uncontainedServerNode,
- RenderedEndpoints[fixture.NonContainerNodeID],
- RenderedProcesses[fixture.NonContainerProcessNodeID],
- RenderedContainers[fixture.ServerContainer2NodeID],
- )).
- AddCounter(report.Container, 1).
- AddCounter(render.Pseudo, 1)
- RenderedPods = report.Nodes{
- fixture.ClientPodNodeID: pod(fixture.ClientPodNodeID, fixture.ServerPodNodeID).
- AddCounter(report.Container, 1).
- WithChildren(report.MakeNodeSet(
- RenderedEndpoints[fixture.Client54001NodeID],
- RenderedEndpoints[fixture.Client54002NodeID],
- RenderedProcesses[fixture.ClientProcess1NodeID],
- RenderedProcesses[fixture.ClientProcess2NodeID],
- RenderedContainers[fixture.ClientContainerNodeID],
- )),
- fixture.ServerPodNodeID: pod(fixture.ServerPodNodeID).
- AddCounter(report.Container, 1).
- WithChildren(report.MakeNodeSet(
- RenderedEndpoints[fixture.Server80NodeID],
- RenderedProcesses[fixture.ServerProcessNodeID],
- RenderedContainers[fixture.ServerContainerNodeID],
- )),
- fixture.PersistentVolumeClaimNodeID: persistentVolumeClaim(fixture.PersistentVolumeClaimNodeID, fixture.PersistentVolumeNodeID).
- WithLatests(map[string]string{
- kubernetes.Name: "pvc-6124",
- kubernetes.Namespace: "ping",
- kubernetes.Status: "bound",
- kubernetes.VolumeName: "pongvolume",
- kubernetes.AccessModes: "ReadWriteOnce",
- kubernetes.StorageClassName: "standard",
- }).WithChild(report.MakeNode(fixture.PersistentVolumeNodeID).WithTopology(report.PersistentVolume)),
- fixture.PersistentVolumeNodeID: persistentVolume(fixture.PersistentVolumeNodeID, fixture.VolumeSnapshotNodeID).
- WithLatests(map[string]string{
- kubernetes.Name: "pongvolume",
- kubernetes.Namespace: "ping",
- kubernetes.Status: "bound",
- kubernetes.VolumeClaim: "pvc-6124",
- kubernetes.AccessModes: "ReadWriteOnce",
- kubernetes.StorageClassName: "standard",
- kubernetes.StorageDriver: "iSCSI",
- }).WithChild(report.MakeNode(fixture.VolumeSnapshotNodeID).WithTopology(report.VolumeSnapshot)),
- fixture.StorageClassNodeID: StorageClass(fixture.StorageClassNodeID, fixture.PersistentVolumeClaimNodeID).
- WithLatests(map[string]string{
- kubernetes.Name: "standard",
- kubernetes.Provisioner: "pong",
- }).WithChild(report.MakeNode(fixture.PersistentVolumeClaimNodeID).WithTopology(report.PersistentVolumeClaim)),
- fixture.VolumeSnapshotNodeID: volumeSnapshot(fixture.VolumeSnapshotNodeID, fixture.VolumeSnapshotDataNodeID).
- WithLatests(map[string]string{
- kubernetes.Name: "vs-1234",
- kubernetes.Namespace: "ping",
- kubernetes.VolumeClaim: "pvc-6124",
- kubernetes.SnapshotData: "vsd-1234",
- kubernetes.VolumeName: "pongvolume",
- }).WithChild(report.MakeNode(fixture.VolumeSnapshotDataNodeID).WithTopology(report.VolumeSnapshotData)),
- fixture.VolumeSnapshotDataNodeID: volumeSnapshotData(fixture.VolumeSnapshotDataNodeID).
- WithLatests(map[string]string{
- kubernetes.Name: "vsd-1234",
- kubernetes.VolumeName: "pongvolume",
- kubernetes.VolumeSnapshotName: "vs-1234",
- }),
- UnmanagedServerID: unmanagedServerNode,
- render.IncomingInternetID: theIncomingInternetNode(fixture.ServerPodNodeID),
- render.OutgoingInternetID: theOutgoingInternetNode,
- }
- RenderedPodServices = report.Nodes{
- fixture.ServiceNodeID: service(fixture.ServiceNodeID, fixture.ServiceNodeID).
- AddCounter(report.Pod, 2).
- 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],
- )),
- UnmanagedServerID: unmanagedServerNode,
- render.IncomingInternetID: theIncomingInternetNode(fixture.ServiceNodeID),
- render.OutgoingInternetID: theOutgoingInternetNode,
- }
- RenderedHosts = report.Nodes{
- fixture.ClientHostNodeID: hostNode(fixture.ClientHostNodeID, fixture.ServerHostNodeID).
- WithLatests(map[string]string{
- report.HostName: fixture.ClientHostName,
- }).
- AddCounter(report.Container, 1).
- AddCounter(report.ContainerImage, 1).
- AddCounter(report.Pod, 1).
- AddCounter(report.Process, 2).
- WithChildren(report.MakeNodeSet(
- RenderedEndpoints[fixture.Client54001NodeID],
- RenderedEndpoints[fixture.Client54002NodeID],
- RenderedProcesses[fixture.ClientProcess1NodeID],
- RenderedProcesses[fixture.ClientProcess2NodeID],
- RenderedContainers[fixture.ClientContainerNodeID],
- RenderedContainerImages[ClientContainerImageNodeID],
- RenderedPods[fixture.ClientPodNodeID],
- )),
- fixture.ServerHostNodeID: hostNode(fixture.ServerHostNodeID, render.OutgoingInternetID).
- AddCounter(report.Container, 2).
- AddCounter(report.ContainerImage, 1).
- AddCounter(report.Pod, 1).
- AddCounter(report.Process, 2).
- WithChildren(report.MakeNodeSet(
- RenderedEndpoints[fixture.Server80NodeID],
- RenderedEndpoints[fixture.NonContainerNodeID],
- RenderedProcesses[fixture.ServerProcessNodeID],
- RenderedProcesses[fixture.NonContainerProcessNodeID],
- RenderedContainers[fixture.ServerContainerNodeID],
- RenderedContainers[fixture.ServerContainer2NodeID],
- RenderedContainerImages[ServerContainerImageNodeID],
- RenderedPods[fixture.ServerPodNodeID],
- )),
- // 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,
- }
- )
- func newu64(value uint64) *uint64 { return &value }
|