2 Helper module that implements helpers for test implementations.
9 from emuvim
.dcemulator
.net
import DCNetwork
10 from mininet
.clean
import cleanup
11 from mininet
.node
import Controller
13 class SimpleTestTopology(unittest
.TestCase
):
15 Helper class to do basic test setups.
16 s1 -- s2 -- s3 -- ... -- sN
19 def __init__(self
, *args
, **kwargs
):
21 self
.s
= [] # list of switches
22 self
.h
= [] # list of hosts
23 self
.d
= [] # list of docker containers
24 self
.dc
= [] # list of data centers
25 self
.docker_cli
= None
26 super(SimpleTestTopology
, self
).__init
__(*args
, **kwargs
)
30 nswitches
=0, ndatacenter
=0, nhosts
=0, ndockers
=0,
31 autolinkswitches
=False):
33 Creates a Mininet instance and automatically adds some
36 self
.net
= DCNetwork()
39 for i
in range(0, nswitches
):
40 self
.s
.append(self
.net
.addSwitch('s%d' % i
))
41 # if specified, chain all switches
43 for i
in range(0, len(self
.s
) - 1):
44 self
.net
.addLink(self
.s
[i
], self
.s
[i
+ 1])
45 # add some data centers
46 for i
in range(0, ndatacenter
):
48 self
.net
.addDatacenter(
50 metadata
={"unittest_dc": i
}))
52 for i
in range(0, nhosts
):
53 self
.h
.append(self
.net
.addHost('h%d' % i
))
55 for i
in range(0, ndockers
):
56 self
.d
.append(self
.net
.addDocker('d%d' % i
, dimage
="ubuntu"))
64 def getDockerCli(self
):
66 Helper to interact with local docker instance.
68 if self
.docker_cli
is None:
69 self
.docker_cli
= docker
.Client(
70 base_url
='unix://var/run/docker.sock')
71 return self
.docker_cli
73 def getDockernetContainers(self
):
75 List the containers managed by dockernet
77 return self
.getDockerCli().containers(filters
={"label": "com.dockernet"})
86 # make sure that all pending docker containers are killed
87 with
open(os
.devnull
, 'w') as devnull
:
89 "sudo docker rm -f $(sudo docker ps --filter 'label=com.dockernet' -a -q)",