From 9bf0e6654480f98f2315a43687b267263a82a823 Mon Sep 17 00:00:00 2001 From: Salvatore Orlando Date: Mon, 5 Aug 2013 08:07:02 -0700 Subject: [PATCH] Remove auto-generation of db schema from models at startup 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 --- neutron/db/api.py | 43 ------------------- neutron/db/db_base_plugin_v2.py | 2 - neutron/db/metering/metering_db.py | 3 -- .../alembic_migrations/common_ext_ops.py | 10 ++--- .../db/migration/alembic_migrations/env.py | 8 +--- .../versions/folsom_initial.py | 4 +- neutron/db/servicetype_db.py | 7 --- neutron/db/vpn/vpn_db.py | 5 --- neutron/plugins/cisco/db/network_db_v2.py | 3 -- .../plugins/cisco/models/virt_phy_sw_v2.py | 6 --- neutron/plugins/hyperv/db.py | 2 - .../plugins/hyperv/hyperv_neutron_plugin.py | 1 - .../plugins/metaplugin/meta_neutron_plugin.py | 4 -- neutron/plugins/nec/db/api.py | 5 --- neutron/services/firewall/fwaas_plugin.py | 2 - neutron/services/l3_router/l3_apic.py | 3 -- .../services/l3_router/l3_router_plugin.py | 3 -- .../loadbalancer/drivers/embrane/db.py | 5 --- .../loadbalancer/drivers/embrane/driver.py | 1 - neutron/services/loadbalancer/plugin.py | 2 - neutron/tests/unit/bigswitch/test_base.py | 7 --- .../tests/unit/brocade/test_brocade_vlan.py | 6 +-- neutron/tests/unit/cisco/n1kv/test_n1kv_db.py | 24 +++-------- .../tests/unit/cisco/n1kv/test_n1kv_plugin.py | 1 - neutron/tests/unit/cisco/test_network_db.py | 15 ++----- neutron/tests/unit/cisco/test_nexus_db.py | 6 +-- neutron/tests/unit/cisco/test_nexus_plugin.py | 8 +--- neutron/tests/unit/cisco/test_plugin_model.py | 4 +- .../db/loadbalancer/test_db_loadbalancer.py | 1 - neutron/tests/unit/db/test_agent_db.py | 6 +-- neutron/tests/unit/db/test_dvr_mac_db.py | 7 +-- neutron/tests/unit/db/test_l3_dvr_db.py | 7 +-- neutron/tests/unit/db/test_quota_db.py | 6 +-- .../unit/embrane/test_embrane_l3_plugin.py | 2 - .../embrane/test_embrane_neutron_plugin.py | 2 - neutron/tests/unit/linuxbridge/test_lb_db.py | 7 +-- .../tests/unit/metaplugin/test_metaplugin.py | 17 ++------ neutron/tests/unit/ml2/db/test_ml2_dvr_db.py | 7 +-- .../arista/test_arista_mechanism_driver.py | 12 ++---- .../drivers/cisco/nexus/test_cisco_nexus.py | 9 +--- .../cisco/nexus/test_cisco_nexus_db.py | 10 +---- .../unit/ml2/drivers/test_l2population.py | 3 -- neutron/tests/unit/ml2/test_helpers.py | 5 +-- neutron/tests/unit/ml2/test_mechanism_odl.py | 3 +- neutron/tests/unit/ml2/test_type_flat.py | 6 +-- neutron/tests/unit/ml2/test_type_gre.py | 10 ++--- neutron/tests/unit/ml2/test_type_vlan.py | 6 +-- neutron/tests/unit/ml2/test_type_vxlan.py | 10 ++--- neutron/tests/unit/mlnx/test_mlnx_db.py | 7 +-- .../unit/mlnx/test_mlnx_plugin_config.py | 4 +- neutron/tests/unit/nec/test_db.py | 1 - neutron/tests/unit/nec/test_ofc_manager.py | 8 +--- neutron/tests/unit/nec/test_security_group.py | 1 - .../unit/opencontrail/test_contrail_plugin.py | 3 -- neutron/tests/unit/openvswitch/test_ovs_db.py | 11 ++--- neutron/tests/unit/ryu/test_ryu_db.py | 1 - neutron/tests/unit/ryu/test_ryu_plugin.py | 1 - .../services/l3_router/test_l3_apic_plugin.py | 4 +- .../vpn/service_drivers/test_cisco_ipsec.py | 6 +-- neutron/tests/unit/test_db_plugin.py | 21 ++++----- neutron/tests/unit/test_db_plugin_level.py | 3 +- neutron/tests/unit/test_dhcp_scheduler.py | 7 +-- .../tests/unit/test_extension_ext_gw_mode.py | 5 +-- neutron/tests/unit/test_l3_plugin.py | 5 --- neutron/tests/unit/test_l3_schedulers.py | 4 +- neutron/tests/unit/test_quota_ext.py | 4 -- .../tests/unit/test_routerserviceinsertion.py | 5 +-- neutron/tests/unit/test_servicetype.py | 5 +-- neutron/tests/unit/testlib_api.py | 21 ++++++++- neutron/tests/unit/vmware/db/test_lsn_db.py | 7 +-- neutron/tests/unit/vmware/db/test_nsx_db.py | 7 +-- neutron/tests/unit/vmware/test_dhcpmeta.py | 6 +-- neutron/tests/unit/vmware/test_nsx_sync.py | 3 +- 73 files changed, 118 insertions(+), 358 deletions(-) diff --git a/neutron/db/api.py b/neutron/db/api.py index 3749081f0a2..777c2b6eead 100644 --- a/neutron/db/api.py +++ b/neutron/db/api.py @@ -15,14 +15,6 @@ 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")) diff --git a/neutron/db/db_base_plugin_v2.py b/neutron/db/db_base_plugin_v2.py index 1c81139295a..34e3b1b4990 100644 --- a/neutron/db/db_base_plugin_v2.py +++ b/neutron/db/db_base_plugin_v2.py @@ -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 diff --git a/neutron/db/metering/metering_db.py b/neutron/db/metering/metering_db.py index aad24dc4d06..3eb701f2a9a 100644 --- a/neutron/db/metering/metering_db.py +++ b/neutron/db/metering/metering_db.py @@ -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): diff --git a/neutron/db/migration/alembic_migrations/common_ext_ops.py b/neutron/db/migration/alembic_migrations/common_ext_ops.py index 5663ff22897..bb34e564af0 100644 --- a/neutron/db/migration/alembic_migrations/common_ext_ops.py +++ b/neutron/db/migration/alembic_migrations/common_ext_ops.py @@ -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') diff --git a/neutron/db/migration/alembic_migrations/env.py b/neutron/db/migration/alembic_migrations/env.py index 0c659866e3f..db20ce912f4 100644 --- a/neutron/db/migration/alembic_migrations/env.py +++ b/neutron/db/migration/alembic_migrations/env.py @@ -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(): diff --git a/neutron/db/migration/alembic_migrations/versions/folsom_initial.py b/neutron/db/migration/alembic_migrations/versions/folsom_initial.py index 3e14870319e..0ea61122267 100644 --- a/neutron/db/migration/alembic_migrations/versions/folsom_initial.py +++ b/neutron/db/migration/alembic_migrations/versions/folsom_initial.py @@ -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() diff --git a/neutron/db/servicetype_db.py b/neutron/db/servicetype_db.py index 9bb12ac67a8..6dae9b7627d 100644 --- a/neutron/db/servicetype_db.py +++ b/neutron/db/servicetype_db.py @@ -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()) diff --git a/neutron/db/vpn/vpn_db.py b/neutron/db/vpn/vpn_db.py index 1af84b5f699..e8aeee8c133 100644 --- a/neutron/db/vpn/vpn_db.py +++ b/neutron/db/vpn/vpn_db.py @@ -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. diff --git a/neutron/plugins/cisco/db/network_db_v2.py b/neutron/plugins/cisco/db/network_db_v2.py index e7adf1a92d5..53cfb17aa6a 100644 --- a/neutron/plugins/cisco/db/network_db_v2.py +++ b/neutron/plugins/cisco/db/network_db_v2.py @@ -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 diff --git a/neutron/plugins/cisco/models/virt_phy_sw_v2.py b/neutron/plugins/cisco/models/virt_phy_sw_v2.py index 619c006261b..53fd6e2112c 100644 --- a/neutron/plugins/cisco/models/virt_phy_sw_v2.py +++ b/neutron/plugins/cisco/models/virt_phy_sw_v2.py @@ -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() diff --git a/neutron/plugins/hyperv/db.py b/neutron/plugins/hyperv/db.py index 276b0c38f8f..e3a88dc0ea7 100644 --- a/neutron/plugins/hyperv/db.py +++ b/neutron/plugins/hyperv/db.py @@ -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): diff --git a/neutron/plugins/hyperv/hyperv_neutron_plugin.py b/neutron/plugins/hyperv/hyperv_neutron_plugin.py index 765f65bbd42..302f05e2a5b 100644 --- a/neutron/plugins/hyperv/hyperv_neutron_plugin.py +++ b/neutron/plugins/hyperv/hyperv_neutron_plugin.py @@ -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() diff --git a/neutron/plugins/metaplugin/meta_neutron_plugin.py b/neutron/plugins/metaplugin/meta_neutron_plugin.py index 97a460823c5..5adc86087ed 100644 --- a/neutron/plugins/metaplugin/meta_neutron_plugin.py +++ b/neutron/plugins/metaplugin/meta_neutron_plugin.py @@ -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(':') diff --git a/neutron/plugins/nec/db/api.py b/neutron/plugins/nec/db/api.py index ddd53ba5f8c..02cb79491a7 100644 --- a/neutron/plugins/nec/db/api.py +++ b/neutron/plugins/nec/db/api.py @@ -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: diff --git a/neutron/services/firewall/fwaas_plugin.py b/neutron/services/firewall/fwaas_plugin.py index 5c8d04c777f..eeb70642a8d 100644 --- a/neutron/services/firewall/fwaas_plugin.py +++ b/neutron/services/firewall/fwaas_plugin.py @@ -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)] diff --git a/neutron/services/l3_router/l3_apic.py b/neutron/services/l3_router/l3_apic.py index 54c202ecbd2..3405ad6517e 100644 --- a/neutron/services/l3_router/l3_apic.py +++ b/neutron/services/l3_router/l3_apic.py @@ -15,11 +15,9 @@ # # @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 diff --git a/neutron/services/l3_router/l3_router_plugin.py b/neutron/services/l3_router/l3_router_plugin.py index 0faa54e4e2e..1fa763c82e7 100644 --- a/neutron/services/l3_router/l3_router_plugin.py +++ b/neutron/services/l3_router/l3_router_plugin.py @@ -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) diff --git a/neutron/services/loadbalancer/drivers/embrane/db.py b/neutron/services/loadbalancer/drivers/embrane/db.py index 005fbe09a24..2e5c9e1d968 100644 --- a/neutron/services/loadbalancer/drivers/embrane/db.py +++ b/neutron/services/loadbalancer/drivers/embrane/db.py @@ -15,15 +15,10 @@ # # @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): diff --git a/neutron/services/loadbalancer/drivers/embrane/driver.py b/neutron/services/loadbalancer/drivers/embrane/driver.py index a230587ff9d..a6a09fd91c6 100644 --- a/neutron/services/loadbalancer/drivers/embrane/driver.py +++ b/neutron/services/loadbalancer/drivers/embrane/driver.py @@ -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') diff --git a/neutron/services/loadbalancer/plugin.py b/neutron/services/loadbalancer/plugin.py index 4e992e08519..6951f1e1718 100644 --- a/neutron/services/loadbalancer/plugin.py +++ b/neutron/services/loadbalancer/plugin.py @@ -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() diff --git a/neutron/tests/unit/bigswitch/test_base.py b/neutron/tests/unit/bigswitch/test_base.py index 2a792231621..e74024c7cc1 100644 --- a/neutron/tests/unit/bigswitch/test_base.py +++ b/neutron/tests/unit/bigswitch/test_base.py @@ -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() diff --git a/neutron/tests/unit/brocade/test_brocade_vlan.py b/neutron/tests/unit/brocade/test_brocade_vlan.py index 144f4bb0a5c..09d030767a6 100644 --- a/neutron/tests/unit/brocade/test_brocade_vlan.py +++ b/neutron/tests/unit/brocade/test_brocade_vlan.py @@ -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() diff --git a/neutron/tests/unit/cisco/n1kv/test_n1kv_db.py b/neutron/tests/unit/cisco/n1kv/test_n1kv_db.py index ea8d99c3221..dcbb9233264 100644 --- a/neutron/tests/unit/cisco/n1kv/test_n1kv_db.py +++ b/neutron/tests/unit/cisco/n1kv/test_n1kv_db.py @@ -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): diff --git a/neutron/tests/unit/cisco/n1kv/test_n1kv_plugin.py b/neutron/tests/unit/cisco/n1kv/test_n1kv_plugin.py index cbe4d468316..ef08e035476 100644 --- a/neutron/tests/unit/cisco/n1kv/test_n1kv_plugin.py +++ b/neutron/tests/unit/cisco/n1kv/test_n1kv_plugin.py @@ -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. diff --git a/neutron/tests/unit/cisco/test_network_db.py b/neutron/tests/unit/cisco/test_network_db.py index 931f85b5b79..a07c22e82ce 100644 --- a/neutron/tests/unit/cisco/test_network_db.py +++ b/neutron/tests/unit/cisco/test_network_db.py @@ -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. diff --git a/neutron/tests/unit/cisco/test_nexus_db.py b/neutron/tests/unit/cisco/test_nexus_db.py index 49b3dce50c2..2d7ba213bc9 100644 --- a/neutron/tests/unit/cisco/test_nexus_db.py +++ b/neutron/tests/unit/cisco/test_nexus_db.py @@ -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.""" diff --git a/neutron/tests/unit/cisco/test_nexus_plugin.py b/neutron/tests/unit/cisco/test_nexus_plugin.py index 6cf54ab8489..4262b818767 100644 --- a/neutron/tests/unit/cisco/test_nexus_plugin.py +++ b/neutron/tests/unit/cisco/test_nexus_plugin.py @@ -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() diff --git a/neutron/tests/unit/cisco/test_plugin_model.py b/neutron/tests/unit/cisco/test_plugin_model.py index fa87a501048..7a99d30b55f 100755 --- a/neutron/tests/unit/cisco/test_plugin_model.py +++ b/neutron/tests/unit/cisco/test_plugin_model.py @@ -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 diff --git a/neutron/tests/unit/db/loadbalancer/test_db_loadbalancer.py b/neutron/tests/unit/db/loadbalancer/test_db_loadbalancer.py index b47d6116764..68aa517ae60 100644 --- a/neutron/tests/unit/db/loadbalancer/test_db_loadbalancer.py +++ b/neutron/tests/unit/db/loadbalancer/test_db_loadbalancer.py @@ -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 diff --git a/neutron/tests/unit/db/test_agent_db.py b/neutron/tests/unit/db/test_agent_db.py index 5f726f40ef0..529cd85b854 100644 --- a/neutron/tests/unit/db/test_agent_db.py +++ b/neutron/tests/unit/db/test_agent_db.py @@ -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', diff --git a/neutron/tests/unit/db/test_dvr_mac_db.py b/neutron/tests/unit/db/test_dvr_mac_db.py index 75b1b0b65d5..f949959cc79 100644 --- a/neutron/tests/unit/db/test_dvr_mac_db.py +++ b/neutron/tests/unit/db/test_dvr_mac_db.py @@ -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): diff --git a/neutron/tests/unit/db/test_l3_dvr_db.py b/neutron/tests/unit/db/test_l3_dvr_db.py index 5cec5587b27..2bcfa01ecd1 100644 --- a/neutron/tests/unit/db/test_l3_dvr_db.py +++ b/neutron/tests/unit/db/test_l3_dvr_db.py @@ -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): diff --git a/neutron/tests/unit/db/test_quota_db.py b/neutron/tests/unit/db/test_quota_db.py index 9c6bca355bf..a7dfa40bfdb 100644 --- a/neutron/tests/unit/db/test_quota_db.py +++ b/neutron/tests/unit/db/test_quota_db.py @@ -17,10 +17,9 @@ 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)} diff --git a/neutron/tests/unit/embrane/test_embrane_l3_plugin.py b/neutron/tests/unit/embrane/test_embrane_l3_plugin.py index 699527ff7b3..cd4dc615022 100644 --- a/neutron/tests/unit/embrane/test_embrane_l3_plugin.py +++ b/neutron/tests/unit/embrane/test_embrane_l3_plugin.py @@ -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() diff --git a/neutron/tests/unit/embrane/test_embrane_neutron_plugin.py b/neutron/tests/unit/embrane/test_embrane_neutron_plugin.py index e49da11acf8..111a0a8e1ac 100644 --- a/neutron/tests/unit/embrane/test_embrane_neutron_plugin.py +++ b/neutron/tests/unit/embrane/test_embrane_neutron_plugin.py @@ -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) diff --git a/neutron/tests/unit/linuxbridge/test_lb_db.py b/neutron/tests/unit/linuxbridge/test_lb_db.py index 41f56b52ed3..f432482103f 100644 --- a/neutron/tests/unit/linuxbridge/test_lb_db.py +++ b/neutron/tests/unit/linuxbridge/test_lb_db.py @@ -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): diff --git a/neutron/tests/unit/metaplugin/test_metaplugin.py b/neutron/tests/unit/metaplugin/test_metaplugin.py index c05074948b8..57e02779119 100644 --- a/neutron/tests/unit/metaplugin/test_metaplugin.py +++ b/neutron/tests/unit/metaplugin/test_metaplugin.py @@ -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): diff --git a/neutron/tests/unit/ml2/db/test_ml2_dvr_db.py b/neutron/tests/unit/ml2/db/test_ml2_dvr_db.py index 847d28de9a8..bfb8635d207 100644 --- a/neutron/tests/unit/ml2/db/test_ml2_dvr_db.py +++ b/neutron/tests/unit/ml2/db/test_ml2_dvr_db.py @@ -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): diff --git a/neutron/tests/unit/ml2/drivers/arista/test_arista_mechanism_driver.py b/neutron/tests/unit/ml2/drivers/arista/test_arista_mechanism_driver.py index 8749d507346..56b8a42afdd 100644 --- a/neutron/tests/unit/ml2/drivers/arista/test_arista_mechanism_driver.py +++ b/neutron/tests/unit/ml2/drivers/arista/test_arista_mechanism_driver.py @@ -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): diff --git a/neutron/tests/unit/ml2/drivers/cisco/nexus/test_cisco_nexus.py b/neutron/tests/unit/ml2/drivers/cisco/nexus/test_cisco_nexus.py index 482c4500b18..b184e51723d 100644 --- a/neutron/tests/unit/ml2/drivers/cisco/nexus/test_cisco_nexus.py +++ b/neutron/tests/unit/ml2/drivers/cisco/nexus/test_cisco_nexus.py @@ -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 diff --git a/neutron/tests/unit/ml2/drivers/cisco/nexus/test_cisco_nexus_db.py b/neutron/tests/unit/ml2/drivers/cisco/nexus/test_cisco_nexus_db.py index 08cc9a95170..12789701a80 100644 --- a/neutron/tests/unit/ml2/drivers/cisco/nexus/test_cisco_nexus_db.py +++ b/neutron/tests/unit/ml2/drivers/cisco/nexus/test_cisco_nexus_db.py @@ -16,23 +16,17 @@ 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': diff --git a/neutron/tests/unit/ml2/drivers/test_l2population.py b/neutron/tests/unit/ml2/drivers/test_l2population.py index 12a88b83d39..ef34e53ac52 100644 --- a/neutron/tests/unit/ml2/drivers/test_l2population.py +++ b/neutron/tests/unit/ml2/drivers/test_l2population.py @@ -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() diff --git a/neutron/tests/unit/ml2/test_helpers.py b/neutron/tests/unit/ml2/test_helpers.py index 7c74a53870e..2297fb9f744 100644 --- a/neutron/tests/unit/ml2/test_helpers.py +++ b/neutron/tests/unit/ml2/test_helpers.py @@ -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__, diff --git a/neutron/tests/unit/ml2/test_mechanism_odl.py b/neutron/tests/unit/ml2/test_mechanism_odl.py index 22ebfbe7a2c..e743c345793 100644 --- a/neutron/tests/unit/ml2/test_mechanism_odl.py +++ b/neutron/tests/unit/ml2/test_mechanism_odl.py @@ -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'): diff --git a/neutron/tests/unit/ml2/test_type_flat.py b/neutron/tests/unit/ml2/test_type_flat.py index b752d9ed13a..1620edfdc2f 100644 --- a/neutron/tests/unit/ml2/test_type_flat.py +++ b/neutron/tests/unit/ml2/test_type_flat.py @@ -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( diff --git a/neutron/tests/unit/ml2/test_type_gre.py b/neutron/tests/unit/ml2/test_type_gre.py index d695c4f00be..62d7b88512f 100644 --- a/neutron/tests/unit/ml2/test_type_gre.py +++ b/neutron/tests/unit/ml2/test_type_gre.py @@ -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) diff --git a/neutron/tests/unit/ml2/test_type_vlan.py b/neutron/tests/unit/ml2/test_type_vlan.py index b36bc42e9f6..2a781521207 100644 --- a/neutron/tests/unit/ml2/test_type_vlan.py +++ b/neutron/tests/unit/ml2/test_type_vlan.py @@ -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( diff --git a/neutron/tests/unit/ml2/test_type_vxlan.py b/neutron/tests/unit/ml2/test_type_vxlan.py index 1f7fed2b4b0..7953617ddf4 100644 --- a/neutron/tests/unit/ml2/test_type_vxlan.py +++ b/neutron/tests/unit/ml2/test_type_vxlan.py @@ -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) diff --git a/neutron/tests/unit/mlnx/test_mlnx_db.py b/neutron/tests/unit/mlnx/test_mlnx_db.py index a72ed0865a9..6ece2044dc2 100644 --- a/neutron/tests/unit/mlnx/test_mlnx_db.py +++ b/neutron/tests/unit/mlnx/test_mlnx_db.py @@ -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): diff --git a/neutron/tests/unit/mlnx/test_mlnx_plugin_config.py b/neutron/tests/unit/mlnx/test_mlnx_plugin_config.py index 70f3d2df494..90991a604c9 100644 --- a/neutron/tests/unit/mlnx/test_mlnx_plugin_config.py +++ b/neutron/tests/unit/mlnx/test_mlnx_plugin_config.py @@ -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, diff --git a/neutron/tests/unit/nec/test_db.py b/neutron/tests/unit/nec/test_db.py index 62ea0a3e206..69927d99c27 100644 --- a/neutron/tests/unit/nec/test_db.py +++ b/neutron/tests/unit/nec/test_db.py @@ -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 diff --git a/neutron/tests/unit/nec/test_ofc_manager.py b/neutron/tests/unit/nec/test_ofc_manager.py index 47de0ed6ef3..13d71d766e1 100644 --- a/neutron/tests/unit/nec/test_ofc_manager.py +++ b/neutron/tests/unit/nec/test_ofc_manager.py @@ -16,13 +16,11 @@ 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) diff --git a/neutron/tests/unit/nec/test_security_group.py b/neutron/tests/unit/nec/test_security_group.py index 0b681969f76..fd442c3b241 100644 --- a/neutron/tests/unit/nec/test_security_group.py +++ b/neutron/tests/unit/nec/test_security_group.py @@ -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 diff --git a/neutron/tests/unit/opencontrail/test_contrail_plugin.py b/neutron/tests/unit/opencontrail/test_contrail_plugin.py index a9833920136..de280f346f8 100644 --- a/neutron/tests/unit/opencontrail/test_contrail_plugin.py +++ b/neutron/tests/unit/opencontrail/test_contrail_plugin.py @@ -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) diff --git a/neutron/tests/unit/openvswitch/test_ovs_db.py b/neutron/tests/unit/openvswitch/test_ovs_db.py index f1fbe03235e..a82f546b126 100644 --- a/neutron/tests/unit/openvswitch/test_ovs_db.py +++ b/neutron/tests/unit/openvswitch/test_ovs_db.py @@ -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): diff --git a/neutron/tests/unit/ryu/test_ryu_db.py b/neutron/tests/unit/ryu/test_ryu_db.py index 4cbdbe62c34..97ea3bffc28 100644 --- a/neutron/tests/unit/ryu/test_ryu_db.py +++ b/neutron/tests/unit/ryu/test_ryu_db.py @@ -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 diff --git a/neutron/tests/unit/ryu/test_ryu_plugin.py b/neutron/tests/unit/ryu/test_ryu_plugin.py index e0dfe283eec..cfbe5285b87 100644 --- a/neutron/tests/unit/ryu/test_ryu_plugin.py +++ b/neutron/tests/unit/ryu/test_ryu_plugin.py @@ -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 diff --git a/neutron/tests/unit/services/l3_router/test_l3_apic_plugin.py b/neutron/tests/unit/services/l3_router/test_l3_apic_plugin.py index 6bc33ef2859..55b168e8877 100644 --- a/neutron/tests/unit/services/l3_router/test_l3_apic_plugin.py +++ b/neutron/tests/unit/services/l3_router/test_l3_apic_plugin.py @@ -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() diff --git a/neutron/tests/unit/services/vpn/service_drivers/test_cisco_ipsec.py b/neutron/tests/unit/services/vpn/service_drivers/test_cisco_ipsec.py index d9e1d1ca1b6..36259b38033 100644 --- a/neutron/tests/unit/services/vpn/service_drivers/test_cisco_ipsec.py +++ b/neutron/tests/unit/services/vpn/service_drivers/test_cisco_ipsec.py @@ -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() diff --git a/neutron/tests/unit/test_db_plugin.py b/neutron/tests/unit/test_db_plugin.py index d004fb359a7..0145a34b86e 100644 --- a/neutron/tests/unit/test_db_plugin.py +++ b/neutron/tests/unit/test_db_plugin.py @@ -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) diff --git a/neutron/tests/unit/test_db_plugin_level.py b/neutron/tests/unit/test_db_plugin_level.py index 3fe2be1fa22..a0ebbb5e66e 100644 --- a/neutron/tests/unit/test_db_plugin_level.py +++ b/neutron/tests/unit/test_db_plugin_level.py @@ -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' diff --git a/neutron/tests/unit/test_dhcp_scheduler.py b/neutron/tests/unit/test_dhcp_scheduler.py index d0282bbc784..293255eb9ef 100644 --- a/neutron/tests/unit/test_dhcp_scheduler.py +++ b/neutron/tests/unit/test_dhcp_scheduler.py @@ -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 [ diff --git a/neutron/tests/unit/test_extension_ext_gw_mode.py b/neutron/tests/unit/test_extension_ext_gw_mode.py index a9e97066aba..9079753936a 100644 --- a/neutron/tests/unit/test_extension_ext_gw_mode.py +++ b/neutron/tests/unit/test_extension_ext_gw_mode.py @@ -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 diff --git a/neutron/tests/unit/test_l3_plugin.py b/neutron/tests/unit/test_l3_plugin.py index f1bc02b7e71..c474458f289 100644 --- a/neutron/tests/unit/test_l3_plugin.py +++ b/neutron/tests/unit/test_l3_plugin.py @@ -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 diff --git a/neutron/tests/unit/test_l3_schedulers.py b/neutron/tests/unit/test_l3_schedulers.py index ae9fe0f1246..d329defa1ae 100644 --- a/neutron/tests/unit/test_l3_schedulers.py +++ b/neutron/tests/unit/test_l3_schedulers.py @@ -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' diff --git a/neutron/tests/unit/test_quota_ext.py b/neutron/tests/unit/test_quota_ext.py index 58af1ff0f91..e612b0fc9b0 100644 --- a/neutron/tests/unit/test_quota_ext.py +++ b/neutron/tests/unit/test_quota_ext.py @@ -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() diff --git a/neutron/tests/unit/test_routerserviceinsertion.py b/neutron/tests/unit/test_routerserviceinsertion.py index 7db7d428404..4167217744e 100644 --- a/neutron/tests/unit/test_routerserviceinsertion.py +++ b/neutron/tests/unit/test_routerserviceinsertion.py @@ -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): diff --git a/neutron/tests/unit/test_servicetype.py b/neutron/tests/unit/test_servicetype.py index 6db85b79f4c..3fe02f69b28 100644 --- a/neutron/tests/unit/test_servicetype.py +++ b/neutron/tests/unit/test_servicetype.py @@ -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): diff --git a/neutron/tests/unit/testlib_api.py b/neutron/tests/unit/testlib_api.py index 1407ab0b808..a8c7a7e6edb 100644 --- a/neutron/tests/unit/testlib_api.py +++ b/neutron/tests/unit/testlib_api.py @@ -16,6 +16,10 @@ 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): diff --git a/neutron/tests/unit/vmware/db/test_lsn_db.py b/neutron/tests/unit/vmware/db/test_lsn_db.py index 34641de5300..42dd3e6e63e 100644 --- a/neutron/tests/unit/vmware/db/test_lsn_db.py +++ b/neutron/tests/unit/vmware/db/test_lsn_db.py @@ -16,19 +16,16 @@ 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' diff --git a/neutron/tests/unit/vmware/db/test_nsx_db.py b/neutron/tests/unit/vmware/db/test_nsx_db.py index 35552c0e288..f4078a46948 100644 --- a/neutron/tests/unit/vmware/db/test_nsx_db.py +++ b/neutron/tests/unit/vmware/db/test_nsx_db.py @@ -16,20 +16,17 @@ 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): diff --git a/neutron/tests/unit/vmware/test_dhcpmeta.py b/neutron/tests/unit/vmware/test_dhcpmeta.py index 23c4a86cf05..d6c519218da 100644 --- a/neutron/tests/unit/vmware/test_dhcpmeta.py +++ b/neutron/tests/unit/vmware/test_dhcpmeta.py @@ -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) diff --git a/neutron/tests/unit/vmware/test_nsx_sync.py b/neutron/tests/unit/vmware/test_nsx_sync.py index 0918a66d684..cacfc246c1f 100644 --- a/neutron/tests/unit/vmware/test_nsx_sync.py +++ b/neutron/tests/unit/vmware/test_nsx_sync.py @@ -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