Merge "Stop using mox stubs in cast_as_call.py"

This commit is contained in:
Jenkins 2017-08-07 21:48:02 +00:00 committed by Gerrit Code Review
commit 6d4fc21709
13 changed files with 48 additions and 32 deletions

View File

@ -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)

View File

@ -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']

View File

@ -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']

View File

@ -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']

View File

@ -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']

View File

@ -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']

View File

@ -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']

View File

@ -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']

View File

@ -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

View File

@ -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')

View File

@ -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']

View File

@ -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)

View File

@ -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,