5 from emuvim
.test
.base
import SimpleTestTopology
6 from emuvim
.api
.sonata
import SonataDummyGatekeeperEndpoint
10 class testSonataDummyGatekeeper(SimpleTestTopology
):
13 # ATTENTION: DEACTIVATED this test in CI env. due to Docker build errors that will disappear as soon as the new
14 # demo package with pre-build containers becomes available
15 if os
.environ
.get("SON_EMU_IN_DOCKER") is not None:
18 self
.createNet(nswitches
=0, ndatacenter
=2, nhosts
=2, ndockers
=0)
20 self
.net
.addLink(self
.dc
[0], self
.h
[0])
21 self
.net
.addLink(self
.dc
[0], self
.dc
[1])
22 self
.net
.addLink(self
.h
[1], self
.dc
[1])
23 # connect dummy GK to data centers
24 sdkg1
= SonataDummyGatekeeperEndpoint("0.0.0.0", 5000)
25 sdkg1
.connectDatacenter(self
.dc
[0])
26 sdkg1
.connectDatacenter(self
.dc
[1])
27 # run the dummy gatekeeper (in another thread, don't block)
29 # start Mininet network
33 # download example from GitHub
34 print "downloading latest son-demo.son from GitHub"
37 "http://github.com/sonata-nfv/son-schema/blob/master/package-descriptor/examples/sonata-demo.son?raw=true",
42 print "starting tests"
44 files
= {"package": open("son-demo.son", "rb")}
45 r
= requests
.post("http://127.0.0.1:5000/packages", files
=files
)
46 self
.assertEqual(r
.status_code
, 200)
47 self
.assertTrue(r
.json().get("service_uuid") is not None)
48 os
.remove("son-demo.son")
51 service_uuid
= r
.json().get("service_uuid")
52 r2
= requests
.post("http://127.0.0.1:5000/instantiations", json
={"service_uuid": service_uuid
})
53 self
.assertEqual(r2
.status_code
, 200)
55 # give the emulator some time to instantiate everything
58 # check get request APIs
59 r3
= requests
.get("http://127.0.0.1:5000/packages")
60 self
.assertEqual(len(r3
.json().get("service_uuid_list")), 1)
61 r4
= requests
.get("http://127.0.0.1:5000/instantiations")
62 self
.assertEqual(len(r4
.json().get("service_instance_list")), 1)
64 # check number of running nodes
65 self
.assertTrue(len(self
.getDockernetContainers()) == 3)
66 self
.assertTrue(len(self
.net
.hosts
) == 5)
67 self
.assertTrue(len(self
.net
.switches
) == 2)
68 # check compute list result
69 self
.assertTrue(len(self
.dc
[0].listCompute()) == 3)
70 # check connectivity by using ping
71 for vnf
in self
.dc
[0].listCompute():
72 self
.assertTrue(self
.net
.ping([self
.h
[0], vnf
]) <= 0.0)
73 # stop Mininet network