123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package render_test
- import (
- "context"
- "fmt"
- "testing"
- "github.com/weaveworks/common/mtime"
- "github.com/weaveworks/scope/render"
- "github.com/weaveworks/scope/report"
- "github.com/weaveworks/scope/test/utils"
- )
- var (
- serverHostID = "host1"
- serverHostNodeID = report.MakeHostNodeID(serverHostID)
- randomIP = "3.4.5.6"
- randomPort = "56789"
- randomEndpointNodeID = report.MakeEndpointNodeID(serverHostID, "", randomIP, randomPort)
- serverIP = "192.168.1.1"
- serverPort = "80"
- serverEndpointNodeID = report.MakeEndpointNodeID(serverHostID, "", serverIP, serverPort)
- container1ID = "11b2c3d4e5"
- container1IP = "192.168.0.1"
- container1Name = "foo"
- container1NodeID = report.MakeContainerNodeID(container1ID)
- container1Port = "16782"
- container1EndpointNodeID = report.MakeEndpointNodeID(serverHostID, "", container1IP, container1Port)
- duplicatedIP = "192.168.0.2"
- duplicatedPort = "80"
- duplicatedEndpointNodeID = report.MakeEndpointNodeID(serverHostID, "", duplicatedIP, duplicatedPort)
- container2ID = "21b2c3d4e5"
- container2IP = duplicatedIP
- container2Name = "bar"
- container2NodeID = report.MakeContainerNodeID(container2ID)
- pauseContainerID = "31b2c3d4e5"
- pauseContainerIP = duplicatedIP
- pauseContainerName = "POD"
- pauseContainerNodeID = report.MakeContainerNodeID(pauseContainerID)
- rpt = report.Report{
- Endpoint: report.Topology{
- Nodes: report.Nodes{
- randomEndpointNodeID: report.MakeNode(randomEndpointNodeID).
- WithTopology(report.Endpoint).WithAdjacent(serverEndpointNodeID),
- serverEndpointNodeID: report.MakeNode(serverEndpointNodeID).
- WithTopology(report.Endpoint),
- container1EndpointNodeID: report.MakeNode(container1EndpointNodeID).
- WithTopology(report.Endpoint).WithAdjacent(duplicatedEndpointNodeID),
- duplicatedEndpointNodeID: report.MakeNode(duplicatedEndpointNodeID).
- WithTopology(report.Endpoint),
- },
- },
- Container: report.Topology{
- Nodes: report.Nodes{
- container1NodeID: report.MakeNodeWith(container1NodeID, map[string]string{
- report.DockerContainerID: container1ID,
- report.DockerContainerName: container1Name,
- report.HostNodeID: serverHostNodeID,
- }).
- WithSets(report.MakeSets().
- Add(report.DockerContainerIPs, report.MakeStringSet(container1IP)).
- Add(report.DockerContainerIPsWithScopes, report.MakeStringSet(report.MakeAddressNodeID("", container1IP))).
- Add(report.DockerContainerPorts, report.MakeStringSet(fmt.Sprintf("%s:%s->%s/tcp", serverIP, serverPort, serverPort))),
- ).WithTopology(report.Container),
- container2NodeID: report.MakeNodeWith(container2NodeID, map[string]string{
- report.DockerContainerID: container2ID,
- report.DockerContainerName: container2Name,
- report.HostNodeID: serverHostNodeID,
- }).
- WithSets(report.MakeSets().
- Add(report.DockerContainerIPs, report.MakeStringSet(container2IP)).
- Add(report.DockerContainerIPsWithScopes, report.MakeStringSet(report.MakeAddressNodeID("", container2IP))),
- ).WithTopology(report.Container),
- pauseContainerNodeID: report.MakeNodeWith(pauseContainerNodeID, map[string]string{
- report.DockerContainerID: pauseContainerID,
- report.DockerContainerName: pauseContainerName,
- report.HostNodeID: serverHostNodeID,
- }).
- WithSets(report.MakeSets().
- Add(report.DockerContainerIPs, report.MakeStringSet(pauseContainerIP)).
- Add(report.DockerContainerIPsWithScopes, report.MakeStringSet(report.MakeAddressNodeID("", pauseContainerIP))),
- ).WithTopology(report.Container).WithLatest(report.DoesNotMakeConnections, mtime.Now(), ""),
- },
- },
- Host: report.Topology{
- Nodes: report.Nodes{
- serverHostNodeID: report.MakeNodeWith(serverHostNodeID, map[string]string{
- report.HostNodeID: serverHostNodeID,
- }).
- WithSets(report.MakeSets().
- Add(report.HostLocalNetworks, report.MakeStringSet("192.168.0.0/16")),
- ).WithTopology(report.Host),
- },
- },
- }
- )
- func TestShortLivedInternetNodeConnections(t *testing.T) {
- have := utils.Prune(render.ContainerWithImageNameRenderer.Render(context.Background(), rpt).Nodes)
- // Conntracked-only connections from the internet should be assigned to the internet pseudonode
- internet, ok := have[render.IncomingInternetID]
- if !ok {
- t.Fatal("Expected output to have an incoming internet node")
- }
- if !internet.Adjacency.Contains(container1NodeID) {
- t.Errorf("Expected internet node to have adjacency to %s, but only had %v", container1NodeID, internet.Adjacency)
- }
- }
- func TestPauseContainerDiscarded(t *testing.T) {
- have := utils.Prune(render.ContainerWithImageNameRenderer.Render(context.Background(), rpt).Nodes)
- // There should only be a connection from container1 and the destination should be container2
- container1, ok := have[container1NodeID]
- if !ok {
- t.Fatal("Expected output to have container1")
- }
- if len(container1.Adjacency) != 1 || !container1.Adjacency.Contains(container2NodeID) {
- t.Errorf("Expected container1 to have a unique adjacency to %s, but instead had %v", container2NodeID, container1.Adjacency)
- }
- }
|