X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Ftest%2Funittests%2Ftest_emulator.py;h=80ac1d1a24fc2a23890eb5d3e16de38f9c72d54c;hb=581bb196e383ec7b6c01b834688b741d8b9e5a34;hp=e2c3b6b1647d0bd3a770890a689ff8951c714fdf;hpb=241e3e951c4871d956c29887ab101adce4817363;p=osm%2Fvim-emu.git diff --git a/src/emuvim/test/unittests/test_emulator.py b/src/emuvim/test/unittests/test_emulator.py index e2c3b6b..80ac1d1 100755 --- a/src/emuvim/test/unittests/test_emulator.py +++ b/src/emuvim/test/unittests/test_emulator.py @@ -90,7 +90,7 @@ class testEmulatorTopology( SimpleTestTopology ): class testEmulatorNetworking( SimpleTestTopology ): - def testSDNChaining(self): + def testSDNChainingSingleService(self): """ Create a two data centers and interconnect them with additional switches between them. @@ -113,7 +113,7 @@ class testEmulatorNetworking( SimpleTestTopology ): vnf1 = self.dc[0].startCompute("vnf1", network=[{'id':'intf1', 'ip':'10.0.10.1/24'}]) vnf2 = self.dc[1].startCompute("vnf2", network=[{'id':'intf2', 'ip':'10.0.10.2/24'}]) # check number of running nodes - self.assertTrue(len(self.getDockernetContainers()) == 2) + self.assertTrue(len(self.getContainernetContainers()) == 2) self.assertTrue(len(self.net.hosts) == 2) self.assertTrue(len(self.net.switches) == 5) # check status @@ -137,6 +137,64 @@ class testEmulatorNetworking( SimpleTestTopology ): # stop Mininet network self.stopNet() + def testSDNChainingMultiService(self): + """ + Create a two data centers and interconnect them with additional + switches between them. + Uses Ryu SDN controller. + Setup 2 services and setup isolated paths between them + Delete only the first service, and check that other one still works + """ + # create network + self.createNet( + nswitches=3, ndatacenter=2, nhosts=0, ndockers=0, + autolinkswitches=True, + controller=RemoteController, + enable_learning=False) + # setup links + self.net.addLink(self.dc[0], self.s[0]) + self.net.addLink(self.s[2], self.dc[1]) + # start Mininet network + self.startNet() + + ## First Service + # add compute resources + vnf1 = self.dc[0].startCompute("vnf1", network=[{'id': 'intf1', 'ip': '10.0.10.1/24'}]) + vnf2 = self.dc[1].startCompute("vnf2", network=[{'id': 'intf2', 'ip': '10.0.10.2/24'}]) + # setup links + self.net.setChain('vnf1', 'vnf2', 'intf1', 'intf2', bidirectional=True, cmd='add-flow', cookie=1) + # check connectivity by using ping + self.assertTrue(self.net.ping([vnf1, vnf2]) <= 0.0) + + ## Second Service + # add compute resources + vnf11 = self.dc[0].startCompute("vnf11", network=[{'id': 'intf1', 'ip': '10.0.20.1/24'}]) + vnf22 = self.dc[1].startCompute("vnf22", network=[{'id': 'intf2', 'ip': '10.0.20.2/24'}]) + + # check number of running nodes + self.assertTrue(len(self.getContainernetContainers()) == 4) + self.assertTrue(len(self.net.hosts) == 4) + self.assertTrue(len(self.net.switches) == 5) + + # setup links + self.net.setChain('vnf11', 'vnf22', 'intf1', 'intf2', bidirectional=True, cmd='add-flow', cookie=2) + # check connectivity by using ping + self.assertTrue(self.net.ping([vnf11, vnf22]) <= 0.0) + # check first service cannot ping second service + self.assertTrue(self.net.ping([vnf1, vnf22]) > 0.0) + self.assertTrue(self.net.ping([vnf2, vnf11]) > 0.0) + + # delete the first service chain + self.net.setChain('vnf1', 'vnf2', 'intf1', 'intf2', bidirectional=True, cmd='del-flows', cookie=1) + # check connectivity of first service is down + self.assertTrue(self.net.ping([vnf1, vnf2]) > 0.0) + #time.sleep(100) + # check connectivity of second service is still up + self.assertTrue(self.net.ping([vnf11, vnf22]) <= 0.0) + + # stop Mininet network + self.stopNet() + #@unittest.skip("disabled compute tests for development") class testEmulatorCompute( SimpleTestTopology ): """