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, controller
=Controller
, **kwargs
):
33 Creates a Mininet instance and automatically adds some
36 Attention, we should always use Mininet's default controller
37 for our tests. Only use other controllers if you want to test
38 specific controller functionality.
40 self
.net
= DCNetwork(controller
=controller
, **kwargs
)
43 # start from s1 because ovs does not like to have dpid = 0
44 # and switch name-number is being used by mininet to set the dpid
45 for i
in range(1, nswitches
+1):
46 self
.s
.append(self
.net
.addSwitch('s%d' % i
))
47 # if specified, chain all switches
49 for i
in range(0, len(self
.s
) - 1):
50 self
.net
.addLink(self
.s
[i
], self
.s
[i
+ 1])
51 # add some data centers
52 for i
in range(0, ndatacenter
):
54 self
.net
.addDatacenter(
56 metadata
={"unittest_dc": i
}))
58 for i
in range(0, nhosts
):
59 self
.h
.append(self
.net
.addHost('h%d' % i
))
61 for i
in range(0, ndockers
):
62 self
.d
.append(self
.net
.addDocker('d%d' % i
, dimage
="ubuntu:trusty"))
70 def getDockerCli(self
):
72 Helper to interact with local docker instance.
74 if self
.docker_cli
is None:
75 self
.docker_cli
= docker
.Client(
76 base_url
='unix://var/run/docker.sock')
77 return self
.docker_cli
79 def getContainernetContainers(self
):
81 List the containers managed by containernet
83 return self
.getDockerCli().containers(filters
={"label": "com.containernet"})
92 # make sure that all pending docker containers are killed
93 with
open(os
.devnull
, 'w') as devnull
:
95 "sudo docker rm -f $(sudo docker ps --filter 'label=com.containernet' -a -q)",