2 Helper module that implements helpers for test implementations.
9 from emuvim
.dcemulator
.net
import DCNetwork
10 from mininet
.clean
import cleanup
12 class SimpleTestTopology(unittest
.TestCase
):
14 Helper class to do basic test setups.
15 s1 -- s2 -- s3 -- ... -- sN
18 def __init__(self
, *args
, **kwargs
):
20 self
.s
= [] # list of switches
21 self
.h
= [] # list of hosts
22 self
.d
= [] # list of docker containers
23 self
.dc
= [] # list of data centers
24 self
.docker_cli
= None
25 super(SimpleTestTopology
, self
).__init
__(*args
, **kwargs
)
29 nswitches
=0, ndatacenter
=0, nhosts
=0, ndockers
=0,
30 autolinkswitches
=False):
32 Creates a Mininet instance and automatically adds some
35 self
.net
= net
= DCNetwork()
38 for i
in range(0, nswitches
):
39 self
.s
.append(self
.net
.addSwitch('s%d' % i
))
40 # if specified, chain all switches
42 for i
in range(0, len(self
.s
) - 1):
43 self
.net
.addLink(self
.s
[i
], self
.s
[i
+ 1])
44 # add some data centers
45 for i
in range(0, ndatacenter
):
47 self
.net
.addDatacenter(
49 metadata
={"unittest_dc": i
}))
51 for i
in range(0, nhosts
):
52 self
.h
.append(self
.net
.addHost('h%d' % i
))
54 for i
in range(0, ndockers
):
55 self
.d
.append(self
.net
.addDocker('d%d' % i
, dimage
="ubuntu"))
63 def getDockerCli(self
):
65 Helper to interact with local docker instance.
67 if self
.docker_cli
is None:
68 self
.docker_cli
= docker
.Client(
69 base_url
='unix://var/run/docker.sock')
70 return self
.docker_cli
72 def getDockernetContainers(self
):
74 List the containers managed by dockernet
76 return self
.getDockerCli().containers(filters
={"label": "com.dockernet"})
85 # make sure that all pending docker containers are killed
86 with
open(os
.devnull
, 'w') as devnull
:
88 "sudo docker rm -f $(sudo docker ps --filter 'label=com.dockernet' -a -q)",