]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Remove auto-generation of db schema from models at startup
authorSalvatore Orlando <salv.orlando@gmail.com>
Mon, 5 Aug 2013 15:07:02 +0000 (08:07 -0700)
committerHenry Gessau <gessau@cisco.com>
Fri, 15 Aug 2014 21:21:17 +0000 (17:21 -0400)
This patch removes the Neutron capability of creating database tables
from sqlalchemy models for all those model classes for which
a table is not found in the database schema.
Migrations should be the official and only solution for creating and
managing the Neutron db schema.
This patch also adapts unit tests in order to ensure test schemas
are still correctly created.

DocImpact
Update deployment documentation accordingly.

Closes-Bug: #1207402

Change-Id: Ie4ee5507888ecad5f6dc32ce7a029c43014687a2
Co-Authored-By: Henry Gessau <gessau@cisco.com>
73 files changed:
neutron/db/api.py
neutron/db/db_base_plugin_v2.py
neutron/db/metering/metering_db.py
neutron/db/migration/alembic_migrations/common_ext_ops.py
neutron/db/migration/alembic_migrations/env.py
neutron/db/migration/alembic_migrations/versions/folsom_initial.py
neutron/db/servicetype_db.py
neutron/db/vpn/vpn_db.py
neutron/plugins/cisco/db/network_db_v2.py
neutron/plugins/cisco/models/virt_phy_sw_v2.py
neutron/plugins/hyperv/db.py
neutron/plugins/hyperv/hyperv_neutron_plugin.py
neutron/plugins/metaplugin/meta_neutron_plugin.py
neutron/plugins/nec/db/api.py
neutron/services/firewall/fwaas_plugin.py
neutron/services/l3_router/l3_apic.py
neutron/services/l3_router/l3_router_plugin.py
neutron/services/loadbalancer/drivers/embrane/db.py
neutron/services/loadbalancer/drivers/embrane/driver.py
neutron/services/loadbalancer/plugin.py
neutron/tests/unit/bigswitch/test_base.py
neutron/tests/unit/brocade/test_brocade_vlan.py
neutron/tests/unit/cisco/n1kv/test_n1kv_db.py
neutron/tests/unit/cisco/n1kv/test_n1kv_plugin.py
neutron/tests/unit/cisco/test_network_db.py
neutron/tests/unit/cisco/test_nexus_db.py
neutron/tests/unit/cisco/test_nexus_plugin.py
neutron/tests/unit/cisco/test_plugin_model.py
neutron/tests/unit/db/loadbalancer/test_db_loadbalancer.py
neutron/tests/unit/db/test_agent_db.py
neutron/tests/unit/db/test_dvr_mac_db.py
neutron/tests/unit/db/test_l3_dvr_db.py
neutron/tests/unit/db/test_quota_db.py
neutron/tests/unit/embrane/test_embrane_l3_plugin.py
neutron/tests/unit/embrane/test_embrane_neutron_plugin.py
neutron/tests/unit/linuxbridge/test_lb_db.py
neutron/tests/unit/metaplugin/test_metaplugin.py
neutron/tests/unit/ml2/db/test_ml2_dvr_db.py
neutron/tests/unit/ml2/drivers/arista/test_arista_mechanism_driver.py
neutron/tests/unit/ml2/drivers/cisco/nexus/test_cisco_nexus.py
neutron/tests/unit/ml2/drivers/cisco/nexus/test_cisco_nexus_db.py
neutron/tests/unit/ml2/drivers/test_l2population.py
neutron/tests/unit/ml2/test_helpers.py
neutron/tests/unit/ml2/test_mechanism_odl.py
neutron/tests/unit/ml2/test_type_flat.py
neutron/tests/unit/ml2/test_type_gre.py
neutron/tests/unit/ml2/test_type_vlan.py
neutron/tests/unit/ml2/test_type_vxlan.py
neutron/tests/unit/mlnx/test_mlnx_db.py
neutron/tests/unit/mlnx/test_mlnx_plugin_config.py
neutron/tests/unit/nec/test_db.py
neutron/tests/unit/nec/test_ofc_manager.py
neutron/tests/unit/nec/test_security_group.py
neutron/tests/unit/opencontrail/test_contrail_plugin.py
neutron/tests/unit/openvswitch/test_ovs_db.py
neutron/tests/unit/ryu/test_ryu_db.py
neutron/tests/unit/ryu/test_ryu_plugin.py
neutron/tests/unit/services/l3_router/test_l3_apic_plugin.py
neutron/tests/unit/services/vpn/service_drivers/test_cisco_ipsec.py
neutron/tests/unit/test_db_plugin.py
neutron/tests/unit/test_db_plugin_level.py
neutron/tests/unit/test_dhcp_scheduler.py
neutron/tests/unit/test_extension_ext_gw_mode.py
neutron/tests/unit/test_l3_plugin.py
neutron/tests/unit/test_l3_schedulers.py
neutron/tests/unit/test_quota_ext.py
neutron/tests/unit/test_routerserviceinsertion.py
neutron/tests/unit/test_servicetype.py
neutron/tests/unit/testlib_api.py
neutron/tests/unit/vmware/db/test_lsn_db.py
neutron/tests/unit/vmware/db/test_nsx_db.py
neutron/tests/unit/vmware/test_dhcpmeta.py
neutron/tests/unit/vmware/test_nsx_sync.py

index 3749081f0a2bcc4ccc8cffc0af78becb6bc49395..777c2b6eead0dedc6b34a9be8d5a9e769d4e3d5d 100644 (file)
 
 from oslo.config import cfg
 from oslo.db.sqlalchemy import session
-import sqlalchemy as sql
-
-from neutron.db import model_base
-from neutron.openstack.common import log as logging
-
-LOG = logging.getLogger(__name__)
-
-BASE = model_base.BASEV2
 
 _FACADE = None
 
@@ -36,19 +28,6 @@ def _create_facade_lazily():
     return _FACADE
 
 
-def configure_db():
-    """Configure database.
-
-    Establish the database, create an engine if needed, and register
-    the models.
-    """
-    register_models()
-
-
-def clear_db(base=BASE):
-    unregister_models(base)
-
-
 def get_engine():
     """Helper method to grab engine."""
     facade = _create_facade_lazily()
@@ -60,25 +39,3 @@ def get_session(autocommit=True, expire_on_commit=False):
     facade = _create_facade_lazily()
     return facade.get_session(autocommit=autocommit,
                               expire_on_commit=expire_on_commit)
-
-
-def register_models(base=BASE):
-    """Register Models and create properties."""
-    try:
-        facade = _create_facade_lazily()
-        engine = facade.get_engine()
-        base.metadata.create_all(engine)
-    except sql.exc.OperationalError as e:
-        LOG.info(_("Database registration exception: %s"), e)
-        return False
-    return True
-
-
-def unregister_models(base=BASE):
-    """Unregister Models, useful clearing out data before testing."""
-    try:
-        facade = _create_facade_lazily()
-        engine = facade.get_engine()
-        base.metadata.drop_all(engine)
-    except Exception:
-        LOG.exception(_("Database exception"))
index 1c81139295a5151d2bc9ff5e7aeb3fafc9cfc15b..34e3b1b4990307ca229f7ef33ff7c44cb3b15970 100644 (file)
@@ -27,7 +27,6 @@ from neutron.common import constants
 from neutron.common import exceptions as n_exc
 from neutron.common import ipv6_utils
 from neutron import context as ctx
-from neutron.db import api as db
 from neutron.db import common_db_mixin
 from neutron.db import models_v2
 from neutron.db import sqlalchemyutils
@@ -70,7 +69,6 @@ class NeutronDbPluginV2(neutron_plugin_base_v2.NeutronPluginBaseV2,
     __native_sorting_support = True
 
     def __init__(self):
-        db.configure_db()
         if cfg.CONF.notify_nova_on_port_status_changes:
             from neutron.notifiers import nova
             # NOTE(arosen) These event listeners are here to hook into when
index aad24dc4d065991d46cfc7d2b79cdbdb9ea5e5d0..3eb701f2a9a6263ad6555a329b839e5d1f1c4585 100644 (file)
@@ -21,7 +21,6 @@ from sqlalchemy import sql
 
 from neutron.api.rpc.agentnotifiers import metering_rpc_agent_api
 from neutron.common import constants
-from neutron.db import api as dbapi
 from neutron.db import common_db_mixin as base_db
 from neutron.db import l3_db
 from neutron.db import model_base
@@ -61,8 +60,6 @@ class MeteringDbMixin(metering.MeteringPluginBase,
                       base_db.CommonDbMixin):
 
     def __init__(self):
-        dbapi.register_models()
-
         self.meter_rpc = metering_rpc_agent_api.MeteringAgentNotifyAPI()
 
     def _make_metering_label_dict(self, metering_label, fields=None):
index 5663ff228970a9cd917f41ea4a52bd1f5c708cad..bb34e564af0d6e624a9c210c01e25e510e17bf65 100644 (file)
@@ -59,10 +59,7 @@ def upgrade_l3():
     )
 
 
-def upgrade_quota(options=None):
-    if not (options or {}).get('folsom_quota_db_enabled'):
-        return
-
+def upgrade_quota():
     op.create_table(
         'quotas',
         sa.Column('id', sa.String(length=36), nullable=False),
@@ -78,6 +75,5 @@ def downgrade_l3():
         op.drop_table(table)
 
 
-def downgrade_quota(options=None):
-    if (options or {}).get('folsom_quota_db_enabled'):
-        op.drop_table('quotas')
+def downgrade_quota():
+    op.drop_table('quotas')
index 0c659866e3f97d7701db122539480b7eee60d4f6..db20ce912f48a378f8e7c807e2a7ba4110488921 100644 (file)
@@ -27,8 +27,6 @@ from neutron.openstack.common import importutils
 
 MYSQL_ENGINE = None
 
-DATABASE_QUOTA_DRIVER = 'neutron.extensions._quotav2_driver.DbQuotaDriver'
-
 # this is the Alembic Config object, which provides
 # access to the values within the .ini file in use.
 config = context.config
@@ -118,11 +116,7 @@ def run_migrations_online():
 
 
 def build_options():
-    return {'folsom_quota_db_enabled': is_db_quota_enabled()}
-
-
-def is_db_quota_enabled():
-    return neutron_config.QUOTAS.quota_driver == DATABASE_QUOTA_DRIVER
+    return
 
 
 if context.is_offline_mode():
index 3e14870319e607c81d004b4e3e8245fe275f0a66..0ea61122267691884f9e54778a65eab8c9461d68 100644 (file)
@@ -83,7 +83,7 @@ def upgrade(active_plugins=None, options=None):
         common_ext_ops.upgrade_l3()
 
     if migration.should_run(active_plugins, FOLSOM_QUOTA):
-        common_ext_ops.upgrade_quota(options)
+        common_ext_ops.upgrade_quota()
 
     if PLUGINS['lbr'] in active_plugins:
         upgrade_linuxbridge()
@@ -484,7 +484,7 @@ def downgrade(active_plugins=None, options=None):
         downgrade_linuxbridge()
 
     if migration.should_run(active_plugins, FOLSOM_QUOTA):
-        common_ext_ops.downgrade_quota(options)
+        common_ext_ops.downgrade_quota()
 
     if migration.should_run(active_plugins, L3_CAPABLE):
         common_ext_ops.downgrade_l3()
index 9bb12ac67a83f65c697e451ed6091506f1021a3d..6dae9b7627dd858295823444d2aa88d968dfa0c2 100644 (file)
@@ -18,9 +18,7 @@
 
 import sqlalchemy as sa
 
-from neutron.db import api as db
 from neutron.db import model_base
-from neutron.db import models_v2
 from neutron.openstack.common import log as logging
 from neutron.services import provider_configuration as pconf
 
@@ -47,13 +45,8 @@ class ServiceTypeManager(object):
         return cls._instance
 
     def __init__(self):
-        self._initialize_db()
         self._load_conf()
 
-    def _initialize_db(self):
-        db.configure_db()
-        db.register_models(models_v2.model_base.BASEV2)
-
     def _load_conf(self):
         self.conf = pconf.ProviderConfiguration(
             pconf.parse_service_provider_opt())
index 1af84b5f69963daadb2f711932911399c82ded03..e8aeee8c133f2cd05b1117983ec667e85f590968 100644 (file)
@@ -21,7 +21,6 @@ from sqlalchemy import orm
 from sqlalchemy.orm import exc
 
 from neutron.common import constants as n_constants
-from neutron.db import api as qdbapi
 from neutron.db import common_db_mixin as base_db
 from neutron.db import l3_agentschedulers_db as l3_agent_db
 from neutron.db import l3_db
@@ -162,10 +161,6 @@ class VPNService(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):
 class VPNPluginDb(vpnaas.VPNPluginBase, base_db.CommonDbMixin):
     """VPN plugin database class using SQLAlchemy models."""
 
-    def __init__(self):
-        """Do the initialization for the vpn service plugin here."""
-        qdbapi.register_models()
-
     def _get_validator(self):
         """Obtain validator to use for attribute validation.
 
index e7adf1a92d541df7fe643e3aa475fc8f1e6c3baa..53cfb17aa6a1ac4084b7210d9683ddbb37b13c65 100644 (file)
@@ -22,9 +22,6 @@ from neutron.openstack.common import uuidutils
 from neutron.plugins.cisco.common import cisco_constants as const
 from neutron.plugins.cisco.common import cisco_exceptions as c_exc
 from neutron.plugins.cisco.db import network_models_v2
-# Do NOT remove this import. It is required for all the models to be seen
-# by db.initialize() when called from VirtualPhysicalSwitchModelV2.__init__.
-from neutron.plugins.cisco.db import nexus_models_v2  # noqa
 from neutron.plugins.openvswitch import ovs_models_v2
 
 
index 619c006261b18c8d5919bfbb5e5e71474272f44a..53fd6e2112cfafe643482932fc45881c5aee3da6 100644 (file)
@@ -21,7 +21,6 @@ import inspect
 import sys
 
 from neutron.api.v2 import attributes
-from neutron.db import api as db_api
 from neutron.extensions import portbindings
 from neutron.extensions import providernet as provider
 from neutron import neutron_plugin_base_v2
@@ -78,11 +77,6 @@ class VirtualPhysicalSwitchModelV2(neutron_plugin_base_v2.NeutronPluginBaseV2):
             self.supported_extension_aliases.extend(
                 self._plugins[const.VSWITCH_PLUGIN].
                 supported_extension_aliases)
-        # At this point, all the database models should have been loaded. It's
-        # possible that configure_db() may have been called by one of the
-        # plugins loaded in above. Otherwise, this call is to make sure that
-        # the database is initialized
-        db_api.configure_db()
 
         # Initialize credential store after database initialization
         cred.Store.initialize()
index 276b0c38f8fda5545b165569c7d20e83a8c81f15..e3a88dc0ea7ca9ee5901b019266f2aec55ff40f7 100644 (file)
@@ -28,8 +28,6 @@ LOG = logging.getLogger(__name__)
 
 
 class HyperVPluginDB(object):
-    def initialize(self):
-        db_api.configure_db()
 
     def reserve_vlan(self, session):
         with session.begin(subtransactions=True):
index 765f65bbd42bf09fad93be38eb729671948f946c..302f05e2a5b57f417a8c0ad892c8f2b9e98d6d33 100644 (file)
@@ -157,7 +157,6 @@ class HyperVNeutronPlugin(agents_db.AgentDbMixin,
 
     def __init__(self, configfile=None):
         self._db = hyperv_db.HyperVPluginDB()
-        self._db.initialize()
         self.base_binding_dict = {
             portbindings.VIF_TYPE: portbindings.VIF_TYPE_HYPERV}
         portbindings_base.register_port_dict_function()
index 97a460823c59c282e4249ce89ce3beec2740e41e..5adc86087edaa2adaa3b20f6420a7b11aba1d7a9 100644 (file)
@@ -18,7 +18,6 @@ from oslo.config import cfg
 from neutron.common import exceptions as exc
 from neutron.common import topics
 from neutron import context as neutron_context
-from neutron.db import api as db
 from neutron.db import db_base_plugin_v2
 from neutron.db import external_net_db
 from neutron.db import extraroute_db
@@ -85,9 +84,6 @@ class MetaPluginV2(db_base_plugin_v2.NeutronDbPluginV2,
 
         cfg._is_opt_registered = _is_opt_registered
 
-        # Keep existing tables if multiple plugin use same table name.
-        db.model_base.NeutronBase.__table_args__ = {'keep_existing': True}
-
         self.plugins = {}
 
         plugin_list = [plugin_set.split(':')
index ddd53ba5f8cd71090f45af5023fa97e183097209..02cb79491a7bc5087e0fd65e408d88c5af56a81a 100644 (file)
@@ -16,7 +16,6 @@
 import sqlalchemy as sa
 
 from neutron.db import api as db
-from neutron.db import model_base
 from neutron.db import models_v2
 from neutron.db import securitygroups_db as sg_db
 from neutron.extensions import securitygroup as ext_sg
@@ -44,10 +43,6 @@ def _get_resource_model(resource):
     return resource_map[resource]
 
 
-def clear_db(base=model_base.BASEV2):
-    db.clear_db(base)
-
-
 def get_ofc_item(session, resource, neutron_id):
     model = _get_resource_model(resource)
     if not model:
index 5c8d04c777f502fd20a776cdd147f856c61e1631..eeb70642a8d6b1029d332cdaf41ca87c64a3f596 100644 (file)
@@ -21,7 +21,6 @@ from neutron.common import exceptions as n_exception
 from neutron.common import rpc as n_rpc
 from neutron.common import topics
 from neutron import context as neutron_context
-from neutron.db import api as qdbapi
 from neutron.db.firewall import firewall_db
 from neutron.extensions import firewall as fw_ext
 from neutron.openstack.common import log as logging
@@ -155,7 +154,6 @@ class FirewallPlugin(firewall_db.Firewall_db_mixin):
 
     def __init__(self):
         """Do the initialization for the firewall service plugin here."""
-        qdbapi.register_models()
 
         self.endpoints = [FirewallCallbacks(self)]
 
index 54c202ecbd2a1c0e30c657037d901f40945629cf..3405ad6517ee43dc962f7f58741d26f932208098 100644 (file)
 #
 # @author: Arvind Somya (asomya@cisco.com), Cisco Systems Inc.
 
-from neutron.db import api as qdbapi
 from neutron.db import db_base_plugin_v2
 from neutron.db import extraroute_db
 from neutron.db import l3_gwmode_db
-from neutron.db import model_base
 from neutron.openstack.common import excutils
 from neutron.openstack.common import log as logging
 from neutron.plugins.common import constants
@@ -41,7 +39,6 @@ class ApicL3ServicePlugin(db_base_plugin_v2.NeutronDbPluginV2,
 
     def __init__(self):
         super(ApicL3ServicePlugin, self).__init__()
-        qdbapi.register_models(base=model_base.BASEV2)
         self.manager = apic_manager.APICManager()
 
     @staticmethod
index 0faa54e4e2e1cb039c345b3b3aa71abc9f6a07fc..1fa763c82e771dbdc26f01a475e87cd87bdc3dc6 100644 (file)
@@ -21,14 +21,12 @@ from neutron.api.rpc.agentnotifiers import l3_rpc_agent_api
 from neutron.common import constants as q_const
 from neutron.common import rpc as n_rpc
 from neutron.common import topics
-from neutron.db import api as qdbapi
 from neutron.db import common_db_mixin
 from neutron.db import extraroute_db
 from neutron.db import l3_dvr_db
 from neutron.db import l3_dvrscheduler_db
 from neutron.db import l3_gwmode_db
 from neutron.db import l3_rpc_base
-from neutron.db import model_base
 from neutron.openstack.common import importutils
 from neutron.plugins.common import constants
 
@@ -61,7 +59,6 @@ class L3RouterPlugin(common_db_mixin.CommonDbMixin,
                                    "extraroute", "l3_agent_scheduler"]
 
     def __init__(self):
-        qdbapi.register_models(base=model_base.BASEV2)
         self.setup_rpc()
         self.router_scheduler = importutils.import_object(
             cfg.CONF.router_scheduler_driver)
index 005fbe09a2435c9efb1eb68d2d617d44a29f5b12..2e5c9e1d9687e83858d9152c0f9714ce47f14503 100644 (file)
 #
 # @author:  Ivar Lazzaro, Embrane, Inc. ivar@embrane.com
 
-import neutron.db.api as db
 from neutron.db import models_v2 as nmodel
 from neutron.services.loadbalancer.drivers.embrane import models
 
 
-def initialize():
-    db.configure_db()
-
-
 def add_pool_port(context, pool_id, port_id):
     session = context.session
     with session.begin(subtransactions=True):
index a230587ff9d732cef262c23ca8963cc0e705ed75..a6a09fd91c630d25771f4dec40cecc54ee8728fd 100644 (file)
@@ -56,7 +56,6 @@ def get_conf(x):
 
 class EmbraneLbaas(abstract_driver.LoadBalancerAbstractDriver):
     def __init__(self, plugin):
-        edb.initialize()
         config_esm_mgmt = get_conf('esm_mgmt')
         config_admin_username = get_conf('admin_username')
         config_admin_password = get_conf('admin_password')
index 4e992e0851903a4c13e8153bd519fb8b0ceb2740..6951f1e1718454c4d60f10b9cc94b4f91edfb99e 100644 (file)
@@ -18,7 +18,6 @@
 from neutron.api.v2 import attributes as attrs
 from neutron.common import exceptions as n_exc
 from neutron import context
-from neutron.db import api as qdbapi
 from neutron.db.loadbalancer import loadbalancer_db as ldb
 from neutron.db import servicetype_db as st_db
 from neutron.extensions import loadbalancer
@@ -52,7 +51,6 @@ class LoadBalancerPlugin(ldb.LoadBalancerPluginDb,
     def __init__(self):
         """Initialization for the loadbalancer service plugin."""
 
-        qdbapi.register_models()
         self.service_type_manager = st_db.ServiceTypeManager.get_instance()
         self._load_drivers()
 
index 2a792231621c33c6273b06863dde0489b4652e20..e74024c7cc1764358bb79e39c01688e5c3dc651a 100644 (file)
@@ -20,15 +20,9 @@ import mock
 from oslo.config import cfg
 
 import neutron.common.test_lib as test_lib
-from neutron.db import api as db
 from neutron.plugins.bigswitch import config
 from neutron.tests.unit.bigswitch import fake_server
 
-# REVISIT(kevinbenton): This needs to be imported here to create the
-# portbindings table since it's not imported until function call time
-# in the porttracker_db module, which will cause unit test failures when
-# the unit tests are being run by testtools
-from neutron.db import portbindings_db  # noqa
 
 RESTPROXY_PKG_PATH = 'neutron.plugins.bigswitch.plugin'
 NOTIFIER = 'neutron.plugins.bigswitch.plugin.AgentNotifierApi'
@@ -62,7 +56,6 @@ class BigSwitchTestBase(object):
         self.spawn_p = mock.patch(SPAWN, new=lambda *args, **kwargs: None)
         # prevent the consistency watchdog from starting
         self.watch_p = mock.patch(CWATCH, new=lambda *args, **kwargs: None)
-        self.addCleanup(db.clear_db)
         self.plugin_notifier_p.start()
         self.spawn_p.start()
         self.watch_p.start()
index 144f4bb0a5c6b22441286c5f36c0c7661a054e63..09d030767a6f2730bd5464577febfca20c075f18 100644 (file)
@@ -21,16 +21,14 @@ Test vlans alloc/dealloc.
 from neutron.db import api as db
 from neutron.openstack.common import context
 from neutron.plugins.brocade import vlanbm as vlan_bitmap
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
-class TestVlanBitmap(base.BaseTestCase):
+class TestVlanBitmap(testlib_api.SqlTestCase):
     """exercise Vlan bitmap ."""
 
     def setUp(self):
         super(TestVlanBitmap, self).setUp()
-        db.configure_db()
-        self.addCleanup(db.clear_db)
         self.context = context.get_admin_context()
         self.context.session = db.get_session()
 
index ea8d99c32219fbfe5e2c8c941253ccea39a920ca..dcbb923326404bb5772cab69e37e18a95d4e6ea4 100644 (file)
@@ -28,8 +28,8 @@ from neutron.plugins.cisco.common import cisco_constants as c_const
 from neutron.plugins.cisco.common import cisco_exceptions as c_exc
 from neutron.plugins.cisco.db import n1kv_db_v2
 from neutron.plugins.cisco.db import n1kv_models_v2
-from neutron.tests import base
 from neutron.tests.unit import test_db_plugin as test_plugin
+from neutron.tests.unit import testlib_api
 
 
 PHYS_NET = 'physnet1'
@@ -91,15 +91,13 @@ def _create_test_policy_profile_if_not_there(session,
     return _profile
 
 
-class VlanAllocationsTest(base.BaseTestCase):
+class VlanAllocationsTest(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(VlanAllocationsTest, self).setUp()
-        db.configure_db()
         self.session = db.get_session()
         self.net_p = _create_test_network_profile_if_not_there(self.session)
         n1kv_db_v2.sync_vlan_allocations(self.session, self.net_p)
-        self.addCleanup(db.clear_db)
 
     def test_sync_vlan_allocations_outside_segment_range(self):
         self.assertRaises(c_exc.VlanIDNotFound,
@@ -205,17 +203,15 @@ class VlanAllocationsTest(base.BaseTestCase):
                           vlan_id)
 
 
-class VxlanAllocationsTest(base.BaseTestCase,
+class VxlanAllocationsTest(testlib_api.SqlTestCase,
                            n1kv_db_v2.NetworkProfile_db_mixin):
 
     def setUp(self):
         super(VxlanAllocationsTest, self).setUp()
-        db.configure_db()
         self.session = db.get_session()
         self.net_p = _create_test_network_profile_if_not_there(
             self.session, TEST_NETWORK_PROFILE_VXLAN)
         n1kv_db_v2.sync_vxlan_allocations(self.session, self.net_p)
-        self.addCleanup(db.clear_db)
 
     def test_sync_vxlan_allocations_outside_segment_range(self):
         self.assertRaises(c_exc.VxlanIDNotFound,
@@ -296,9 +292,7 @@ class NetworkBindingsTest(test_plugin.NeutronDbPluginV2TestCase):
 
     def setUp(self):
         super(NetworkBindingsTest, self).setUp()
-        db.configure_db()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def test_add_network_binding(self):
         with self.network() as network:
@@ -547,14 +541,12 @@ class NetworkBindingsTest(test_plugin.NeutronDbPluginV2TestCase):
                 self.assertEqual(t_members, [])
 
 
-class NetworkProfileTests(base.BaseTestCase,
+class NetworkProfileTests(testlib_api.SqlTestCase,
                           n1kv_db_v2.NetworkProfile_db_mixin):
 
     def setUp(self):
         super(NetworkProfileTests, self).setUp()
-        db.configure_db()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def test_create_network_profile(self):
         _db_profile = n1kv_db_v2.create_network_profile(self.session,
@@ -731,13 +723,11 @@ class NetworkProfileTests(base.BaseTestCase,
         self.assertEqual(len(test_profiles), len(list(profiles)))
 
 
-class PolicyProfileTests(base.BaseTestCase):
+class PolicyProfileTests(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(PolicyProfileTests, self).setUp()
-        db.configure_db()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def test_create_policy_profile(self):
         _db_profile = n1kv_db_v2.create_policy_profile(TEST_POLICY_PROFILE)
@@ -775,15 +765,13 @@ class PolicyProfileTests(base.BaseTestCase):
         self.assertEqual(profile.name, got_profile.name)
 
 
-class ProfileBindingTests(base.BaseTestCase,
+class ProfileBindingTests(testlib_api.SqlTestCase,
                           n1kv_db_v2.NetworkProfile_db_mixin,
                           common_db_mixin.CommonDbMixin):
 
     def setUp(self):
         super(ProfileBindingTests, self).setUp()
-        db.configure_db()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def _create_test_binding_if_not_there(self, tenant_id, profile_id,
                                           profile_type):
index cbe4d4683161fe373a9337c3e79bab00dbaf7e67..ef08e03547687e8df4260831eb9db3251774e146 100644 (file)
@@ -213,7 +213,6 @@ class N1kvPluginTestCase(test_plugin.NeutronDbPluginV2TestCase):
         attributes.RESOURCE_ATTRIBUTE_MAP["ports"].update(
             n1kv.EXTENDED_ATTRIBUTES_2_0["ports"])
         self.addCleanup(self.restore_resource_attribute_map)
-        self.addCleanup(db.clear_db)
         super(N1kvPluginTestCase, self).setUp(self._plugin_name,
                                               ext_mgr=ext_mgr)
         # Create some of the database entries that we require.
index 931f85b5b7960ecf8c5799635b9e68782396fc3f..a07c22e82cea03dc139bdc984efbc7db0c4e7711 100644 (file)
@@ -17,23 +17,21 @@ import collections
 import mock
 import testtools
 
-from neutron.db import api as db
 from neutron.plugins.cisco.common import cisco_constants
 from neutron.plugins.cisco.common import cisco_credentials_v2
 from neutron.plugins.cisco.common import cisco_exceptions as c_exc
 from neutron.plugins.cisco.common import config as config
 from neutron.plugins.cisco.db import network_db_v2 as cdb
 from neutron.plugins.cisco import network_plugin
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
-class CiscoNetworkDbTest(base.BaseTestCase):
+class CiscoNetworkDbTest(testlib_api.SqlTestCase):
 
     """Base class for Cisco network database unit tests."""
 
     def setUp(self):
         super(CiscoNetworkDbTest, self).setUp()
-        db.configure_db()
 
         # The Cisco network plugin includes a thin layer of QoS and
         # credential API methods which indirectly call Cisco QoS and
@@ -47,8 +45,6 @@ class CiscoNetworkDbTest(base.BaseTestCase):
                                '__init__', new=new_network_plugin_init):
             self._network_plugin = network_plugin.PluginV2()
 
-        self.addCleanup(db.clear_db)
-
 
 class CiscoNetworkQosDbTest(CiscoNetworkDbTest):
 
@@ -290,15 +286,10 @@ class CiscoNetworkCredentialDbTest(CiscoNetworkDbTest):
                           cdb.get_credential, cred_n1kv_2_id)
 
 
-class CiscoCredentialStoreTest(base.BaseTestCase):
+class CiscoCredentialStoreTest(testlib_api.SqlTestCase):
 
     """Cisco Credential Store unit tests."""
 
-    def setUp(self):
-        super(CiscoCredentialStoreTest, self).setUp()
-        db.configure_db()
-        self.addCleanup(db.clear_db)
-
     def test_cred_store_init_duplicate_creds_ignored(self):
         """Check that with multi store instances, dup creds are ignored."""
         # Create a device dictionary containing credentials for 1 switch.
index 49b3dce50c28abc59fd15972958572b7e2bf4ee9..2d7ba213bc9fa9923977606d473f54e8fd4c1d9a 100644 (file)
@@ -22,10 +22,10 @@ from neutron.plugins.cisco.common import cisco_exceptions as c_exc
 from neutron.plugins.cisco.common import config
 from neutron.plugins.cisco.db import nexus_db_v2 as nxdb
 from neutron.plugins.cisco.nexus import cisco_nexus_plugin_v2
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
-class CiscoNexusDbTest(base.BaseTestCase):
+class CiscoNexusDbTest(testlib_api.SqlTestCase):
 
     """Unit tests for cisco.db.nexus_models_v2.NexusPortBinding model."""
 
@@ -33,9 +33,7 @@ class CiscoNexusDbTest(base.BaseTestCase):
 
     def setUp(self):
         super(CiscoNexusDbTest, self).setUp()
-        db.configure_db()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def _npb_test_obj(self, pnum, vnum, switch=None, instance=None):
         """Create a Nexus port binding test object from a pair of numbers."""
index 6cf54ab84894f0feff927310515917766601c52f..4262b818767a306458f649cb45247134bb911faf 100644 (file)
@@ -18,7 +18,6 @@ import mock
 
 from oslo.config import cfg
 
-from neutron.db import api as db
 from neutron.extensions import providernet as provider
 from neutron.openstack.common import importutils
 from neutron.plugins.cisco.common import cisco_constants as const
@@ -26,8 +25,7 @@ from neutron.plugins.cisco.common import cisco_exceptions as cisco_exc
 from neutron.plugins.cisco.common import config as cisco_config
 from neutron.plugins.cisco.db import network_db_v2 as cdb
 from neutron.plugins.cisco.nexus import cisco_nexus_plugin_v2
-from neutron.tests import base
-
+from neutron.tests.unit import testlib_api
 
 NEXUS_IP_ADDRESS = '1.1.1.1'
 HOSTNAME1 = 'testhost1'
@@ -50,7 +48,7 @@ NET_ATTRS = [const.NET_ID,
              const.NET_VLAN_ID]
 
 
-class TestCiscoNexusPlugin(base.BaseTestCase):
+class TestCiscoNexusPlugin(testlib_api.SqlTestCase):
 
     def setUp(self):
         """Set up function."""
@@ -144,9 +142,7 @@ class TestCiscoNexusPlugin(base.BaseTestCase):
                     'password': 'password'
                 },
             }
-            db.configure_db()
 
-        self.addCleanup(db.clear_db)
         # Use a mock netconf client
         self.mock_ncclient = mock.Mock()
 
index fa87a501048956ed1180faa1e123cc52b618c647..7a99d30b55fd545c7d3085cf0ce0033cb10232e7 100755 (executable)
@@ -22,10 +22,10 @@ from neutron.plugins.cisco.common import cisco_constants as const
 from neutron.plugins.cisco.common import config as cisco_config
 from neutron.plugins.cisco.models import virt_phy_sw_v2
 from neutron.plugins.cisco.nexus import cisco_nexus_plugin_v2
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
-class TestCiscoPluginModel(base.BaseTestCase):
+class TestCiscoPluginModel(testlib_api.SqlTestCase):
 
     def setUp(self):
         # Point config file to: neutron/tests/etc/neutron.conf.test
index b47d61167640c980919b9210a9f2a56173a97af7..68aa517ae607f039d0bf2239f34d2d0fcdb87d25 100644 (file)
@@ -24,7 +24,6 @@ from neutron.api import extensions
 from neutron.common import config
 from neutron.common import exceptions as n_exc
 from neutron import context
-import neutron.db.l3_db  # noqa
 from neutron.db.loadbalancer import loadbalancer_db as ldb
 from neutron.db import servicetype_db as sdb
 import neutron.extensions
index 5f726f40ef0af3ee4758ae3aff329a5c4199c380..529cd85b85476b9545442a3cc7ac03331589568c 100644 (file)
@@ -18,22 +18,20 @@ from oslo.db import exception as exc
 
 from neutron import context
 from neutron.db import agents_db
-from neutron.db import api as db
 from neutron.db import db_base_plugin_v2 as base_plugin
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
 class FakePlugin(base_plugin.NeutronDbPluginV2, agents_db.AgentDbMixin):
     """A fake plugin class containing all DB methods."""
 
 
-class TestAgentsDbMixin(base.BaseTestCase):
+class TestAgentsDbMixin(testlib_api.SqlTestCase):
     def setUp(self):
         super(TestAgentsDbMixin, self).setUp()
 
         self.context = context.get_admin_context()
         self.plugin = FakePlugin()
-        self.addCleanup(db.clear_db)
 
         self.agent_status = {
             'agent_type': 'Open vSwitch agent',
index 75b1b0b65d5a8c90e0f36bdfaff8b43a572972f5..f949959cc79c0bcae321452b9bd7a6d172bcc73f 100644 (file)
@@ -17,10 +17,9 @@ import mock
 from oslo.config import cfg
 
 from neutron import context
-from neutron.db import api as db
 from neutron.db import dvr_mac_db
 from neutron.extensions import dvr
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
 class DVRDbMixinImpl(dvr_mac_db.DVRDbMixin):
@@ -29,13 +28,11 @@ class DVRDbMixinImpl(dvr_mac_db.DVRDbMixin):
         self.notifier = notifier
 
 
-class DvrDbMixinTestCase(base.BaseTestCase):
+class DvrDbMixinTestCase(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(DvrDbMixinTestCase, self).setUp()
-        db.configure_db()
         self.ctx = context.get_admin_context()
-        self.addCleanup(db.clear_db)
         self.mixin = DVRDbMixinImpl(mock.Mock())
 
     def _create_dvr_mac_entry(self, host, mac_address):
index 5cec5587b278a6bbbe7c12e015505e90109b7849..2bcfa01ecd157e5bffbd672da05037a9b3ec6e6c 100644 (file)
@@ -18,19 +18,16 @@ import mock
 
 from neutron.common import constants as l3_const
 from neutron import context
-from neutron.db import api as db
 from neutron.db import l3_dvr_db
 from neutron import manager
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
-class L3DvrTestCase(base.BaseTestCase):
+class L3DvrTestCase(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(L3DvrTestCase, self).setUp()
-        db.configure_db()
         self.ctx = context.get_admin_context()
-        self.addCleanup(db.clear_db)
         self.mixin = l3_dvr_db.L3_NAT_with_dvr_db_mixin()
 
     def _create_router(self, router):
index 9c6bca355bffdd4cbe5f4e5243d9373e231370f8..a7dfa40bfdb8683b33778a7dc0825068f29e3a2a 100644 (file)
 
 from neutron.common import exceptions
 from neutron import context
-from neutron.db import api as db
 from neutron.db import db_base_plugin_v2 as base_plugin
 from neutron.db import quota_db
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
 class FakePlugin(base_plugin.NeutronDbPluginV2, quota_db.DbQuotaDriver):
@@ -42,12 +41,11 @@ PROJECT = 'prj_test'
 RESOURCE = 'res_test'
 
 
-class TestDbQuotaDriver(base.BaseTestCase):
+class TestDbQuotaDriver(testlib_api.SqlTestCase):
     def setUp(self):
         super(TestDbQuotaDriver, self).setUp()
         self.plugin = FakePlugin()
         self.context = context.get_admin_context()
-        self.addCleanup(db.clear_db)
 
     def test_create_quota_limit(self):
         defaults = {RESOURCE: TestResource(RESOURCE, 4)}
index 699527ff7b367ce33d74f2067391d6384f8b7bff..cd4dc615022d0059fd238fe1935cd6bea52c0804 100644 (file)
@@ -17,7 +17,6 @@
 
 from oslo.config import cfg
 
-from neutron.db import api as db
 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
@@ -31,7 +30,6 @@ class TestEmbraneL3NatDBTestCase(router_test.L3NatDBIntTestCase):
 
     def setUp(self):
         cfg.CONF.set_override('admin_password', "admin123", 'heleos')
-        self.addCleanup(db.clear_db)
         super(TestEmbraneL3NatDBTestCase, self).setUp()
 
 
index e49da11acf8953a3ea588ad29cdb4733dbb6d8a2..111a0a8e1acac225d7ee33544706e286db3d2a2b 100644 (file)
@@ -19,7 +19,6 @@ import sys
 import mock
 from oslo.config import cfg
 
-from neutron.db import api as db
 from neutron.plugins.embrane.common import config  # noqa
 from neutron.tests.unit import test_db_plugin as test_plugin
 
@@ -34,7 +33,6 @@ class EmbranePluginV2TestCase(test_plugin.NeutronDbPluginV2TestCase):
         cfg.CONF.set_override('admin_password', "admin123", 'heleos')
         p = mock.patch.dict(sys.modules, {'heleosapi': mock.Mock()})
         p.start()
-        self.addCleanup(db.clear_db)
         # dict patches must be explicitly stopped
         self.addCleanup(p.stop)
         super(EmbranePluginV2TestCase, self).setUp(self._plugin_name)
index 41f56b52ed364a54f3916b46ec86bde0ba6b5780..f432482103fe6a9e5916c6b68948473da9b90f4a 100644 (file)
@@ -21,8 +21,8 @@ from testtools import matchers
 from neutron.common import exceptions as n_exc
 from neutron.db import api as db
 from neutron.plugins.linuxbridge.db import l2network_db_v2 as lb_db
-from neutron.tests import base
 from neutron.tests.unit import test_db_plugin as test_plugin
+from neutron.tests.unit import testlib_api
 
 PHYS_NET = 'physnet1'
 PHYS_NET_2 = 'physnet2'
@@ -36,13 +36,11 @@ PLUGIN_NAME = ('neutron.plugins.linuxbridge.'
                'lb_neutron_plugin.LinuxBridgePluginV2')
 
 
-class NetworkStatesTest(base.BaseTestCase):
+class NetworkStatesTest(testlib_api.SqlTestCase):
     def setUp(self):
         super(NetworkStatesTest, self).setUp()
-        db.configure_db()
         lb_db.sync_network_states(VLAN_RANGES)
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def test_sync_network_states(self):
         self.assertIsNone(lb_db.get_network_state(PHYS_NET,
@@ -155,7 +153,6 @@ class NetworkBindingsTest(test_plugin.NeutronDbPluginV2TestCase):
         cfg.CONF.set_override('network_vlan_ranges', ['physnet1:1000:2999'],
                               group='VLANS')
         super(NetworkBindingsTest, self).setUp(plugin=PLUGIN_NAME)
-        db.configure_db()
         self.session = db.get_session()
 
     def test_add_network_binding(self):
index c05074948b80ed2269b2bd2cf8d80239f3bdaa90..57e02779119b792105acecd4aa9ae05c12878723 100644 (file)
@@ -20,13 +20,12 @@ import testtools
 from neutron.common import exceptions as exc
 from neutron.common import topics
 from neutron import context
-from neutron.db import api as db
 from neutron.db import db_base_plugin_v2
 from neutron.db import models_v2
 from neutron.extensions import flavor as ext_flavor
 from neutron.openstack.common import uuidutils
 from neutron.plugins.metaplugin import meta_neutron_plugin
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 CONF_FILE = ""
 META_PATH = "neutron.plugins.metaplugin"
@@ -57,8 +56,6 @@ def setup_metaplugin_conf(has_l3=True):
     cfg.CONF.set_override('base_mac', "12:34:56:78:90:ab")
     #TODO(nati) remove this after subnet quota change is merged
     cfg.CONF.set_override('max_dns_nameservers', 10)
-    cfg.CONF.set_override('rpc_backend',
-                          'neutron.openstack.common.rpc.impl_fake')
 
 
 # Hooks registered by metaplugin must not exist for other plugins UT.
@@ -70,20 +67,16 @@ def unregister_meta_hooks():
         models_v2.Port, 'metaplugin_port', None, None, None)
 
 
-class MetaNeutronPluginV2Test(base.BaseTestCase):
+class MetaNeutronPluginV2Test(testlib_api.SqlTestCase):
     """Class conisting of MetaNeutronPluginV2 unit tests."""
 
     has_l3 = True
 
     def setUp(self):
         super(MetaNeutronPluginV2Test, self).setUp()
-        db._ENGINE = None
-        db._MAKER = None
         self.fake_tenant_id = uuidutils.generate_uuid()
         self.context = context.get_admin_context()
 
-        db.configure_db()
-        self.addCleanup(db.clear_db)
         self.addCleanup(unregister_meta_hooks)
 
         setup_metaplugin_conf(self.has_l3)
@@ -365,15 +358,11 @@ class MetaNeutronPluginV2TestWithoutL3(MetaNeutronPluginV2Test):
         self.skipTest("Test case without router")
 
 
-class MetaNeutronPluginV2TestRpcFlavor(base.BaseTestCase):
+class MetaNeutronPluginV2TestRpcFlavor(testlib_api.SqlTestCase):
     """Tests for rpc_flavor."""
 
     def setUp(self):
         super(MetaNeutronPluginV2TestRpcFlavor, self).setUp()
-        db._ENGINE = None
-        db._MAKER = None
-        db.configure_db()
-        self.addCleanup(db.clear_db)
         self.addCleanup(unregister_meta_hooks)
 
     def test_rpc_flavor(self):
index 847d28de9a878675384cb3b76e97aafeb9c98321..bfb8635d20700e0dc4096adf00c6548b6eab19ec 100644 (file)
@@ -18,22 +18,19 @@ import mock
 from sqlalchemy.orm import query
 
 from neutron import context
-from neutron.db import api as db_api
 from neutron.db import l3_db
 from neutron.db import models_v2
 from neutron.extensions import portbindings
 from neutron.plugins.ml2 import db as ml2_db
 from neutron.plugins.ml2 import models as ml2_models
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
-class Ml2DBTestCase(base.BaseTestCase):
+class Ml2DBTestCase(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(Ml2DBTestCase, self).setUp()
-        db_api.configure_db()
         self.ctx = context.get_admin_context()
-        self.addCleanup(db_api.clear_db)
 
     def _setup_neutron_network(self, network_id, port_ids):
         with self.ctx.session.begin(subtransactions=True):
index 8749d50734639e5e05ae962c7bc338dd5a466688..56b8a42afdd7c4ded3398a47521f2ea9552a4e82 100644 (file)
@@ -17,12 +17,12 @@ import mock
 from oslo.config import cfg
 
 from neutron.common import constants as n_const
-import neutron.db.api as ndb
 from neutron.extensions import portbindings
 from neutron.plugins.ml2.drivers.arista import db
 from neutron.plugins.ml2.drivers.arista import exceptions as arista_exc
 from neutron.plugins.ml2.drivers.arista import mechanism_arista as arista
 from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
 def setup_arista_wrapper_config(value=''):
@@ -36,18 +36,13 @@ def setup_valid_config():
     setup_arista_wrapper_config('value')
 
 
-class AristaProvisionedVlansStorageTestCase(base.BaseTestCase):
+class AristaProvisionedVlansStorageTestCase(testlib_api.SqlTestCase):
     """Test storing and retriving functionality of Arista mechanism driver.
 
     Tests all methods of this class by invoking them separately as well
     as a group.
     """
 
-    def setUp(self):
-        super(AristaProvisionedVlansStorageTestCase, self).setUp()
-        ndb.configure_db()
-        self.addCleanup(ndb.clear_db)
-
     def test_tenant_is_remembered(self):
         tenant_id = 'test'
 
@@ -539,7 +534,7 @@ class NegativeRPCWrapperTestCase(base.BaseTestCase):
         self.assertRaises(arista_exc.AristaRpcError, drv.get_tenants)
 
 
-class RealNetStorageAristaDriverTestCase(base.BaseTestCase):
+class RealNetStorageAristaDriverTestCase(testlib_api.SqlTestCase):
     """Main test cases for Arista Mechanism driver.
 
     Tests all mechanism driver APIs supported by Arista Driver. It invokes
@@ -549,7 +544,6 @@ class RealNetStorageAristaDriverTestCase(base.BaseTestCase):
     def setUp(self):
         super(RealNetStorageAristaDriverTestCase, self).setUp()
         self.fake_rpc = mock.MagicMock()
-        ndb.configure_db()
         self.drv = arista.AristaDriver(self.fake_rpc)
 
     def tearDown(self):
index 482c4500b1890ff2bc57d5e867b778b41f599009..b184e51723dde531c4ecf0ea8536be5fa5892773 100644 (file)
@@ -18,7 +18,6 @@ import mock
 import testtools
 
 from neutron.common import constants as n_const
-from neutron.db import api as db
 from neutron.extensions import portbindings
 from neutron.openstack.common import importutils
 from neutron.plugins.ml2 import driver_api as api
@@ -27,7 +26,7 @@ from neutron.plugins.ml2.drivers.cisco.nexus import exceptions
 from neutron.plugins.ml2.drivers.cisco.nexus import mech_cisco_nexus
 from neutron.plugins.ml2.drivers.cisco.nexus import nexus_db_v2
 from neutron.plugins.ml2.drivers.cisco.nexus import nexus_network_driver
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
 NEXUS_IP_ADDRESS = '1.1.1.1'
@@ -93,7 +92,7 @@ class FakePortContext(object):
         return self._segment
 
 
-class TestCiscoNexusDevice(base.BaseTestCase):
+class TestCiscoNexusDevice(testlib_api.SqlTestCase):
 
     """Unit tests for Cisco ML2 Nexus device driver."""
 
@@ -151,15 +150,11 @@ class TestCiscoNexusDevice(base.BaseTestCase):
             mech_instance.driver.nexus_switches = (
                 mech_instance._nexus_switches)
 
-            db.configure_db()
-
         mock.patch.object(mech_cisco_nexus.CiscoNexusMechanismDriver,
                           '__init__', new=new_nexus_init).start()
         self._cisco_mech_driver = (mech_cisco_nexus.
                                    CiscoNexusMechanismDriver())
 
-        self.addCleanup(db.clear_db)
-
     def _create_delete_port(self, port_config):
         """Tests creation and deletion of a virtual port."""
         nexus_ip_addr = port_config.nexus_ip_addr
index 08cc9a95170ddfa5e2a251667576ac8fd7761262..12789701a80f5fa6b7be8c30e5edf741de5b621f 100644 (file)
 import collections
 import testtools
 
-from neutron.db import api as db
 from neutron.plugins.ml2.drivers.cisco.nexus import exceptions
 from neutron.plugins.ml2.drivers.cisco.nexus import nexus_db_v2
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
-class CiscoNexusDbTest(base.BaseTestCase):
+class CiscoNexusDbTest(testlib_api.SqlTestCase):
 
     """Unit tests for Cisco mechanism driver's Nexus port binding database."""
 
     NpbObj = collections.namedtuple('NpbObj', 'port vlan switch instance')
 
-    def setUp(self):
-        super(CiscoNexusDbTest, self).setUp()
-        db.configure_db()
-        self.addCleanup(db.clear_db)
-
     def _npb_test_obj(self, pnum, vnum, switch='10.9.8.7', instance=None):
         """Creates a Nexus port binding test object from a pair of numbers."""
         if pnum is 'router':
index 12a88b83d39da7c27253795c7d5f4279e6ddf741..ef34e53ac5213c0360ba720aa38dd7dfdcd74a2e 100644 (file)
@@ -23,7 +23,6 @@ from neutron.common import constants
 from neutron.common import topics
 from neutron import context
 from neutron.db import agents_db
-from neutron.db import api as db_api
 from neutron.extensions import portbindings
 from neutron.extensions import providernet as pnet
 from neutron import manager
@@ -131,8 +130,6 @@ class TestL2PopulationRpcTestCase(test_plugin.NeutronDbPluginV2TestCase):
         uptime_patch = mock.patch(uptime, return_value=190)
         uptime_patch.start()
 
-        self.addCleanup(db_api.clear_db)
-
     def tearDown(self):
         l2_consts.SUPPORTED_AGENT_TYPES = self.orig_supported_agents
         super(TestL2PopulationRpcTestCase, self).tearDown()
index 7c74a53870e4bc94d4bd7e3775c5551030dccdca..2297fb9f744addae18b6d66791b00ae81e796d3a 100644 (file)
@@ -23,6 +23,7 @@ import neutron.db.api as db
 from neutron.plugins.ml2.drivers import helpers
 from neutron.plugins.ml2.drivers import type_vlan
 from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
 TENANT_NET = 'phys_net2'
@@ -34,16 +35,14 @@ NETWORK_VLAN_RANGES = {
 }
 
 
-class HelpersTest(base.BaseTestCase):
+class HelpersTest(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(HelpersTest, self).setUp()
-        db.configure_db()
         self.driver = type_vlan.VlanTypeDriver()
         self.driver.network_vlan_ranges = NETWORK_VLAN_RANGES
         self.driver._sync_vlan_allocations()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
         self.useFixture(
             fixtures.FakeLogger(
                 name=helpers.__name__,
index 22ebfbe7a2c83512ec9cda156753cda1499b68bf..e743c3457931778beec4df63a8978b2833e3b6a6 100644 (file)
@@ -24,6 +24,7 @@ from neutron.plugins.ml2.drivers import mechanism_odl
 from neutron.plugins.ml2 import plugin
 from neutron.tests import base
 from neutron.tests.unit import test_db_plugin as test_plugin
+from neutron.tests.unit import testlib_api
 
 PLUGIN_NAME = 'neutron.plugins.ml2.plugin.Ml2Plugin'
 
@@ -70,7 +71,7 @@ class OpenDaylightTestCase(test_plugin.NeutronDbPluginV2TestCase):
         self.assertFalse(self.mech.check_segment(self.segment))
 
 
-class OpenDayLightMechanismConfigTests(base.BaseTestCase):
+class OpenDayLightMechanismConfigTests(testlib_api.SqlTestCase):
 
     def _set_config(self, url='http://127.0.0.1:9999', username='someuser',
                     password='somepass'):
index b752d9ed13a47da736cc709f3b556e5f693f2a64..1620edfdc2f9970a4c12c26a7d7eb76a5ba75c34 100644 (file)
@@ -18,23 +18,21 @@ import neutron.db.api as db
 from neutron.plugins.common import constants as p_const
 from neutron.plugins.ml2 import driver_api as api
 from neutron.plugins.ml2.drivers import type_flat
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 from oslo.config import cfg
 
 
 FLAT_NETWORKS = ['flat_net1', 'flat_net2']
 
 
-class FlatTypeTest(base.BaseTestCase):
+class FlatTypeTest(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(FlatTypeTest, self).setUp()
-        db.configure_db()
         cfg.CONF.set_override('flat_networks', FLAT_NETWORKS,
                               group='ml2_type_flat')
         self.driver = type_flat.FlatTypeDriver()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def _get_allocation(self, session, segment):
         return session.query(type_flat.FlatAllocation).filter_by(
index d695c4f00bec0f7b1ccd5d97b5ec3cb70b43a345..62d7b88512f5fa46516db40f41adde747ec0cf37 100644 (file)
@@ -22,7 +22,7 @@ from neutron.common import exceptions as exc
 import neutron.db.api as db
 from neutron.plugins.ml2 import driver_api as api
 from neutron.plugins.ml2.drivers import type_gre
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 TUNNEL_IP_ONE = "10.10.10.10"
 TUNNEL_IP_TWO = "10.10.10.20"
@@ -32,16 +32,14 @@ TUNNEL_RANGES = [(TUN_MIN, TUN_MAX)]
 UPDATED_TUNNEL_RANGES = [(TUN_MIN + 5, TUN_MAX + 5)]
 
 
-class GreTypeTest(base.BaseTestCase):
+class GreTypeTest(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(GreTypeTest, self).setUp()
-        db.configure_db()
         self.driver = type_gre.GreTypeDriver()
         self.driver.gre_id_ranges = TUNNEL_RANGES
         self.driver._sync_gre_allocations()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def test_validate_provider_segment(self):
         segment = {api.NETWORK_TYPE: 'gre',
@@ -233,7 +231,7 @@ class GreTypeTest(base.BaseTestCase):
         log_warn.assert_called_once_with(mock.ANY, TUNNEL_IP_ONE)
 
 
-class GreTypeMultiRangeTest(base.BaseTestCase):
+class GreTypeMultiRangeTest(testlib_api.SqlTestCase):
 
     TUN_MIN0 = 100
     TUN_MAX0 = 101
@@ -243,12 +241,10 @@ class GreTypeMultiRangeTest(base.BaseTestCase):
 
     def setUp(self):
         super(GreTypeMultiRangeTest, self).setUp()
-        db.configure_db()
         self.driver = type_gre.GreTypeDriver()
         self.driver.gre_id_ranges = self.TUNNEL_MULTI_RANGES
         self.driver._sync_gre_allocations()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def test_release_segment(self):
         segments = [self.driver.allocate_tenant_segment(self.session)
index b36bc42e9f61f5bfc5fb750180189e3b79583620..2a78152120704cdd4d3f99add85b40bd4b8e16a0 100644 (file)
@@ -21,7 +21,7 @@ import neutron.db.api as db
 from neutron.plugins.common import constants as p_const
 from neutron.plugins.ml2 import driver_api as api
 from neutron.plugins.ml2.drivers import type_vlan
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 PROVIDER_NET = 'phys_net1'
 TENANT_NET = 'phys_net2'
@@ -37,16 +37,14 @@ UPDATED_VLAN_RANGES = {
 }
 
 
-class VlanTypeTest(base.BaseTestCase):
+class VlanTypeTest(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(VlanTypeTest, self).setUp()
-        db.configure_db()
         self.driver = type_vlan.VlanTypeDriver()
         self.driver.network_vlan_ranges = NETWORK_VLAN_RANGES
         self.driver._sync_vlan_allocations()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def _get_allocation(self, session, segment):
         return session.query(type_vlan.VlanAllocation).filter_by(
index 1f7fed2b4b0a01da9ba64acebc035c428f75d983..7953617ddf482caacf01fa7e57d670512f4dd78b 100644 (file)
@@ -25,7 +25,7 @@ from neutron.db import api as db
 from neutron.plugins.common import constants as p_const
 from neutron.plugins.ml2 import driver_api as api
 from neutron.plugins.ml2.drivers import type_vxlan
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
 TUNNEL_IP_ONE = "10.10.10.10"
@@ -40,10 +40,9 @@ VXLAN_UDP_PORT_ONE = 9999
 VXLAN_UDP_PORT_TWO = 8888
 
 
-class VxlanTypeTest(base.BaseTestCase):
+class VxlanTypeTest(testlib_api.SqlTestCase):
     def setUp(self):
         super(VxlanTypeTest, self).setUp()
-        db.configure_db()
         cfg.CONF.set_override('vni_ranges', [TUNNEL_RANGES],
                               group='ml2_type_vxlan')
         cfg.CONF.set_override('vxlan_group', MULTICAST_GROUP,
@@ -52,7 +51,6 @@ class VxlanTypeTest(base.BaseTestCase):
         self.driver.vxlan_vni_ranges = TUNNEL_RANGES
         self.driver._sync_vxlan_allocations()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def test_vxlan_tunnel_type(self):
         self.assertEqual(self.driver.get_type(), p_const.TYPE_VXLAN)
@@ -254,7 +252,7 @@ class VxlanTypeTest(base.BaseTestCase):
             log_warn.assert_called_once_with(mock.ANY, TUNNEL_IP_ONE)
 
 
-class VxlanTypeMultiRangeTest(base.BaseTestCase):
+class VxlanTypeMultiRangeTest(testlib_api.SqlTestCase):
 
     TUN_MIN0 = 100
     TUN_MAX0 = 101
@@ -264,12 +262,10 @@ class VxlanTypeMultiRangeTest(base.BaseTestCase):
 
     def setUp(self):
         super(VxlanTypeMultiRangeTest, self).setUp()
-        db.configure_db()
         self.driver = type_vxlan.VxlanTypeDriver()
         self.driver.vxlan_vni_ranges = self.TUNNEL_MULTI_RANGES
         self.driver._sync_vxlan_allocations()
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def test_release_segment(self):
         segments = [self.driver.allocate_tenant_segment(self.session)
index a72ed0865a97501af9f56fdd6f56af7281e8ed46..6ece2044dc27dd1328a6e48f98cb7ccf9627cf3d 100644 (file)
@@ -19,8 +19,8 @@ from testtools import matchers
 from neutron.common import exceptions as n_exc
 from neutron.db import api as db
 from neutron.plugins.mlnx.db import mlnx_db_v2 as mlnx_db
-from neutron.tests import base
 from neutron.tests.unit import test_db_plugin as test_plugin
+from neutron.tests.unit import testlib_api
 
 PHYS_NET = 'physnet1'
 PHYS_NET_2 = 'physnet2'
@@ -33,13 +33,11 @@ UPDATED_VLAN_RANGES = {PHYS_NET: [(VLAN_MIN + 5, VLAN_MAX + 5)],
 TEST_NETWORK_ID = 'abcdefghijklmnopqrstuvwxyz'
 
 
-class SegmentationIdAllocationTest(base.BaseTestCase):
+class SegmentationIdAllocationTest(testlib_api.SqlTestCase):
     def setUp(self):
         super(SegmentationIdAllocationTest, self).setUp()
-        db.configure_db()
         mlnx_db.sync_network_states(VLAN_RANGES)
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def test_sync_segmentationIdAllocation(self):
         self.assertIsNone(mlnx_db.get_network_state(PHYS_NET,
@@ -159,7 +157,6 @@ class SegmentationIdAllocationTest(base.BaseTestCase):
 class NetworkBindingsTest(test_plugin.NeutronDbPluginV2TestCase):
     def setUp(self):
         super(NetworkBindingsTest, self).setUp()
-        db.configure_db()
         self.session = db.get_session()
 
     def test_add_network_binding(self):
index 70f3d2df494686ae36873394a7eee9ea5bded629..90991a604c98819f6c35e8661a41fcd5a7500d5c 100644 (file)
@@ -20,10 +20,10 @@ from oslo.config import cfg
 from neutron.plugins.mlnx.common import config  # noqa
 from neutron.plugins.mlnx.common import constants
 from neutron.plugins.mlnx import mlnx_plugin
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
-class TestMlnxPluginConfig(base.BaseTestCase):
+class TestMlnxPluginConfig(testlib_api.SqlTestCase):
     expected_vlan_mappings = {'physnet1': [(1, 1000)],
                               'physnet2': [(1, 1000)]}
     expected_network_types = {'physnet1': constants.TYPE_ETH,
index 62ea0a3e2063ccb1133482a80ced480047b6f4c4..69927d99c27f453f2833d1b57b5e9b89562b9d48 100644 (file)
@@ -20,7 +20,6 @@ from neutron.common import constants as q_const
 from neutron.openstack.common import uuidutils
 from neutron.plugins.nec.common import exceptions as nexc
 from neutron.plugins.nec.db import api as ndb
-from neutron.plugins.nec.db import models as nmodels  # noqa
 from neutron.tests.unit.nec import test_nec_plugin
 
 
index 47de0ed6ef33181b739ef308720b8a8eda8622b8..13d71d766e1331aa7c130c84b669ec9e7c3b82b2 100644 (file)
 import mock
 
 from neutron import context
-from neutron.db import api as db
 from neutron.openstack.common import uuidutils
 from neutron.plugins.nec.common import config
 from neutron.plugins.nec.db import api as ndb
-from neutron.plugins.nec.db import models as nmodels  # noqa
 from neutron.plugins.nec import ofc_manager
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
 class FakePortInfo(object):
@@ -38,15 +36,13 @@ class FakePortInfo(object):
             raise AttributeError(name)
 
 
-class OFCManagerTestBase(base.BaseTestCase):
+class OFCManagerTestBase(testlib_api.SqlTestCase):
     """Class conisting of OFCManager unit tests."""
 
     def setUp(self):
         super(OFCManagerTestBase, self).setUp()
-        db.configure_db()
         driver = "neutron.tests.unit.nec.stub_ofc_driver.StubOFCDriver"
         config.CONF.set_override('driver', driver, 'OFC')
-        self.addCleanup(ndb.clear_db)
         self.plugin = mock.Mock()
         self.plugin.get_packet_filters_for_port.return_value = None
         self.ofc = ofc_manager.OFCManager(self.plugin)
index 0b681969f76c9b1ad92d0699886c917aefa649b1..fd442c3b241761c488bb68011839c036c8fcc65d 100644 (file)
@@ -20,7 +20,6 @@ import mock
 from neutron.api.v2 import attributes
 from neutron.extensions import securitygroup as ext_sg
 from neutron import manager
-from neutron.plugins.nec.db import api as ndb  # noqa
 from neutron.tests.unit.nec import test_nec_plugin
 from neutron.tests.unit import test_extension_security_group as test_sg
 from neutron.tests.unit import test_security_groups_rpc as test_sg_rpc
index a983392013648349b9fa64a7fa052bc157999e4c..de280f346f817714be9e5cbb21a139e70b1bf546 100644 (file)
@@ -28,11 +28,9 @@ from neutron.api.v2 import attributes as attr
 from neutron.api.v2 import base as api_base
 from neutron.common import exceptions as exc
 from neutron import context as neutron_context
-from neutron.db import api as db
 from neutron.db import db_base_plugin_v2
 from neutron.db import external_net_db
 from neutron.db import l3_db
-from neutron.db import quota_db  # noqa
 from neutron.db import securitygroups_db
 from neutron.extensions import portbindings
 from neutron.extensions import securitygroup as ext_sg
@@ -219,7 +217,6 @@ class ContrailPluginTestCase(test_plugin.NeutronDbPluginV2TestCase):
 
         cfg.CONF.keystone_authtoken = KeyStoneInfo()
         mock.patch('requests.post').start().side_effect = FAKE_SERVER.request
-        db.configure_db()
         super(ContrailPluginTestCase, self).setUp(self._plugin_name)
 
 
index f1fbe03235e54fa68c9dfede625f79eaebba9163..a82f546b126d2c1ee3bdaa85337adc3b65ea5286 100644 (file)
@@ -25,8 +25,8 @@ from neutron.common import exceptions as n_exc
 from neutron.db import api as db
 from neutron.plugins.openvswitch import ovs_db_v2
 from neutron.plugins.openvswitch import ovs_models_v2 as ovs_models
-from neutron.tests import base
 from neutron.tests.unit import test_db_plugin as test_plugin
+from neutron.tests.unit import testlib_api
 
 PHYS_NET = 'physnet1'
 PHYS_NET_2 = 'physnet2'
@@ -44,13 +44,11 @@ PLUGIN_NAME = ('neutron.plugins.openvswitch.'
                'ovs_neutron_plugin.OVSNeutronPluginV2')
 
 
-class VlanAllocationsTest(base.BaseTestCase):
+class VlanAllocationsTest(testlib_api.SqlTestCase):
     def setUp(self):
         super(VlanAllocationsTest, self).setUp()
-        db.configure_db()
         ovs_db_v2.sync_vlan_allocations(VLAN_RANGES)
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def test_sync_vlan_allocations(self):
         self.assertIsNone(ovs_db_v2.get_vlan_allocation(PHYS_NET,
@@ -188,13 +186,11 @@ class VlanAllocationsTest(base.BaseTestCase):
         ovs_db_v2.sync_vlan_allocations({})
 
 
-class TunnelAllocationsTest(base.BaseTestCase):
+class TunnelAllocationsTest(testlib_api.SqlTestCase):
     def setUp(self):
         super(TunnelAllocationsTest, self).setUp()
-        db.configure_db()
         ovs_db_v2.sync_tunnel_allocations(TUNNEL_RANGES)
         self.session = db.get_session()
-        self.addCleanup(db.clear_db)
 
     def test_sync_tunnel_allocations(self):
         self.assertIsNone(ovs_db_v2.get_tunnel_allocation(TUN_MIN - 1))
@@ -301,7 +297,6 @@ class NetworkBindingsTest(test_plugin.NeutronDbPluginV2TestCase):
         cfg.CONF.set_override('network_vlan_ranges', ['physnet1:1000:2999'],
                               group='OVS')
         super(NetworkBindingsTest, self).setUp(plugin=PLUGIN_NAME)
-        db.configure_db()
         self.session = db.get_session()
 
     def test_add_network_binding(self):
index 4cbdbe62c34fbfd73a79b3106b6894f5f1926ede..97ea3bffc2879226591fefd418776c3d7121a7ea 100644 (file)
@@ -19,7 +19,6 @@ import operator
 from neutron.db import api as db
 from neutron.plugins.ryu.common import config  # noqa
 from neutron.plugins.ryu.db import api_v2 as db_api_v2
-from neutron.plugins.ryu.db import models_v2 as ryu_models_v2  # noqa
 from neutron.tests.unit import test_db_plugin as test_plugin
 
 
index e0dfe283eecdabf97619258da935f1ef15f09f8f..cfbe5285b8732f7f8d543d0ecd83178a0a52d067 100644 (file)
@@ -16,7 +16,6 @@
 import mock
 
 from neutron import manager
-from neutron.plugins.ryu.db import models_v2 as ryu_models_v2  # noqa
 from neutron.tests.unit.ryu import fake_ryu
 from neutron.tests.unit import test_db_plugin as test_plugin
 
index 6bc33ef28596cc354181bc5b645c66f96445b024..55b168e88775abc45810985e7d8f2535bdc169bd 100644 (file)
@@ -18,7 +18,7 @@
 import mock
 
 from neutron.services.l3_router import l3_apic
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 TENANT = 'tenant1'
 TENANT_CONTRACT = 'abcd'
@@ -55,7 +55,7 @@ class FakePort(object):
         self.subnet_id = SUBNET
 
 
-class TestCiscoApicL3Plugin(base.BaseTestCase):
+class TestCiscoApicL3Plugin(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(TestCiscoApicL3Plugin, self).setUp()
index d9e1d1ca1b639902f6db31d2b7d476d71fd2c868..36259b380334435b81316d362b91141dc5e0a8c0 100644 (file)
@@ -16,7 +16,6 @@ import mock
 # from oslo.config import cfg
 
 from neutron import context as n_ctx
-from neutron.db import api as dbapi
 from neutron.openstack.common import uuidutils
 from neutron.plugins.common import constants
 # from neutron.services.vpn import plugin as vpn_plugin
@@ -24,6 +23,7 @@ from neutron.services.vpn.service_drivers import cisco_csr_db as csr_db
 from neutron.services.vpn.service_drivers import cisco_ipsec as ipsec_driver
 from neutron.services.vpn.service_drivers import cisco_validator as validator
 from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 _uuid = uuidutils.generate_uuid
 
@@ -328,14 +328,12 @@ class TestCiscoIPsecDriverMapping(base.BaseTestCase):
                                             tenant_id='1000')
 
 
-class TestCiscoIPsecDriver(base.BaseTestCase):
+class TestCiscoIPsecDriver(testlib_api.SqlTestCase):
 
     """Test that various incoming requests are sent to device driver."""
 
     def setUp(self):
         super(TestCiscoIPsecDriver, self).setUp()
-        dbapi.configure_db()
-        self.addCleanup(dbapi.clear_db)
         mock.patch('neutron.common.rpc.create_connection').start()
 
         l3_agent = mock.Mock()
index d004fb359a7ff8722a0a7dac610a0162841b9888..0145a34b86ed69d18d68c6163146eab9d486d27c 100644 (file)
@@ -32,7 +32,6 @@ from neutron.common import ipv6_utils
 from neutron.common import test_lib
 from neutron.common import utils
 from neutron import context
-from neutron.db import api as db
 from neutron.db import db_base_plugin_v2
 from neutron.db import models_v2
 from neutron import manager
@@ -88,12 +87,6 @@ class NeutronDbPluginV2TestCase(testlib_api.WebTestCase):
         if not plugin:
             plugin = DB_PLUGIN_KLASS
 
-        # Create the default configurations
-        args = ['--config-file', base.etcdir('neutron.conf.test')]
-        # If test_config specifies some config-file, use it, as well
-        for config_file in test_lib.test_config.get('config_files', []):
-            args.extend(['--config-file', config_file])
-        self.config_parse(args=args)
         # Update the plugin
         self.setup_coreplugin(plugin)
         cfg.CONF.set_override(
@@ -149,13 +142,18 @@ class NeutronDbPluginV2TestCase(testlib_api.WebTestCase):
         self._skip_native_pagination = None
         self._skip_native_sortin = None
         self.ext_api = None
-        # NOTE(jkoelker) for a 'pluggable' framework, Neutron sure
-        #                doesn't like when the plugin changes ;)
-        db.clear_db()
         # Restore the original attribute map
         attributes.RESOURCE_ATTRIBUTE_MAP = self._attribute_map_bk
         super(NeutronDbPluginV2TestCase, self).tearDown()
 
+    def setup_config(self):
+        # Create the default configurations
+        args = ['--config-file', base.etcdir('neutron.conf.test')]
+        # If test_config specifies some config-file, use it, as well
+        for config_file in test_lib.test_config.get('config_files', []):
+            args.extend(['--config-file', config_file])
+        self.config_parse(args=args)
+
     def _req(self, method, resource, data=None, fmt=None, id=None, params=None,
              action=None, subresource=None, sub_id=None, context=None):
         fmt = fmt or self.fmt
@@ -3938,7 +3936,7 @@ class TestNeutronDbPluginV2(base.BaseTestCase):
                           ['b', '192.168.1.112', '192.168.1.120']], actual)
 
 
-class NeutronDbPluginV2AsMixinTestCase(base.BaseTestCase):
+class NeutronDbPluginV2AsMixinTestCase(testlib_api.SqlTestCase):
     """Tests for NeutronDbPluginV2 as Mixin.
 
     While NeutronDbPluginV2TestCase checks NeutronDbPlugin and all plugins as
@@ -3957,7 +3955,6 @@ class NeutronDbPluginV2AsMixinTestCase(base.BaseTestCase):
                                      'admin_state_up': True,
                                      'tenant_id': 'test-tenant',
                                      'shared': False}}
-        self.addCleanup(db.clear_db)
 
     def test_create_network_with_default_status(self):
         net = self.plugin.create_network(self.context, self.net_data)
index 3fe2be1fa2289d78b08db878377764b395034fee..a0ebbb5e66eb4184613c0f150a2465f390885780 100644 (file)
@@ -18,12 +18,11 @@ from neutron.common import constants
 from neutron.common import exceptions as n_exc
 from neutron import context
 from neutron import manager
-from neutron.tests import base
 from neutron.tests.unit import test_db_plugin
 from neutron.tests.unit import testlib_api
 
 
-class TestNetworks(base.BaseTestCase):
+class TestNetworks(testlib_api.SqlTestCase):
     def setUp(self):
         super(TestNetworks, self).setUp()
         self._tenant_id = 'test-tenant'
index d0282bbc784daaf351eeac5175fb8a8c4bcb4867..293255eb9ef7032bb0bffa72b153e79d27e6926d 100644 (file)
@@ -20,22 +20,19 @@ from neutron.common import topics
 from neutron import context
 from neutron.db import agents_db
 from neutron.db import agentschedulers_db
-from neutron.db import api as db
 from neutron.db import models_v2
 from neutron.openstack.common import timeutils
 from neutron.scheduler import dhcp_agent_scheduler
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
-class DhcpSchedulerTestCase(base.BaseTestCase):
+class DhcpSchedulerTestCase(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(DhcpSchedulerTestCase, self).setUp()
-        db.configure_db()
         self.ctx = context.get_admin_context()
         self.network_id = 'foo_network_id'
         self._save_networks([self.network_id])
-        self.addCleanup(db.clear_db)
 
     def _get_agents(self, hosts):
         return [
index a9e97066abac20740cfba49ebb89456f9a97adde..9079753936aa344f107ace9fe0dc658061642b69 100644 (file)
@@ -27,9 +27,9 @@ from neutron.db import models_v2
 from neutron.extensions import l3
 from neutron.extensions import l3_ext_gw_mode
 from neutron.openstack.common import uuidutils
-from neutron.tests import base
 from neutron.tests.unit import test_db_plugin
 from neutron.tests.unit import test_l3_plugin
+from neutron.tests.unit import testlib_api
 
 _uuid = uuidutils.generate_uuid
 FAKE_GW_PORT_ID = _uuid()
@@ -74,7 +74,7 @@ class TestDbSepPlugin(test_l3_plugin.TestL3NatServicePlugin,
     supported_extension_aliases = ["router", "ext-gw-mode"]
 
 
-class TestL3GwModeMixin(base.BaseTestCase):
+class TestL3GwModeMixin(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(TestL3GwModeMixin, self).setUp()
@@ -84,7 +84,6 @@ class TestL3GwModeMixin(base.BaseTestCase):
         # Patch the context
         ctx_patcher = mock.patch('neutron.context', autospec=True)
         mock_context = ctx_patcher.start()
-        self.addCleanup(db_api.clear_db)
         self.context = mock_context.get_admin_context()
         # This ensure also calls to elevated work in unit tests
         self.context.elevated.return_value = self.context
index f1bc02b7e71eaa9151750bb47ada6d55d6b9358b..c474458f28936ff0b3235a43633c25bedd1c11d8 100644 (file)
@@ -26,7 +26,6 @@ from neutron.api.v2 import attributes
 from neutron.common import constants as l3_constants
 from neutron.common import exceptions as n_exc
 from neutron import context
-from neutron.db import api as qdbapi
 from neutron.db import common_db_mixin
 from neutron.db import db_base_plugin_v2
 from neutron.db import external_net_db
@@ -35,7 +34,6 @@ from neutron.db import l3_attrs_db
 from neutron.db import l3_db
 from neutron.db import l3_dvr_db
 from neutron.db import l3_rpc_base
-from neutron.db import model_base
 from neutron.extensions import external_net
 from neutron.extensions import l3
 from neutron.extensions import portbindings
@@ -294,9 +292,6 @@ class TestL3NatServicePlugin(common_db_mixin.CommonDbMixin,
 
     supported_extension_aliases = ["router"]
 
-    def __init__(self):
-        qdbapi.register_models(base=model_base.BASEV2)
-
     def get_plugin_type(self):
         return service_constants.L3_ROUTER_NAT
 
index ae9fe0f124610f901e9fa74c3bb3209ec992d5eb..d329defa1ae1c945da0b2f41d78733e46e474f06 100644 (file)
@@ -35,9 +35,9 @@ from neutron.extensions import l3 as ext_l3
 from neutron import manager
 from neutron.openstack.common import timeutils
 from neutron.scheduler import l3_agent_scheduler
-from neutron.tests import base
 from neutron.tests.unit import test_db_plugin
 from neutron.tests.unit import test_l3_plugin
+from neutron.tests.unit import testlib_api
 
 HOST = 'my_l3_host'
 FIRST_L3_AGENT = {
@@ -351,7 +351,7 @@ class L3DvrScheduler(l3_db.L3_NAT_db_mixin,
     pass
 
 
-class L3DvrSchedulerTestCase(base.BaseTestCase):
+class L3DvrSchedulerTestCase(testlib_api.SqlTestCase):
 
     def setUp(self):
         plugin = 'neutron.plugins.ml2.plugin.Ml2Plugin'
index 58af1ff0f9180403ba8f1344f7c2555bf40d0332..e612b0fc9b02fc894acda17f7cd10ed47468d218 100644 (file)
@@ -25,7 +25,6 @@ from neutron.api.v2 import attributes
 from neutron.common import config
 from neutron.common import exceptions
 from neutron import context
-from neutron.db import api as db
 from neutron.db import quota_db
 from neutron import quota
 from neutron.tests import base
@@ -68,7 +67,6 @@ class QuotaExtensionTestCase(testlib_api.WebTestCase):
         # extra1 here is added later, so have to do it manually
         quota.QUOTAS.register_resource_by_name('extra1')
         ext_mgr = extensions.PluginAwareExtensionManager.get_instance()
-        db.configure_db()
         app = config.load_paste_app('extensions_test_app')
         ext_middleware = extensions.ExtensionMiddleware(app, ext_mgr=ext_mgr)
         self.api = webtest.TestApp(ext_middleware)
@@ -76,8 +74,6 @@ class QuotaExtensionTestCase(testlib_api.WebTestCase):
     def tearDown(self):
         self.api = None
         self.plugin = None
-        db.clear_db()
-
         # Restore the global RESOURCE_ATTRIBUTE_MAP
         attributes.RESOURCE_ATTRIBUTE_MAP = self.saved_attr_map
         super(QuotaExtensionTestCase, self).tearDown()
index 7db7d42840456d10aaf53266f52eb56944b58420..4167217744ea61bb537322a608eb5d4d7e158b31 100644 (file)
@@ -21,7 +21,6 @@ from neutron.api.v2 import attributes
 from neutron.api.v2 import router
 from neutron.common import config
 from neutron import context as q_context
-from neutron.db import api as db
 from neutron.db import db_base_plugin_v2
 from neutron.db import l3_db
 from neutron.db.loadbalancer import loadbalancer_db as lb_db
@@ -31,7 +30,6 @@ from neutron.db import servicetype_db as st_db
 from neutron.extensions import routedserviceinsertion as rsi
 from neutron.extensions import routerservicetype as rst
 from neutron.plugins.common import constants
-from neutron.tests import base
 from neutron.tests.unit import test_api_v2
 from neutron.tests.unit import testlib_api
 from neutron import wsgi
@@ -152,7 +150,7 @@ class RouterServiceInsertionTestPlugin(
         pass
 
 
-class RouterServiceInsertionTestCase(base.BaseTestCase):
+class RouterServiceInsertionTestCase(testlib_api.SqlTestCase):
     def setUp(self):
         super(RouterServiceInsertionTestCase, self).setUp()
         plugin = (
@@ -192,7 +190,6 @@ class RouterServiceInsertionTestCase(base.BaseTestCase):
 
     def tearDown(self):
         self.api = None
-        db.clear_db()
         super(RouterServiceInsertionTestCase, self).tearDown()
 
     def _setup_core_resources(self):
index 6db85b79f4c959ebd2a86a3c15149dbacef35f6e..3fe02f69b28067810046ecd3bf236e707515f44d 100644 (file)
@@ -24,12 +24,10 @@ import webtest
 from neutron.api import extensions
 from neutron.common import exceptions as n_exc
 from neutron import context
-from neutron.db import api as db_api
 from neutron.db import servicetype_db as st_db
 from neutron.extensions import servicetype
 from neutron.plugins.common import constants
 from neutron.services import provider_configuration as provconf
-from neutron.tests import base
 from neutron.tests.unit import dummy_plugin as dp
 from neutron.tests.unit import test_api_v2
 from neutron.tests.unit import test_db_plugin
@@ -44,7 +42,7 @@ _uuid = test_api_v2._uuid
 _get_path = test_api_v2._get_path
 
 
-class ServiceTypeManagerTestCase(base.BaseTestCase):
+class ServiceTypeManagerTestCase(testlib_api.SqlTestCase):
     def setUp(self):
         super(ServiceTypeManagerTestCase, self).setUp()
         st_db.ServiceTypeManager._instance = None
@@ -219,7 +217,6 @@ class ServiceTypeManagerExtTestCase(ServiceTypeExtensionTestCaseBase):
                                ':lbaas:driver_path',
                                constants.DUMMY + ':dummy:dummy_dr'],
                               'service_providers')
-        self.addCleanup(db_api.clear_db)
         super(ServiceTypeManagerExtTestCase, self).setUp()
 
     def _list_service_providers(self):
index 1407ab0b808b126074c70bbe6ffb252d09c33a49..a8c7a7e6edbf765cd553c356feb07ac7df935a82 100644 (file)
 import testtools
 
 from neutron.api.v2 import attributes
+from neutron.db import api as db_api
+# Import all data models
+from neutron.db.migration.models import head  # noqa
+from neutron.db import model_base
 from neutron.tests import base
 from neutron import wsgi
 
@@ -49,7 +53,22 @@ def create_request(path, body, content_type, method='GET',
     return req
 
 
-class WebTestCase(base.BaseTestCase):
+class SqlTestCase(base.BaseTestCase):
+
+    def setUp(self):
+        super(SqlTestCase, self).setUp()
+        # Register all data models
+        engine = db_api.get_engine()
+        model_base.BASEV2.metadata.create_all(engine)
+
+        def unregister_models():
+            """Unregister all data models."""
+            model_base.BASEV2.metadata.drop_all(engine)
+
+        self.addCleanup(unregister_models)
+
+
+class WebTestCase(SqlTestCase):
     fmt = 'json'
 
     def setUp(self):
index 34641de5300cddb4c3f9ea2e993c2375b56da82e..42dd3e6e63ebd334a91bd3144e52b1d57a271254 100644 (file)
 from sqlalchemy import orm
 
 from neutron import context
-from neutron.db import api as db
 from neutron.plugins.vmware.common import exceptions as p_exc
 from neutron.plugins.vmware.dbexts import lsn_db
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
-class LSNTestCase(base.BaseTestCase):
+class LSNTestCase(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(LSNTestCase, self).setUp()
-        db.configure_db()
         self.ctx = context.get_admin_context()
-        self.addCleanup(db.clear_db)
         self.net_id = 'foo_network_id'
         self.lsn_id = 'foo_lsn_id'
         self.lsn_port_id = 'foo_port_id'
index 35552c0e2882f4f2bfccb49f14423ef6d1eca0e9..f4078a4694846fc0f59e12490436782a11de4f6a 100644 (file)
 from oslo.db import exception as d_exc
 
 from neutron import context
-from neutron.db import api as db
 from neutron.db import models_v2
 from neutron.plugins.vmware.dbexts import db as nsx_db
 from neutron.plugins.vmware.dbexts import models
-from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
-class NsxDBTestCase(base.BaseTestCase):
+class NsxDBTestCase(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(NsxDBTestCase, self).setUp()
-        db.configure_db()
         self.ctx = context.get_admin_context()
-        self.addCleanup(db.clear_db)
 
     def _setup_neutron_network_and_port(self, network_id, port_id):
         with self.ctx.session.begin(subtransactions=True):
index 23c4a86cf056d357d065d4bbd4f03dca0ccafc95..d6c519218dad33fa74f7be195407e9c5ff877763 100644 (file)
@@ -20,7 +20,6 @@ from oslo.config import cfg
 from neutron.common import constants as n_consts
 from neutron.common import exceptions as n_exc
 from neutron import context
-from neutron.db import api as db
 from neutron.plugins.vmware.api_client import exception
 from neutron.plugins.vmware.common import exceptions as p_exc
 from neutron.plugins.vmware.dbexts import lsn_db
@@ -30,6 +29,7 @@ from neutron.plugins.vmware.dhcp_meta import migration as mig_man
 from neutron.plugins.vmware.dhcp_meta import nsx
 from neutron.plugins.vmware.dhcp_meta import rpc
 from neutron.tests import base
+from neutron.tests.unit import testlib_api
 
 
 class DhcpMetadataBuilderTestCase(base.BaseTestCase):
@@ -704,7 +704,7 @@ class LsnManagerTestCase(base.BaseTestCase):
                           mock.ANY, mock.ANY, mock.ANY, mock.ANY)
 
 
-class PersistentLsnManagerTestCase(base.BaseTestCase):
+class PersistentLsnManagerTestCase(testlib_api.SqlTestCase):
 
     def setUp(self):
         super(PersistentLsnManagerTestCase, self).setUp()
@@ -715,7 +715,6 @@ class PersistentLsnManagerTestCase(base.BaseTestCase):
         self.mac = 'aa:bb:cc:dd:ee:ff'
         self.lsn_port_id = 'foo_lsn_port_id'
         self.tenant_id = 'foo_tenant_id'
-        db.configure_db()
         nsx.register_dhcp_opts(cfg)
         nsx.register_metadata_opts(cfg)
         lsn_man.register_lsn_opts(cfg)
@@ -723,7 +722,6 @@ class PersistentLsnManagerTestCase(base.BaseTestCase):
         self.context = context.get_admin_context()
         self.mock_lsn_api_p = mock.patch.object(lsn_man, 'lsn_api')
         self.mock_lsn_api = self.mock_lsn_api_p.start()
-        self.addCleanup(db.clear_db)
 
     def test_lsn_get(self):
         lsn_db.lsn_add(self.context, self.net_id, self.lsn_id)
index 0918a66d6844c4322ed5f351721bd6ea9c4e5c64..cacfc246c1f1a27e3b78752ad33e8307705359c8 100644 (file)
@@ -37,6 +37,7 @@ from neutron.plugins.vmware import nsxlib
 from neutron.plugins.vmware import plugin
 from neutron.tests import base
 from neutron.tests.unit import test_api_v2
+from neutron.tests.unit import testlib_api
 from neutron.tests.unit import vmware
 from neutron.tests.unit.vmware.apiclient import fake
 
@@ -259,7 +260,7 @@ class SyncLoopingCallTestCase(base.BaseTestCase):
             self.assertTrue(synchronizer._synchronize_state.call_count)
 
 
-class SyncTestCase(base.BaseTestCase):
+class SyncTestCase(testlib_api.SqlTestCase):
 
     def setUp(self):
         # mock api client