summaryrefslogtreecommitdiff
path: root/ironic/tests/base.py
diff options
context:
space:
mode:
authorJohn L. Villalovos <john.l.villalovos@intel.com>2015-09-28 11:36:37 -0700
committerJohn L. Villalovos <openstack.org@sodarock.com>2015-09-28 21:27:01 +0000
commitf350d87af82ba8e33c19fb03eeb67625027838db (patch)
tree21b2b058ad13c7e1a9897c26a82fa2d99be8ecae /ironic/tests/base.py
parentefb8b2abb67ae8810cd59cb5879b33060e1051b4 (diff)
downloadironic-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.py147
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