6 from emuvim
.test
.base
import SimpleTestTopology
7 from emuvim
.api
.sonata
import SonataDummyGatekeeperEndpoint
9 PACKAGE_PATH
= "misc/sonata-demo-docker.son"
12 class testSonataDummyGatekeeper(SimpleTestTopology
):
16 self
.createNet(nswitches
=0, ndatacenter
=2, nhosts
=2, ndockers
=0)
18 self
.net
.addLink(self
.dc
[0], self
.h
[0])
19 self
.net
.addLink(self
.dc
[0], self
.dc
[1])
20 self
.net
.addLink(self
.h
[1], self
.dc
[1])
21 # connect dummy GK to data centers
22 sdkg1
= SonataDummyGatekeeperEndpoint("0.0.0.0", 5000)
23 sdkg1
.connectDatacenter(self
.dc
[0])
24 sdkg1
.connectDatacenter(self
.dc
[1])
25 # run the dummy gatekeeper (in another thread, don't block)
27 # start Mininet network
31 print "starting tests"
33 files
= {"package": open(PACKAGE_PATH
, "rb")}
34 r
= requests
.post("http://127.0.0.1:5000/packages", files
=files
)
35 self
.assertEqual(r
.status_code
, 200)
36 self
.assertTrue(json
.loads(r
.text
).get("service_uuid") is not None)
39 service_uuid
= json
.loads(r
.text
).get("service_uuid")
40 r2
= requests
.post("http://127.0.0.1:5000/instantiations", json
={"service_uuid": service_uuid
})
41 self
.assertEqual(r2
.status_code
, 200)
43 # give the emulator some time to instantiate everything
46 # check get request APIs
47 r3
= requests
.get("http://127.0.0.1:5000/packages")
48 self
.assertEqual(len(json
.loads(r3
.text
).get("service_uuid_list")), 1)
49 r4
= requests
.get("http://127.0.0.1:5000/instantiations")
50 self
.assertEqual(len(json
.loads(r4
.text
).get("service_instance_list")), 1)
52 # check number of running nodes
53 self
.assertTrue(len(self
.getContainernetContainers()) == 3)
54 self
.assertTrue(len(self
.net
.hosts
) == 5)
55 self
.assertTrue(len(self
.net
.switches
) == 2)
56 # check compute list result
57 self
.assertTrue(len(self
.dc
[0].listCompute()) == 3)
58 # check connectivity by using ping
59 for vnf
in self
.dc
[0].listCompute():
60 self
.assertTrue(self
.net
.ping([self
.h
[0], vnf
]) <= 0.0)
61 # stop Mininet network