Explorar el Código

Add tests for router connectivity.

Enis Afgan hace 9 años
padre
commit
0de8554fb3
Se han modificado 2 ficheros con 33 adiciones y 4 borrados
  1. 1 1
      cloudbridge/cloud/providers/aws/resources.py
  2. 32 3
      test/test_network_service.py

+ 1 - 1
cloudbridge/cloud/providers/aws/resources.py

@@ -1115,7 +1115,7 @@ class AWSRouter(BaseRouter):
             sn = self._provider.vpc_conn.get_all_subnets([subnet_id])[0]
             self._route_table = self._provider.vpc_conn.get_all_route_tables(
                 filters={'vpc-id': sn.vpc_id})[0]
-        return self._provider.vpc_conn.remove_route(
+        return self._provider.vpc_conn.delete_route(
             self._route_table.id, self._ROUTE_CIDR)
 
 

+ 32 - 3
test/test_network_service.py

@@ -140,11 +140,21 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
                         sn.cidr_block, cidr))
 
     def test_crud_router(self):
+
+        def _cleanup(net, subnet, router):
+            router.remove_route(subnet.id)
+            router.detach_network()
+            router.delete()
+            subnet.delete()
+            net.delete()
+
         name = 'cbtestrouter-{0}'.format(uuid.uuid4())
         router = self.provider.network.create_router(name=name)
-        with helpers.cleanup_action(
-            lambda: router.delete()
-        ):
+        net = self.provider.network.create(name=name)
+        cidr = '10.0.1.0/24'
+        sn = net.create_subnet(cidr_block=cidr, name=name)
+        with helpers.cleanup_action(lambda: _cleanup(net, sn, router)):
+            # Check basic router properties
             self.assertIn(
                 router, self.provider.network.routers(),
                 "Router {0} should exist in the router list {1}.".format(
@@ -165,6 +175,25 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
                 "Router {0} should not be assoc. with a network {1}".format(
                     router.id, router.network_id))
 
+            # Check router connectivity
+            # On OpenStack only one network is external and on AWS every
+            # network is external, yet we need to use the one we've created?!
+            if self.provider.PROVIDER_ID == 'openstack':
+                for n in self.provider.networks.list():
+                    if n.external:
+                        external_net = n
+                        break
+            else:
+                external_net = net
+            router.attach_network(external_net.id)
+            router.refresh()
+            self.assertEqual(
+                router.network_id, external_net.id,
+                "Router should be attached to network {0}, not {1}".format(
+                    external_net.id, router.network_id))
+            router.add_route(sn.id)
+            # TODO: add a check for routes after that's been implemented
+
         routerl = self.provider.network.routers()
         found_router = [r for r in routerl if r.name == name]
         self.assertEqual(