Ensure that all unit test modules can be run independently or in any combination. A new all_models module is imported before Neutron's SqlFixture loads DB schema from model files that derive from Neutron's model_base.BASE_V2. Code that otherwise loads the schema for these models is eliminated. Note that AIM and NFP models do not derive from Neutron's base class, and are handled by their own fixtures. Change-Id: I0b1c20429f75f77929a78b75c7e361bcc5e9b6b7
85 lines
3.3 KiB
Python
85 lines
3.3 KiB
Python
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import functools
|
|
import mock
|
|
|
|
from neutron.api import extensions
|
|
from neutron.tests.unit.plugins.ml2 import (
|
|
test_tracked_resources as n_tracked)
|
|
from neutron.tests.unit.plugins.ml2 import test_plugin
|
|
|
|
import gbpservice.neutron.extensions
|
|
|
|
PLUGIN_NAME = 'ml2plus'
|
|
|
|
|
|
class Ml2PlusConfFixture(test_plugin.PluginConfFixture):
|
|
|
|
def __init__(self, parent_setup=None):
|
|
super(Ml2PlusConfFixture, self).__init__(PLUGIN_NAME, parent_setup)
|
|
|
|
|
|
class Ml2PlusTestTrackedResourcesEventHandler(
|
|
n_tracked.TestTrackedResourcesEventHandler):
|
|
|
|
def setUp(self):
|
|
extensions.append_api_extensions_path(
|
|
gbpservice.neutron.extensions.__path__)
|
|
# Prevent noise from default security group operations
|
|
super(Ml2PlusTestTrackedResourcesEventHandler, self).setUp()
|
|
get_sec_group_port_patch = mock.patch(
|
|
'neutron.db.securitygroups_db.SecurityGroupDbMixin.'
|
|
'_get_security_groups_on_port')
|
|
get_sec_group_port_patch.start()
|
|
|
|
def setup_parent(self):
|
|
"""Perform parent setup with the common plugin configuration class."""
|
|
service_plugins = {'l3_plugin_name': self.l3_plugin}
|
|
service_plugins.update(self.get_additional_service_plugins())
|
|
# Ensure that the parent setup can be called without arguments
|
|
# by the common configuration setUp.
|
|
parent_setup = functools.partial(
|
|
super(test_plugin.Ml2PluginV2TestCase, self).setUp,
|
|
plugin=PLUGIN_NAME,
|
|
service_plugins=service_plugins,
|
|
)
|
|
self.useFixture(Ml2PlusConfFixture(parent_setup))
|
|
self.port_create_status = 'DOWN'
|
|
|
|
|
|
class Ml2PlusTestTrackedResources(n_tracked.TestTrackedResources):
|
|
|
|
def setUp(self):
|
|
extensions.append_api_extensions_path(
|
|
gbpservice.neutron.extensions.__path__)
|
|
# Prevent noise from default security group operations
|
|
super(Ml2PlusTestTrackedResources, self).setUp()
|
|
get_sec_group_port_patch = mock.patch(
|
|
'neutron.db.securitygroups_db.SecurityGroupDbMixin.'
|
|
'_get_security_groups_on_port')
|
|
get_sec_group_port_patch.start()
|
|
|
|
def setup_parent(self):
|
|
"""Perform parent setup with the common plugin configuration class."""
|
|
service_plugins = {'l3_plugin_name': self.l3_plugin}
|
|
service_plugins.update(self.get_additional_service_plugins())
|
|
# Ensure that the parent setup can be called without arguments
|
|
# by the common configuration setUp.
|
|
parent_setup = functools.partial(
|
|
super(test_plugin.Ml2PluginV2TestCase, self).setUp,
|
|
plugin=PLUGIN_NAME,
|
|
service_plugins=service_plugins,
|
|
)
|
|
self.useFixture(Ml2PlusConfFixture(parent_setup))
|
|
self.port_create_status = 'DOWN'
|