Merge "Stop using mox stubs in cast_as_call.py"
This commit is contained in:
commit
6d4fc21709
|
@ -79,7 +79,7 @@ class _IntegratedTestBase(test.TestCase):
|
|||
nova.tests.unit.image.fake.stub_out_image_service(self)
|
||||
self._setup_services()
|
||||
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
self.useFixture(nova_fixtures.PlacementFixture())
|
||||
|
||||
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
|
||||
|
|
|
@ -42,7 +42,7 @@ class TestServerGet(test.TestCase):
|
|||
self.start_service('scheduler')
|
||||
self.compute = self.start_service('compute')
|
||||
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
|
||||
|
||||
self.image_id = self.api.get_images()[0]['id']
|
||||
|
|
|
@ -51,7 +51,7 @@ class TestServerGet(test.TestCase):
|
|||
self.compute = self.start_service('compute')
|
||||
self.consoleauth = self.start_service('consoleauth')
|
||||
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
|
||||
|
||||
self.image_id = self.api.get_images()[0]['id']
|
||||
|
|
|
@ -72,7 +72,7 @@ class TestSerialConsoleLiveMigrate(test.TestCase):
|
|||
self.compute = self.start_service('compute', host='test_compute1')
|
||||
self.consoleauth = self.start_service('consoleauth')
|
||||
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
|
||||
|
||||
self.image_id = self.api.get_images()[0]['id']
|
||||
|
|
|
@ -35,7 +35,7 @@ class TestServerUpdate(test.TestCase):
|
|||
# the image fake backend needed for image discovery
|
||||
nova.tests.unit.image.fake.stub_out_image_service(self)
|
||||
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
self.addCleanup(nova.tests.unit.image.fake.FakeImageService_reset)
|
||||
|
||||
self.image_id = self.api.get_images()[0]['id']
|
||||
|
|
|
@ -64,7 +64,7 @@ class TestDeleteFromCell0CheckQuota(test.TestCase):
|
|||
# compute hosts to schedule the instance to and will go into error and
|
||||
# be put into cell0.
|
||||
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
self.image_id = self.api.get_images()[0]['id']
|
||||
self.flavor_id = self.api.get_flavors()[0]['id']
|
||||
|
|
|
@ -84,7 +84,7 @@ class TestRetryBetweenComputeNodeBuilds(test.TestCase):
|
|||
self.addCleanup(fake.restore_nodes)
|
||||
self.start_service('compute', host='host2')
|
||||
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
self.image_id = self.admin_api.get_images()[0]['id']
|
||||
self.flavor_id = self.admin_api.get_flavors()[0]['id']
|
||||
|
|
|
@ -67,7 +67,7 @@ class TestLocalDeleteAttachedVolumes(test.TestCase):
|
|||
# The consoleauth service is needed for deleting console tokens.
|
||||
self.start_service('consoleauth')
|
||||
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
self.flavor_id = self.api.get_flavors()[0]['id']
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ class ServerListLimitMarkerCell0Test(test.TestCase,
|
|||
self.start_service('scheduler')
|
||||
# We don't start the compute service because we want NoValidHost so
|
||||
# all of the instances go into ERROR state and get put into cell0.
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
def test_list_servers_marker_in_cell0_more_limit(self):
|
||||
"""Creates three servers, then lists them with a marker on the first
|
||||
|
|
|
@ -29,7 +29,7 @@ class ComputeManagerTestCase(test.TestCase):
|
|||
def setUp(self):
|
||||
super(ComputeManagerTestCase, self).setUp()
|
||||
self.useFixture(fixtures.SpawnIsSynchronousFixture())
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
self.conductor = self.start_service('conductor')
|
||||
self.start_service('scheduler')
|
||||
self.compute = self.start_service('compute')
|
||||
|
|
|
@ -45,7 +45,7 @@ class TestListServersIpFilter(test.TestCase):
|
|||
self.start_service('compute')
|
||||
self.start_service('consoleauth')
|
||||
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
self.useFixture(nova_fixtures.PlacementFixture())
|
||||
|
||||
self.image_id = self.api.get_images()[0]['id']
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import sys
|
||||
|
||||
import fixtures
|
||||
import oslo_messaging as messaging
|
||||
|
||||
|
@ -28,13 +30,16 @@ class CastAsCall(fixtures.Fixture):
|
|||
See Ia7f40718533e450f00cd3e7d753ac65755c70588 for more background.
|
||||
"""
|
||||
|
||||
def __init__(self, stubs):
|
||||
def __init__(self, testcase):
|
||||
super(CastAsCall, self).__init__()
|
||||
self.stubs = stubs
|
||||
self.testcase = testcase
|
||||
|
||||
@staticmethod
|
||||
def _stub_out(stubs, obj):
|
||||
orig_prepare = obj.prepare
|
||||
def _stub_out(testcase, obj=None):
|
||||
if obj:
|
||||
orig_prepare = obj.prepare
|
||||
else:
|
||||
orig_prepare = messaging.RPCClient.prepare
|
||||
|
||||
def prepare(self, *args, **kwargs):
|
||||
# Casts with fanout=True would throw errors if its monkeypatched to
|
||||
|
@ -42,12 +47,23 @@ class CastAsCall(fixtures.Fixture):
|
|||
if 'fanout' in kwargs:
|
||||
kwargs['fanout'] = False
|
||||
cctxt = orig_prepare(self, *args, **kwargs)
|
||||
CastAsCall._stub_out(stubs, cctxt) # woo, recurse!
|
||||
CastAsCall._stub_out(testcase, cctxt) # woo, recurse!
|
||||
return cctxt
|
||||
|
||||
stubs.Set(obj, 'prepare', prepare)
|
||||
stubs.Set(obj, 'cast', obj.call)
|
||||
if obj:
|
||||
cls = getattr(sys.modules[obj.__class__.__module__],
|
||||
obj.__class__.__name__)
|
||||
testcase.stub_out('%s.%s.prepare' % (obj.__class__.__module__,
|
||||
obj.__class__.__name__),
|
||||
prepare)
|
||||
testcase.stub_out('%s.%s.cast' % (obj.__class__.__module__,
|
||||
obj.__class__.__name__),
|
||||
cls.call)
|
||||
else:
|
||||
testcase.stub_out('oslo_messaging.RPCClient.prepare', prepare)
|
||||
testcase.stub_out('oslo_messaging.RPCClient.cast',
|
||||
messaging.RPCClient.call)
|
||||
|
||||
def setUp(self):
|
||||
super(CastAsCall, self).setUp()
|
||||
self._stub_out(self.stubs, messaging.RPCClient)
|
||||
self._stub_out(self.testcase)
|
||||
|
|
|
@ -462,7 +462,7 @@ class _BaseTaskTestCase(object):
|
|||
self.mox.ReplayAll()
|
||||
|
||||
# build_instances() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
mock_getaz.return_value = 'myaz'
|
||||
|
||||
|
@ -508,7 +508,7 @@ class _BaseTaskTestCase(object):
|
|||
updates = {'vm_state': vm_states.ERROR, 'task_state': None}
|
||||
|
||||
# build_instances() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
self.conductor.build_instances(
|
||||
self.context,
|
||||
|
@ -552,7 +552,7 @@ class _BaseTaskTestCase(object):
|
|||
set_vm_state_and_notify, cleanup_mock):
|
||||
# build_instances() is a cast, we need to wait for it to
|
||||
# complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
populate_retry.side_effect = exc.MaxRetriesExceeded(
|
||||
reason="Too many try")
|
||||
|
@ -599,7 +599,7 @@ class _BaseTaskTestCase(object):
|
|||
updates = {'vm_state': vm_states.ERROR, 'task_state': None}
|
||||
|
||||
# build_instances() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
self.conductor.build_instances(
|
||||
context=self.context,
|
||||
|
@ -645,7 +645,7 @@ class _BaseTaskTestCase(object):
|
|||
image = {'fake-data': 'should_pass_silently'}
|
||||
|
||||
# build_instances() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
with mock.patch.object(self.conductor_manager.compute_rpcapi,
|
||||
'build_and_run_instance'):
|
||||
|
@ -690,7 +690,7 @@ class _BaseTaskTestCase(object):
|
|||
image = {'fake-data': 'should_pass_silently'}
|
||||
|
||||
# build_instances() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
with mock.patch.object(self.conductor_manager.compute_rpcapi,
|
||||
'build_and_run_instance'):
|
||||
|
@ -742,7 +742,7 @@ class _BaseTaskTestCase(object):
|
|||
image = {'fake-data': 'should_pass_silently'}
|
||||
|
||||
# build_instances() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
with mock.patch.object(self.conductor_manager.compute_rpcapi,
|
||||
'build_and_run_instance'):
|
||||
|
@ -790,7 +790,7 @@ class _BaseTaskTestCase(object):
|
|||
image = {'fake-data': 'should_pass_silently'}
|
||||
|
||||
# build_instances() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
@mock.patch.object(self.conductor_manager.compute_rpcapi,
|
||||
'build_and_run_instance', new=mock.MagicMock())
|
||||
|
@ -833,7 +833,7 @@ class _BaseTaskTestCase(object):
|
|||
image = {'fake-data': 'should_pass_silently'}
|
||||
|
||||
# build_instances() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
@mock.patch.object(self.conductor_manager.compute_rpcapi,
|
||||
'build_and_run_instance')
|
||||
|
@ -926,7 +926,7 @@ class _BaseTaskTestCase(object):
|
|||
host = {'host': 'host1', 'nodename': 'node1', 'limits': []}
|
||||
|
||||
# unshelve_instance() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
@mock.patch.object(objects.InstanceMapping, 'get_by_instance_uuid')
|
||||
@mock.patch.object(self.conductor_manager.compute_rpcapi,
|
||||
|
@ -1278,7 +1278,7 @@ class _BaseTaskTestCase(object):
|
|||
sig_mock.side_effect = exception
|
||||
|
||||
# build_instances() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
self.assertRaises(exc.UnsupportedPolicyException,
|
||||
self.conductor.rebuild_instance,
|
||||
|
@ -2354,7 +2354,7 @@ class ConductorTaskTestCase(_BaseTaskTestCase, test_compute.BaseTestCase):
|
|||
self.mox.ReplayAll()
|
||||
|
||||
# build_instances() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
self.conductor.build_instances(self.context,
|
||||
instances=instances,
|
||||
|
@ -2398,7 +2398,7 @@ class ConductorTaskTestCase(_BaseTaskTestCase, test_compute.BaseTestCase):
|
|||
build_and_run_instance, get_buildreq):
|
||||
|
||||
# build_instances() is a cast, we need to wait for it to complete
|
||||
self.useFixture(cast_as_call.CastAsCall(self.stubs))
|
||||
self.useFixture(cast_as_call.CastAsCall(self))
|
||||
|
||||
self.conductor.build_instances(self.context,
|
||||
instances=instances,
|
||||
|
|
Loading…
Reference in New Issue