Merge pull request #102 from mpeuster/master
[osm/vim-emu.git] / src / emuvim / test / unittests / test_sonata_dummy_gatekeeper.py
1 import time
2 import requests
3 import json
4 import os
5 import unittest
6 from emuvim.test.base import SimpleTestTopology
7 from emuvim.api.sonata import SonataDummyGatekeeperEndpoint
8
9 PACKAGE_PATH = "misc/sonata-demo-docker.son"
10
11
12 class testSonataDummyGatekeeper(SimpleTestTopology):
13
14 def testAPI(self):
15 # create network
16 self.createNet(nswitches=0, ndatacenter=2, nhosts=2, ndockers=0)
17 # setup links
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)
26 sdkg1.start()
27 # start Mininet network
28 self.startNet()
29 time.sleep(1)
30
31 print "starting tests"
32 # board package
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)
37
38 # instantiate service
39 service_uuid = json.loads(r.text).get("service_uuid")
40 r2 = requests.post("http://127.0.0.1:5000/instantiations", data=json.dumps({"service_uuid": service_uuid}))
41 self.assertEqual(r2.status_code, 200)
42
43 # give the emulator some time to instantiate everything
44 time.sleep(2)
45
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)
51
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
62 self.stopNet()
63
64