From 71dffb0a2c1720cd8233a329d32958a0160dd6f5 Mon Sep 17 00:00:00 2001 From: Kevin Benton Date: Mon, 29 Jun 2015 08:27:41 +0000 Subject: [PATCH] Revert "Removed test_lib module" This reverts commit 9a6536de6e1a7fe9b2552adc142e254426b82b6f. We pulled all of the plugins out of the tree, many of which still inherit from neutron test classes. This change then stated that we no longer support testing other plugins. I think this is a bit premature and should have been discussed under the subject "Neutron plugins can't use neutron plugin unit tests" or something similar. Change-Id: I68318589f010b731574ea3bfa8df98492bab31fc --- neutron/common/test_lib.py | 42 +++++++++++++++++++ .../tests/unit/db/test_db_base_plugin_v2.py | 17 +++++++- 2 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 neutron/common/test_lib.py diff --git a/neutron/common/test_lib.py b/neutron/common/test_lib.py new file mode 100644 index 00000000000..994de30f09f --- /dev/null +++ b/neutron/common/test_lib.py @@ -0,0 +1,42 @@ +# Copyright (c) 2010 OpenStack Foundation +# All Rights Reserved. +# +# 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. + +# Colorizer Code is borrowed from Twisted: +# Copyright (c) 2001-2010 Twisted Matrix Laboratories. +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# describes parameters used by different unit/functional tests +# a plugin-specific testing mechanism should import this dictionary +# and override the values in it if needed (e.g., run_tests.py in +# neutron/plugins/openvswitch/ ) +test_config = {} diff --git a/neutron/tests/unit/db/test_db_base_plugin_v2.py b/neutron/tests/unit/db/test_db_base_plugin_v2.py index 62f774053da..ba99aa62487 100644 --- a/neutron/tests/unit/db/test_db_base_plugin_v2.py +++ b/neutron/tests/unit/db/test_db_base_plugin_v2.py @@ -22,6 +22,7 @@ import netaddr from oslo_config import cfg from oslo_db import exception as db_exc from oslo_utils import importutils +import six from sqlalchemy import orm from testtools import matchers import webob.exc @@ -36,6 +37,7 @@ from neutron.callbacks import registry from neutron.common import constants from neutron.common import exceptions as n_exc 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 db_base_plugin_v2 @@ -104,8 +106,11 @@ class NeutronDbPluginV2TestCase(testlib_api.WebTestCase): # Update the plugin self.setup_coreplugin(plugin) - service_plugins = (service_plugins or {}).values() - cfg.CONF.set_override('service_plugins', list(service_plugins)) + cfg.CONF.set_override( + 'service_plugins', + [test_lib.test_config.get(key, default) + for key, default in six.iteritems(service_plugins or {})] + ) cfg.CONF.set_override('base_mac', "12:34:56:78:90:ab") cfg.CONF.set_override('max_dns_nameservers', 2) @@ -157,6 +162,14 @@ class NeutronDbPluginV2TestCase(testlib_api.WebTestCase): self.ext_api = None super(NeutronDbPluginV2TestCase, self).tearDown() + def setup_config(self): + # Create the default configurations + args = ['--config-file', base.etcdir('neutron.conf')] + # 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]) + super(NeutronDbPluginV2TestCase, self).setup_config(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