]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Add API tests for Neutron DVR extension
authorarmando-migliaccio <armamig@gmail.com>
Tue, 24 Mar 2015 18:30:08 +0000 (11:30 -0700)
committerarmando-migliaccio <armamig@gmail.com>
Thu, 2 Apr 2015 00:50:50 +0000 (17:50 -0700)
This patch adds a number of positive and negative tests for
the DVR functionality implemented by Neutron.

Generated using:

./tools/copy_api_tests_from_tempest.sh [path to tempest working directory]

Change-Id: Ia300b736250249ba54bd8fefa1307e6898f71652

neutron/tests/api/base.py
neutron/tests/api/base_routers.py
neutron/tests/api/test_routers.py
neutron/tests/api/test_routers_negative.py

index 8f38be085c535cd09cc3105907751e755febbfb9..e0c7386611ba3bbf3e59c1cb335e0618fd08680c 100644 (file)
@@ -268,7 +268,8 @@ class BaseNetworkTest(neutron.tests.tempest.test.BaseTestCase):
 
     @classmethod
     def create_router(cls, router_name=None, admin_state_up=False,
-                      external_network_id=None, enable_snat=None):
+                      external_network_id=None, enable_snat=None,
+                      **kwargs):
         ext_gw_info = {}
         if external_network_id:
             ext_gw_info['network_id'] = external_network_id
@@ -276,7 +277,7 @@ class BaseNetworkTest(neutron.tests.tempest.test.BaseTestCase):
             ext_gw_info['enable_snat'] = enable_snat
         body = cls.client.create_router(
             router_name, external_gateway_info=ext_gw_info,
-            admin_state_up=admin_state_up)
+            admin_state_up=admin_state_up, **kwargs)
         router = body['router']
         cls.routers.append(router)
         return router
index c800a2e7262c29201d4ea75e3ed4bea082100ac6..bbd069d3306b6b7d20b775f23353bcecab7d3927 100644 (file)
@@ -25,8 +25,21 @@ class BaseRouterTest(base.BaseAdminNetworkTest):
     def resource_setup(cls):
         super(BaseRouterTest, cls).resource_setup()
 
-    def _delete_router(self, router_id):
-        self.client.delete_router(router_id)
+    def _cleanup_router(self, router):
+        self.delete_router(router)
+        self.routers.remove(router)
+
+    def _create_router(self, name, admin_state_up=False,
+                       external_network_id=None, enable_snat=None):
+        # associate a cleanup with created routers to avoid quota limits
+        router = self.create_router(name, admin_state_up,
+                                    external_network_id, enable_snat)
+        self.addCleanup(self._cleanup_router, router)
+        return router
+
+    def _delete_router(self, router_id, network_client=None):
+        client = network_client or self.client
+        client.delete_router(router_id)
         # Asserting that the router is not found in the list
         # after deletion
         list_body = self.client.list_routers()
index fc5efceda3792e1381ef6e14504f96921b9967c5..7acde777d9133c8b3c4c832440ad26745b0fdcd3 100644 (file)
@@ -38,18 +38,6 @@ class RoutersTest(base.BaseRouterTest):
                            if cls._ip_version == 4 else
                            CONF.network.tenant_network_v6_cidr)
 
-    def _cleanup_router(self, router):
-        self.delete_router(router)
-        self.routers.remove(router)
-
-    def _create_router(self, name, admin_state_up=False,
-                       external_network_id=None, enable_snat=None):
-        # associate a cleanup with created routers to avoid quota limits
-        router = self.create_router(name, admin_state_up,
-                                    external_network_id, enable_snat)
-        self.addCleanup(self._cleanup_router, router)
-        return router
-
     @test.attr(type='smoke')
     @test.idempotent_id('f64403e2-8483-4b34-8ccd-b09a87bcc68c')
     def test_create_show_list_update_delete_router(self):
@@ -357,3 +345,37 @@ class RoutersTest(base.BaseRouterTest):
 
 class RoutersIpV6Test(RoutersTest):
     _ip_version = 6
+
+
+class DvrRoutersTest(base.BaseRouterTest):
+
+    @classmethod
+    def skip_checks(cls):
+        super(DvrRoutersTest, cls).skip_checks()
+        if not test.is_extension_enabled('dvr', 'network'):
+            msg = "DVR extension not enabled."
+            raise cls.skipException(msg)
+
+    @test.attr(type='smoke')
+    @test.idempotent_id('141297aa-3424-455d-aa8d-f2d95731e00a')
+    def test_create_distributed_router(self):
+        name = data_utils.rand_name('router')
+        create_body = self.admin_client.create_router(
+            name, distributed=True)
+        self.addCleanup(self._delete_router,
+                        create_body['router']['id'],
+                        self.admin_client)
+        self.assertTrue(create_body['router']['distributed'])
+
+    @test.attr(type='smoke')
+    @test.idempotent_id('644d7a4a-01a1-4b68-bb8d-0c0042cb1729')
+    def test_convert_centralized_router(self):
+        router = self._create_router(data_utils.rand_name('router'))
+        self.assertNotIn('distributed', router)
+        update_body = self.admin_client.update_router(router['id'],
+                                                      distributed=True)
+        self.assertTrue(update_body['router']['distributed'])
+        show_body = self.admin_client.show_router(router['id'])
+        self.assertTrue(show_body['router']['distributed'])
+        show_body = self.client.show_router(router['id'])
+        self.assertNotIn('distributed', show_body['router'])
index 0688e15ffa9795f23d71b917e6d314f51801ffb6..f87f4ae1acd807637fa680ba0bfc2385ab9aa90a 100644 (file)
@@ -14,6 +14,8 @@
 #    under the License.
 
 import netaddr
+import testtools
+
 from tempest_lib.common.utils import data_utils
 from tempest_lib import exceptions as lib_exc
 
@@ -110,3 +112,27 @@ class RoutersNegativeTest(base.BaseRouterTest):
 
 class RoutersNegativeIpV6Test(RoutersNegativeTest):
     _ip_version = 6
+
+
+class DvrRoutersNegativeTest(base.BaseRouterTest):
+
+    @classmethod
+    def skip_checks(cls):
+        super(DvrRoutersNegativeTest, cls).skip_checks()
+        if not test.is_extension_enabled('dvr', 'network'):
+            msg = "DVR extension not enabled."
+            raise cls.skipException(msg)
+
+    @classmethod
+    def resource_setup(cls):
+        super(DvrRoutersNegativeTest, cls).resource_setup()
+        cls.router = cls.create_router(data_utils.rand_name('router'))
+        cls.network = cls.create_network()
+        cls.subnet = cls.create_subnet(cls.network)
+
+    @test.attr(type=['negative', 'smoke'])
+    @test.idempotent_id('4990b055-8fc7-48ab-bba7-aa28beaad0b9')
+    def test_router_create_tenant_distributed_returns_forbidden(self):
+        with testtools.ExpectedException(lib_exc.Forbidden):
+            self.create_router(
+                data_utils.rand_name('router'), distributed=True)