summaryrefslogtreecommitdiffstats
path: root/nova/test.py
diff options
context:
space:
mode:
authorNachi Ueno <ueno.nachi@lab.ntt.co.jp>2011-01-04 04:18:26 -0500
committerNachi Ueno <ueno.nachi@lab.ntt.co.jp>2011-01-04 04:18:26 -0500
commit4267c1f2042f6e13cd9c77eced7f02750927ee83 (patch)
treeddddf4611449d9fc95f2933d2a0c6fbc89a12a1c /nova/test.py
parentc5c58cb20def79401a374f863983a343139b53f3 (diff)
parentdd1e36b9690a2c2de18c565c496b25295a13d0aa (diff)
downloadnova-4267c1f2042f6e13cd9c77eced7f02750927ee83.tar.gz
nova-4267c1f2042f6e13cd9c77eced7f02750927ee83.tar.xz
nova-4267c1f2042f6e13cd9c77eced7f02750927ee83.zip
Merged and fiexed conflicts with r515
Diffstat (limited to 'nova/test.py')
-rw-r--r--nova/test.py103
1 files changed, 88 insertions, 15 deletions
diff --git a/nova/test.py b/nova/test.py
index ee2fc2720..5922e4b1c 100644
--- a/nova/test.py
+++ b/nova/test.py
@@ -25,11 +25,12 @@ and some black magic for inline callbacks.
import datetime
import sys
import time
+import unittest
import mox
import stubout
from twisted.internet import defer
-from twisted.trial import unittest
+from twisted.trial import unittest as trial_unittest
from nova import context
from nova import db
@@ -37,9 +38,12 @@ from nova import fakerabbit
from nova import flags
from nova import rpc
from nova.network import manager as network_manager
+from nova.tests import fake_flags
FLAGS = flags.FLAGS
+flags.DEFINE_bool('flush_db', True,
+ 'Flush the database before running fake tests')
flags.DEFINE_bool('fake_tests', True,
'should we use everything for testing')
@@ -55,7 +59,89 @@ def skip_if_fake(func):
return _skipper
-class TrialTestCase(unittest.TestCase):
+class TestCase(unittest.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()
+ # NOTE(vish): We need a better method for creating fixtures for tests
+ # now that we have some required db setup for the system
+ # to work properly.
+ self.start = datetime.datetime.utcnow()
+ ctxt = context.get_admin_context()
+ if db.network_count(ctxt) != 5:
+ network_manager.VlanManager().create_networks(ctxt,
+ FLAGS.fixed_range,
+ 5, 16,
+ FLAGS.vlan_start,
+ FLAGS.vpn_start)
+
+ # emulate some of the mox stuff, we can't use the metaclass
+ # because it screws with our generators
+ self.mox = mox.Mox()
+ self.stubs = stubout.StubOutForTesting()
+ self.flag_overrides = {}
+ self.injected = []
+ self._monkey_patch_attach()
+ self._original_flags = FLAGS.FlagValuesDict()
+
+ def tearDown(self):
+ """Runs after each test method to finalize/tear down test
+ environment."""
+ try:
+ self.mox.UnsetStubs()
+ self.stubs.UnsetAll()
+ self.stubs.SmartUnsetAll()
+ self.mox.VerifyAll()
+ # NOTE(vish): Clean up any ips associated during the test.
+ ctxt = context.get_admin_context()
+ db.fixed_ip_disassociate_all_by_timeout(ctxt, FLAGS.host,
+ self.start)
+ db.network_disassociate_all(ctxt)
+ rpc.Consumer.attach_to_eventlet = self.originalAttach
+ for x in self.injected:
+ try:
+ x.stop()
+ except AssertionError:
+ pass
+
+ if FLAGS.fake_rabbit:
+ fakerabbit.reset_all()
+
+ db.security_group_destroy_all(ctxt)
+ super(TestCase, self).tearDown()
+ finally:
+ self.reset_flags()
+
+ def flags(self, **kw):
+ """Override flag variables for a test"""
+ for k, v in kw.iteritems():
+ if k in self.flag_overrides:
+ self.reset_flags()
+ raise Exception(
+ 'trying to override already overriden flag: %s' % k)
+ self.flag_overrides[k] = getattr(FLAGS, k)
+ setattr(FLAGS, k, v)
+
+ def reset_flags(self):
+ """Resets all flag variables for the test. Runs after each test"""
+ FLAGS.Reset()
+ for k, v in self._original_flags.iteritems():
+ setattr(FLAGS, k, v)
+
+ def _monkey_patch_attach(self):
+ self.originalAttach = rpc.Consumer.attach_to_eventlet
+
+ def _wrapped(innerSelf):
+ rv = self.originalAttach(innerSelf)
+ self.injected.append(rv)
+ return rv
+
+ _wrapped.func_name = self.originalAttach.func_name
+ rpc.Consumer.attach_to_eventlet = _wrapped
+
+
+class TrialTestCase(trial_unittest.TestCase):
"""Test case base class for all unit tests"""
def setUp(self):
"""Run before each test method to initialize test environment"""
@@ -79,7 +165,6 @@ class TrialTestCase(unittest.TestCase):
self.stubs = stubout.StubOutForTesting()
self.flag_overrides = {}
self.injected = []
- self._monkey_patch_attach()
self._original_flags = FLAGS.FlagValuesDict()
def tearDown(self):
@@ -95,7 +180,6 @@ class TrialTestCase(unittest.TestCase):
db.fixed_ip_disassociate_all_by_timeout(ctxt, FLAGS.host,
self.start)
db.network_disassociate_all(ctxt)
- rpc.Consumer.attach_to_twisted = self.originalAttach
for x in self.injected:
try:
x.stop()
@@ -148,14 +232,3 @@ class TrialTestCase(unittest.TestCase):
return d
_wrapped.func_name = func.func_name
return _wrapped
-
- def _monkey_patch_attach(self):
- self.originalAttach = rpc.Consumer.attach_to_twisted
-
- def _wrapped(innerSelf):
- rv = self.originalAttach(innerSelf)
- self.injected.append(rv)
- return rv
-
- _wrapped.func_name = self.originalAttach.func_name
- rpc.Consumer.attach_to_twisted = _wrapped