]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Remove some duplicate unit tests
authorKevin Benton <blak111@gmail.com>
Thu, 18 Sep 2014 13:52:13 +0000 (06:52 -0700)
committerKevin Benton <blak111@gmail.com>
Sat, 11 Oct 2014 01:26:14 +0000 (18:26 -0700)
There are several locations where some unit test mixins are
incorrectly used multiple times with an otherwise same configuration,
which results in pointless re-runs of the same unit test. Similarily,
there are a few tests defined in classes inherited by multiple tests
that don't change behavior in the child tests so they are run multiple
times as well.

This patch eliminates the duplicates and moves some test cases from
their parent class into a subclass when they don't need to be run multiple
times. The result is 221 fewer test runs (~1.5% of the tests run).

Closes-Bug: #1374836
Change-Id: I292091488cd944510fa1250920d41be2a50dabaf

neutron/tests/unit/cisco/n1kv/test_n1kv_plugin.py
neutron/tests/unit/embrane/test_embrane_l3_plugin.py
neutron/tests/unit/ml2/drivers/mech_sriov/test_mech_sriov_nic_switch.py
neutron/tests/unit/ml2/drivers/test_mech_mlnx.py
neutron/tests/unit/ml2/test_mechanism_odl.py
neutron/tests/unit/nuage/test_nuage_plugin.py
neutron/tests/unit/nuage/test_syncmanager.py

index 0a64ba1090956ed2b6a71a0bcc692e277fa575ae..7a3ba50fafa53011d3825242086f51354da1b1d2 100644 (file)
@@ -237,20 +237,6 @@ class N1kvPluginTestCase(test_plugin.NeutronDbPluginV2TestCase):
         # Restore the original RESOURCE_ATTRIBUTE_MAP
         attributes.RESOURCE_ATTRIBUTE_MAP = self.saved_attr_map
 
-    def test_plugin(self):
-        self._make_network('json',
-                           'some_net',
-                           True,
-                           tenant_id=self.tenant_id,
-                           set_context=True)
-
-        req = self.new_list_request('networks', params="fields=tenant_id")
-        req.environ['neutron.context'] = context.Context('', self.tenant_id)
-        res = req.get_response(self.api)
-        self.assertEqual(res.status_int, 200)
-        body = self.deserialize('json', res)
-        self.assertIn('tenant_id', body['networks'][0])
-
 
 class TestN1kvNetworkProfiles(N1kvPluginTestCase):
     def _prepare_net_profile_data(self,
@@ -944,6 +930,20 @@ class TestN1kvPolicyProfiles(N1kvPluginTestCase):
 class TestN1kvNetworks(test_plugin.TestNetworksV2,
                        N1kvPluginTestCase):
 
+    def test_plugin(self):
+        self._make_network('json',
+                           'some_net',
+                           True,
+                           tenant_id=self.tenant_id,
+                           set_context=True)
+
+        req = self.new_list_request('networks', params="fields=tenant_id")
+        req.environ['neutron.context'] = context.Context('', self.tenant_id)
+        res = req.get_response(self.api)
+        self.assertEqual(res.status_int, 200)
+        body = self.deserialize('json', res)
+        self.assertIn('tenant_id', body['networks'][0])
+
     def _prepare_net_data(self, net_profile_id):
         return {'network': {'name': 'net1',
                             n1kv.PROFILE_ID: net_profile_id,
index 849096fc59bbe12f64c934c7a22d5615645bd0e5..3aa1773b844744eaa6655b3a369fead139fb0228 100644 (file)
@@ -17,19 +17,14 @@ from oslo.config import cfg
 
 from neutron.plugins.embrane.common import config  # noqa
 from neutron.tests.unit import test_extension_extraroute as extraroute_test
-from neutron.tests.unit import test_l3_plugin as router_test
 
 PLUGIN_NAME = ('neutron.plugins.embrane.plugins.embrane_fake_plugin.'
                'EmbraneFakePlugin')
 
 
-class TestEmbraneL3NatDBTestCase(router_test.L3NatDBIntTestCase):
+class TestEmbraneL3NatDBTestCase(extraroute_test.ExtraRouteDBIntTestCase):
     _plugin_name = PLUGIN_NAME
 
     def setUp(self):
         cfg.CONF.set_override('admin_password', "admin123", 'heleos')
         super(TestEmbraneL3NatDBTestCase, self).setUp()
-
-
-class ExtraRouteDBTestCase(extraroute_test.ExtraRouteDBIntTestCase):
-    _plugin_name = PLUGIN_NAME
index e854f06840cf91f3a97d285af1bdf4fcd64d0c7e..0de8e67f4251bf18f112419a654b1e437258c478 100644 (file)
@@ -82,6 +82,9 @@ class SriovNicSwitchMechanismBaseTestCase(base.AgentMechanismBaseTestCase):
         self.driver = mech_driver.SriovNicSwitchMechanismDriver()
         self.driver.initialize()
 
+
+class SriovSwitchMechGenericTestCase(SriovNicSwitchMechanismBaseTestCase,
+                                     base.AgentMechanismGenericTestCase):
     def test_check_segment(self):
         """Validate the check_segment call."""
         segment = {'api.NETWORK_TYPE': ""}
@@ -92,11 +95,6 @@ class SriovNicSwitchMechanismBaseTestCase(base.AgentMechanismBaseTestCase):
         self.assertFalse(self.driver.check_segment(segment))
 
 
-class SriovSwitchMechGenericTestCase(SriovNicSwitchMechanismBaseTestCase,
-                                     base.AgentMechanismGenericTestCase):
-    pass
-
-
 class SriovMechVlanTestCase(SriovNicSwitchMechanismBaseTestCase,
                             base.AgentMechanismBaseTestCase):
     VLAN_SEGMENTS = [{api.ID: 'unknown_segment_id',
index 3b880572476f72820ac95b8cbe0c3ae44aedb0f4..5cf13ae302f7a1cc5b6f05bd5ba794a9b01d9bd2 100644 (file)
@@ -62,11 +62,6 @@ class MlnxMechanismFlatTestCase(MlnxMechanismBaseTestCase,
     pass
 
 
-class MlnxMechanismVlanTestCase(MlnxMechanismBaseTestCase,
-                                base.AgentMechanismVlanTestCase):
-    pass
-
-
 class MlnxMechanismVnicTypeTestCase(MlnxMechanismBaseTestCase,
                                     base.AgentMechanismVlanTestCase):
     def _check_vif_type_for_vnic_type(self, vnic_type,
index 8d87eb5a6191981bd03306ec0231c9ee5ae514f5..4d3ba0beb2a9fb5025d7c4f615f98904a34d7e55 100644 (file)
@@ -46,7 +46,6 @@ class OpenDaylightTestCase(test_plugin.NeutronDbPluginV2TestCase):
 
         super(OpenDaylightTestCase, self).setUp(PLUGIN_NAME)
         self.port_create_status = 'DOWN'
-        self.segment = {'api.NETWORK_TYPE': ""}
         self.mech = mechanism_odl.OpenDaylightMechanismDriver()
         mechanism_odl.OpenDaylightMechanismDriver.sendjson = (
             self.check_sendjson)
@@ -54,22 +53,6 @@ class OpenDaylightTestCase(test_plugin.NeutronDbPluginV2TestCase):
     def check_sendjson(self, method, urlpath, obj, ignorecodes=[]):
         self.assertFalse(urlpath.startswith("http://"))
 
-    def test_check_segment(self):
-        """Validate the check_segment call."""
-        self.segment[api.NETWORK_TYPE] = constants.TYPE_LOCAL
-        self.assertTrue(self.mech.check_segment(self.segment))
-        self.segment[api.NETWORK_TYPE] = constants.TYPE_FLAT
-        self.assertFalse(self.mech.check_segment(self.segment))
-        self.segment[api.NETWORK_TYPE] = constants.TYPE_VLAN
-        self.assertTrue(self.mech.check_segment(self.segment))
-        self.segment[api.NETWORK_TYPE] = constants.TYPE_GRE
-        self.assertTrue(self.mech.check_segment(self.segment))
-        self.segment[api.NETWORK_TYPE] = constants.TYPE_VXLAN
-        self.assertTrue(self.mech.check_segment(self.segment))
-        # Validate a network type not currently supported
-        self.segment[api.NETWORK_TYPE] = 'mpls'
-        self.assertFalse(self.mech.check_segment(self.segment))
-
 
 class OpenDayLightMechanismConfigTests(testlib_api.SqlTestCase):
 
@@ -378,3 +361,20 @@ class OpenDaylightMechanismDriverTestCase(base.BaseTestCase):
                             requests.codes.not_implemented):
             self._test_delete_resource_postcommit(
                 'port', status_code, requests.exceptions.HTTPError)
+
+    def test_check_segment(self):
+        """Validate the check_segment call."""
+        segment = {'api.NETWORK_TYPE': ""}
+        segment[api.NETWORK_TYPE] = constants.TYPE_LOCAL
+        self.assertTrue(self.mech.check_segment(segment))
+        segment[api.NETWORK_TYPE] = constants.TYPE_FLAT
+        self.assertFalse(self.mech.check_segment(segment))
+        segment[api.NETWORK_TYPE] = constants.TYPE_VLAN
+        self.assertTrue(self.mech.check_segment(segment))
+        segment[api.NETWORK_TYPE] = constants.TYPE_GRE
+        self.assertTrue(self.mech.check_segment(segment))
+        segment[api.NETWORK_TYPE] = constants.TYPE_VXLAN
+        self.assertTrue(self.mech.check_segment(segment))
+        # Validate a network type not currently supported
+        segment[api.NETWORK_TYPE] = 'mpls'
+        self.assertFalse(self.mech.check_segment(segment))
index 37c062aff7b646c95703f2b32240a50401434833..424d7194f6d1c04e425524eae87d0c31d907c929 100644 (file)
@@ -41,7 +41,6 @@ from neutron.tests.unit import test_db_plugin
 from neutron.tests.unit import test_extension_extraroute as extraroute_test
 from neutron.tests.unit import test_extension_security_group as test_sg
 from neutron.tests.unit import test_extensions
-from neutron.tests.unit import test_l3_plugin
 
 
 API_EXT_PATH = os.path.dirname(extensions.__file__)
@@ -383,8 +382,83 @@ class TestNuagePluginPortBinding(NuagePluginV2TestCase,
                 self._check_response_no_portbindings(non_admin_port)
 
 
-class TestNuageL3NatTestCase(NuagePluginV2TestCase,
-                             test_l3_plugin.L3NatDBIntTestCase):
+class TestNuageExtrarouteTestCase(NuagePluginV2TestCase,
+                                  extraroute_test.ExtraRouteDBIntTestCase):
+
+    def test_router_update_with_dup_destination_address(self):
+        with self.router() as r:
+            with self.subnet(cidr='10.0.1.0/24') as s:
+                with self.port(subnet=s) as p:
+                    self._router_interface_action('add',
+                                                  r['router']['id'],
+                                                  None,
+                                                  p['port']['id'])
+
+                    routes = [{'destination': '135.207.0.0/16',
+                               'nexthop': '10.0.1.3'},
+                              {'destination': '135.207.0.0/16',
+                               'nexthop': '10.0.1.5'}]
+
+                    self._update('routers', r['router']['id'],
+                                 {'router': {'routes':
+                                             routes}},
+                                 expected_code=exc.HTTPBadRequest.code)
+
+                    # clean-up
+                    self._router_interface_action('remove',
+                                                  r['router']['id'],
+                                                  None,
+                                                  p['port']['id'])
+
+    def test_router_update_on_external_port(self):
+        with self.router() as r:
+            with self.subnet(cidr='10.0.1.0/24') as s:
+                self._set_net_external(s['subnet']['network_id'])
+                self._add_external_gateway_to_router(
+                    r['router']['id'],
+                    s['subnet']['network_id'])
+                body = self._show('routers', r['router']['id'])
+                net_id = body['router']['external_gateway_info']['network_id']
+                self.assertEqual(net_id, s['subnet']['network_id'])
+                port_res = self._list_ports(
+                    'json',
+                    200,
+                    s['subnet']['network_id'],
+                    tenant_id=r['router']['tenant_id'],
+                    device_own=constants.DEVICE_OWNER_ROUTER_GW)
+                port_list = self.deserialize('json', port_res)
+                # The plugin will create 1 port
+                self.assertEqual(2, len(port_list['ports']))
+
+                routes = [{'destination': '135.207.0.0/16',
+                           'nexthop': '10.0.1.3'}]
+
+                body = self._update('routers', r['router']['id'],
+                                    {'router': {'routes':
+                                                routes}})
+
+                body = self._show('routers', r['router']['id'])
+                self.assertEqual(routes,
+                                 body['router']['routes'])
+
+                self._remove_external_gateway_from_router(
+                    r['router']['id'],
+                    s['subnet']['network_id'])
+                body = self._show('routers', r['router']['id'])
+                gw_info = body['router']['external_gateway_info']
+                self.assertIsNone(gw_info)
+
+    def test_floatingip_create_different_fixed_ip_same_port(self):
+        self._test_floatingip_create_different_fixed_ip_same_port()
+
+    def test_floatingip_update_different_router(self):
+        self._test_floatingip_update_different_router()
+
+    def test_floatingip_update_different_fixed_ip_same_port(self):
+        self._test_floatingip_update_different_fixed_ip_same_port()
+
+    def test_network_update_external_failure(self):
+        self._test_network_update_external_failure()
 
     def test_update_port_with_assoc_floatingip(self):
         with self.subnet(cidr='200.0.0.0/24') as public_sub:
@@ -465,85 +539,6 @@ class TestNuageRouterExtTestCase(NuagePluginV2TestCase):
         self.assertEqual(exc.HTTPCreated.code, router_res.status_int)
 
 
-class TestNuageExtrarouteTestCase(NuagePluginV2TestCase,
-                                  extraroute_test.ExtraRouteDBIntTestCase):
-
-    def test_router_update_with_dup_destination_address(self):
-        with self.router() as r:
-            with self.subnet(cidr='10.0.1.0/24') as s:
-                with self.port(subnet=s) as p:
-                    self._router_interface_action('add',
-                                                  r['router']['id'],
-                                                  None,
-                                                  p['port']['id'])
-
-                    routes = [{'destination': '135.207.0.0/16',
-                               'nexthop': '10.0.1.3'},
-                              {'destination': '135.207.0.0/16',
-                               'nexthop': '10.0.1.5'}]
-
-                    self._update('routers', r['router']['id'],
-                                 {'router': {'routes':
-                                             routes}},
-                                 expected_code=exc.HTTPBadRequest.code)
-
-                    # clean-up
-                    self._router_interface_action('remove',
-                                                  r['router']['id'],
-                                                  None,
-                                                  p['port']['id'])
-
-    def test_router_update_on_external_port(self):
-        with self.router() as r:
-            with self.subnet(cidr='10.0.1.0/24') as s:
-                self._set_net_external(s['subnet']['network_id'])
-                self._add_external_gateway_to_router(
-                    r['router']['id'],
-                    s['subnet']['network_id'])
-                body = self._show('routers', r['router']['id'])
-                net_id = body['router']['external_gateway_info']['network_id']
-                self.assertEqual(net_id, s['subnet']['network_id'])
-                port_res = self._list_ports(
-                    'json',
-                    200,
-                    s['subnet']['network_id'],
-                    tenant_id=r['router']['tenant_id'],
-                    device_own=constants.DEVICE_OWNER_ROUTER_GW)
-                port_list = self.deserialize('json', port_res)
-                # The plugin will create 1 port
-                self.assertEqual(2, len(port_list['ports']))
-
-                routes = [{'destination': '135.207.0.0/16',
-                           'nexthop': '10.0.1.3'}]
-
-                body = self._update('routers', r['router']['id'],
-                                    {'router': {'routes':
-                                                routes}})
-
-                body = self._show('routers', r['router']['id'])
-                self.assertEqual(routes,
-                                 body['router']['routes'])
-
-                self._remove_external_gateway_from_router(
-                    r['router']['id'],
-                    s['subnet']['network_id'])
-                body = self._show('routers', r['router']['id'])
-                gw_info = body['router']['external_gateway_info']
-                self.assertIsNone(gw_info)
-
-    def test_floatingip_create_different_fixed_ip_same_port(self):
-        self._test_floatingip_create_different_fixed_ip_same_port()
-
-    def test_floatingip_update_different_router(self):
-        self._test_floatingip_update_different_router()
-
-    def test_floatingip_update_different_fixed_ip_same_port(self):
-        self._test_floatingip_update_different_fixed_ip_same_port()
-
-    def test_network_update_external_failure(self):
-        self._test_network_update_external_failure()
-
-
 class TestNuageProviderNetTestCase(NuagePluginV2TestCase):
 
     def test_create_provider_network(self):
index 1c2b7e0b08d6ae42b877f6e8ad11f555c397a023..1883b7aa06561d6232230b64c3a184dea36f9b36 100644 (file)
@@ -23,13 +23,12 @@ from neutron.tests.unit.nuage import test_netpartition
 from neutron.tests.unit.nuage import test_nuage_plugin
 from neutron.tests.unit import test_extension_extraroute as extraroute_test
 from neutron.tests.unit import test_extension_security_group as test_sg
-from neutron.tests.unit import test_l3_plugin
 
 _uuid = uuidutils.generate_uuid
 
 
 class TestL3Sync(test_nuage_plugin.NuagePluginV2TestCase,
-                 test_l3_plugin.L3NatDBIntTestCase):
+                 extraroute_test.ExtraRouteDBIntTestCase):
 
     def setUp(self):
         self.session = context.get_admin_context().session
@@ -154,15 +153,6 @@ class TestL3Sync(test_nuage_plugin.NuagePluginV2TestCase,
     def test_network_update_external_failure(self):
         self._test_network_update_external_failure()
 
-
-class TestExtraRouteSync(extraroute_test.ExtraRouteDBIntTestCase):
-
-    def setUp(self):
-        self.session = context.get_admin_context().session
-        self.syncmanager = sync.SyncManager(
-            test_nuage_plugin.getNuageClient())
-        super(TestExtraRouteSync, self).setUp()
-
     def test_route_sync(self):
         route = {'destination': '135.207.0.0/16', 'nexthop': '10.0.1.3'}
         with self.router() as r: