diff options
author | John L. Villalovos <john.l.villalovos@intel.com> | 2015-09-28 11:36:37 -0700 |
---|---|---|
committer | John L. Villalovos <openstack.org@sodarock.com> | 2015-09-28 21:27:01 +0000 |
commit | f350d87af82ba8e33c19fb03eeb67625027838db (patch) | |
tree | 21b2b058ad13c7e1a9897c26a82fa2d99be8ecae /ironic/tests/base.py | |
parent | efb8b2abb67ae8810cd59cb5879b33060e1051b4 (diff) | |
download | ironic-f350d87af82ba8e33c19fb03eeb67625027838db.tar.gz |
Prepare for functional testing
Prepare for functional testing by creating two new directories:
* ironic/tests/unit
* ironic/tests/functional
Move all files currently in ironic/tests/* to ironic/tests/unit/
Update imports from 'ironic.tests.YYY' to 'ironic.tests.unit.YYY'
Fix any PEP8 issues due to longer lines
Partial-Bug: #1491670
Change-Id: I1166f20adf8c84b2042b62e348926502a4851e08
Diffstat (limited to 'ironic/tests/base.py')
-rw-r--r-- | ironic/tests/base.py | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/ironic/tests/base.py b/ironic/tests/base.py deleted file mode 100644 index 4c1bc896f..000000000 --- a/ironic/tests/base.py +++ /dev/null @@ -1,147 +0,0 @@ -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# 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. - -"""Base classes for our unit tests. - -Allows overriding of config for use of fakes, and some black magic for -inline callbacks. - -""" - -import copy -import os -import sys -import tempfile - -import eventlet -eventlet.monkey_patch(os=False) -import fixtures -from oslo_config import cfg -from oslo_context import context as ironic_context -from oslo_log import log as logging -import testtools - -from ironic.common import hash_ring -from ironic.objects import base as objects_base -from ironic.tests import conf_fixture -from ironic.tests import policy_fixture - - -CONF = cfg.CONF -logging.register_options(CONF) -CONF.set_override('use_stderr', False) - -logging.setup(CONF, 'ironic') - - -class ReplaceModule(fixtures.Fixture): - """Replace a module with a fake module.""" - - def __init__(self, name, new_value): - self.name = name - self.new_value = new_value - - def _restore(self, old_value): - sys.modules[self.name] = old_value - - def setUp(self): - super(ReplaceModule, self).setUp() - old_value = sys.modules.get(self.name) - sys.modules[self.name] = self.new_value - self.addCleanup(self._restore, old_value) - - -class TestingException(Exception): - pass - - -class TestCase(testtools.TestCase): - """Test case base class for all unit tests.""" - - def setUp(self): - """Run before each test method to initialize test environment.""" - super(TestCase, self).setUp() - self.context = ironic_context.get_admin_context() - test_timeout = os.environ.get('OS_TEST_TIMEOUT', 0) - try: - test_timeout = int(test_timeout) - except ValueError: - # If timeout value is invalid do not set a timeout. - test_timeout = 0 - if test_timeout > 0: - self.useFixture(fixtures.Timeout(test_timeout, gentle=True)) - self.useFixture(fixtures.NestedTempfile()) - self.useFixture(fixtures.TempHomeDir()) - self.config(tempdir=tempfile.tempdir) - - if (os.environ.get('OS_STDOUT_CAPTURE') == 'True' or - os.environ.get('OS_STDOUT_CAPTURE') == '1'): - stdout = self.useFixture(fixtures.StringStream('stdout')).stream - self.useFixture(fixtures.MonkeyPatch('sys.stdout', stdout)) - if (os.environ.get('OS_STDERR_CAPTURE') == 'True' or - os.environ.get('OS_STDERR_CAPTURE') == '1'): - stderr = self.useFixture(fixtures.StringStream('stderr')).stream - self.useFixture(fixtures.MonkeyPatch('sys.stderr', stderr)) - - self.log_fixture = self.useFixture(fixtures.FakeLogger()) - self.useFixture(conf_fixture.ConfFixture(CONF)) - - # NOTE(danms): Make sure to reset us back to non-remote objects - # for each test to avoid interactions. Also, backup the object - # registry - objects_base.IronicObject.indirection_api = None - self._base_test_obj_backup = copy.copy( - objects_base.IronicObjectRegistry.obj_classes()) - self.addCleanup(self._restore_obj_registry) - - self.addCleanup(self._clear_attrs) - self.addCleanup(hash_ring.HashRingManager().reset) - self.useFixture(fixtures.EnvironmentVariable('http_proxy')) - self.policy = self.useFixture(policy_fixture.PolicyFixture()) - CONF.set_override('fatal_exception_format_errors', True) - - def _restore_obj_registry(self): - objects_base.IronicObjectRegistry._registry._obj_classes = ( - self._base_test_obj_backup) - - def _clear_attrs(self): - # Delete attributes that don't start with _ so they don't pin - # memory around unnecessarily for the duration of the test - # suite - for key in [k for k in self.__dict__.keys() if k[0] != '_']: - del self.__dict__[key] - - def config(self, **kw): - """Override config options for a test.""" - group = kw.pop('group', None) - for k, v in kw.items(): - CONF.set_override(k, v, group) - - def path_get(self, project_file=None): - """Get the absolute path to a file. Used for testing the API. - - :param project_file: File whose path to return. Default: None. - :returns: path to the specified file, or path to project root. - """ - root = os.path.abspath(os.path.join(os.path.dirname(__file__), - '..', - '..', - ) - ) - if project_file: - return os.path.join(root, project_file) - else: - return root |