Replace mox with mock for xenapi vm_utils.lookup
The py34 check jobs are failing occasionally when trying to use mox on the vm_utils.lookup method, seemingly because it is not restored properly at some point. Rather than chase that down this patch replaces the usage of mox with mock for patching this method. Change-Id: I3f36b72ab435dea224eb61d449e13ae80d9b61a8 Closes-Bug: 1590896
This commit is contained in:
parent
d4afe8b368
commit
4e5015f228
|
@ -679,55 +679,35 @@ class GetInstanceForVdisForSrTestCase(VMUtilsTestBase):
|
|||
|
||||
class VMRefOrRaiseVMFoundTestCase(VMUtilsTestBase):
|
||||
|
||||
def test_lookup_call(self):
|
||||
mock = mox.Mox()
|
||||
mock.StubOutWithMock(vm_utils, 'lookup')
|
||||
|
||||
vm_utils.lookup('session', 'somename').AndReturn('ignored')
|
||||
|
||||
mock.ReplayAll()
|
||||
@mock.patch.object(vm_utils, 'lookup', return_value='ignored')
|
||||
def test_lookup_call(self, mock_lookup):
|
||||
vm_utils.vm_ref_or_raise('session', 'somename')
|
||||
mock.VerifyAll()
|
||||
mock_lookup.assert_called_once_with('session', 'somename')
|
||||
|
||||
def test_return_value(self):
|
||||
mock = mox.Mox()
|
||||
mock.StubOutWithMock(vm_utils, 'lookup')
|
||||
|
||||
vm_utils.lookup(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn('vmref')
|
||||
|
||||
mock.ReplayAll()
|
||||
@mock.patch.object(vm_utils, 'lookup', return_value='vmref')
|
||||
def test_return_value(self, mock_lookup):
|
||||
self.assertEqual(
|
||||
'vmref', vm_utils.vm_ref_or_raise('session', 'somename'))
|
||||
mock.VerifyAll()
|
||||
mock_lookup.assert_called_once_with('session', 'somename')
|
||||
|
||||
|
||||
class VMRefOrRaiseVMNotFoundTestCase(VMUtilsTestBase):
|
||||
|
||||
def test_exception_raised(self):
|
||||
mock = mox.Mox()
|
||||
mock.StubOutWithMock(vm_utils, 'lookup')
|
||||
|
||||
vm_utils.lookup('session', 'somename').AndReturn(None)
|
||||
|
||||
mock.ReplayAll()
|
||||
@mock.patch.object(vm_utils, 'lookup', return_value=None)
|
||||
def test_exception_raised(self, mock_lookup):
|
||||
self.assertRaises(
|
||||
exception.InstanceNotFound,
|
||||
lambda: vm_utils.vm_ref_or_raise('session', 'somename')
|
||||
)
|
||||
mock.VerifyAll()
|
||||
mock_lookup.assert_called_once_with('session', 'somename')
|
||||
|
||||
def test_exception_msg_contains_vm_name(self):
|
||||
mock = mox.Mox()
|
||||
mock.StubOutWithMock(vm_utils, 'lookup')
|
||||
|
||||
vm_utils.lookup('session', 'somename').AndReturn(None)
|
||||
|
||||
mock.ReplayAll()
|
||||
@mock.patch.object(vm_utils, 'lookup', return_value=None)
|
||||
def test_exception_msg_contains_vm_name(self, mock_lookup):
|
||||
try:
|
||||
vm_utils.vm_ref_or_raise('session', 'somename')
|
||||
except exception.InstanceNotFound as e:
|
||||
self.assertIn('somename', six.text_type(e))
|
||||
mock.VerifyAll()
|
||||
mock_lookup.assert_called_once_with('session', 'somename')
|
||||
|
||||
|
||||
@mock.patch.object(vm_utils, 'safe_find_sr', return_value='safe_find_sr')
|
||||
|
|
|
@ -94,30 +94,35 @@ class VMOpsTestCase(VMOpsTestBase):
|
|||
'task_state': task_states.RESIZE_MIGRATING}
|
||||
context = 'fake_context'
|
||||
|
||||
self.mox.StubOutWithMock(vm_utils, 'lookup')
|
||||
self.mox.StubOutWithMock(self._vmops, '_destroy')
|
||||
self.mox.StubOutWithMock(vm_utils, 'set_vm_name_label')
|
||||
self.mox.StubOutWithMock(self._vmops, '_attach_mapped_block_devices')
|
||||
self.mox.StubOutWithMock(self._vmops, '_start')
|
||||
self.mox.StubOutWithMock(vm_utils, 'is_vm_shutdown')
|
||||
lookup_returns = [backup_made and 'foo' or None,
|
||||
(not backup_made or new_made) and 'foo' or None]
|
||||
|
||||
vm_utils.lookup(self._session, 'foo-orig').AndReturn(
|
||||
backup_made and 'foo' or None)
|
||||
vm_utils.lookup(self._session, 'foo').AndReturn(
|
||||
(not backup_made or new_made) and 'foo' or None)
|
||||
if backup_made:
|
||||
if new_made:
|
||||
self._vmops._destroy(instance, 'foo')
|
||||
vm_utils.set_vm_name_label(self._session, 'foo', 'foo')
|
||||
self._vmops._attach_mapped_block_devices(instance, [])
|
||||
@mock.patch.object(vm_utils, 'lookup',
|
||||
side_effect=lookup_returns)
|
||||
@mock.patch.object(self._vmops, '_destroy')
|
||||
@mock.patch.object(vm_utils, 'set_vm_name_label')
|
||||
@mock.patch.object(self._vmops, '_attach_mapped_block_devices')
|
||||
@mock.patch.object(self._vmops, '_start')
|
||||
@mock.patch.object(vm_utils, 'is_vm_shutdown',
|
||||
return_value=vm_shutdown)
|
||||
def test(mock_is_vm, mock_start, mock_attach_bdm, mock_set_vm_name,
|
||||
mock_destroy, mock_lookup):
|
||||
self._vmops.finish_revert_migration(context, instance, [])
|
||||
|
||||
vm_utils.is_vm_shutdown(self._session, 'foo').AndReturn(vm_shutdown)
|
||||
if vm_shutdown:
|
||||
self._vmops._start(instance, 'foo')
|
||||
mock_lookup.assert_has_calls([mock.call(self._session, 'foo-orig'),
|
||||
mock.call(self._session, 'foo')])
|
||||
if backup_made:
|
||||
if new_made:
|
||||
mock_destroy.assert_called_once_with(instance, 'foo')
|
||||
mock_set_vm_name.assert_called_once_with(self._session, 'foo',
|
||||
'foo')
|
||||
mock_attach_bdm.assert_called_once_with(instance, [])
|
||||
|
||||
self.mox.ReplayAll()
|
||||
mock_is_vm.assert_called_once_with(self._session, 'foo')
|
||||
if vm_shutdown:
|
||||
mock_start.assert_called_once_with(instance, 'foo')
|
||||
|
||||
self._vmops.finish_revert_migration(context, instance, [])
|
||||
test()
|
||||
|
||||
def test_finish_revert_migration_after_crash(self):
|
||||
self._test_finish_revert_migration_after_crash(True, True)
|
||||
|
@ -143,14 +148,14 @@ class VMOpsTestCase(VMOpsTestBase):
|
|||
|
||||
self.assertEqual(self.make_plugin_call_count, 1)
|
||||
|
||||
def test_get_vm_opaque_ref_raises_instance_not_found(self):
|
||||
@mock.patch.object(vm_utils, 'lookup', return_value=None)
|
||||
def test_get_vm_opaque_ref_raises_instance_not_found(self, mock_lookup):
|
||||
instance = {"name": "dummy"}
|
||||
self.mox.StubOutWithMock(vm_utils, 'lookup')
|
||||
vm_utils.lookup(self._session, instance['name'], False).AndReturn(None)
|
||||
self.mox.ReplayAll()
|
||||
|
||||
self.assertRaises(exception.InstanceNotFound,
|
||||
self._vmops._get_vm_opaque_ref, instance)
|
||||
mock_lookup.assert_called_once_with(self._session, instance['name'],
|
||||
False)
|
||||
|
||||
@mock.patch.object(vm_utils, 'destroy_vm')
|
||||
@mock.patch.object(vm_utils, 'clean_shutdown_vm')
|
||||
|
@ -704,23 +709,21 @@ class SpawnTestCase(VMOpsTestBase):
|
|||
self.mox.ReplayAll()
|
||||
self.vmops._wait_for_instance_to_start(instance, vm_ref)
|
||||
|
||||
def test_attach_orig_disks(self):
|
||||
@mock.patch.object(vm_utils, 'lookup', return_value='ref')
|
||||
@mock.patch.object(vm_utils, 'create_vbd')
|
||||
def test_attach_orig_disks(self, mock_create_vbd, mock_lookup):
|
||||
instance = {"name": "dummy"}
|
||||
vm_ref = "vm_ref"
|
||||
vbd_refs = {vmops.DEVICE_ROOT: "vdi_ref"}
|
||||
|
||||
self.mox.StubOutWithMock(vm_utils, 'lookup')
|
||||
self.mox.StubOutWithMock(self.vmops, '_find_vdi_refs')
|
||||
self.mox.StubOutWithMock(vm_utils, 'create_vbd')
|
||||
|
||||
vm_utils.lookup(self.vmops._session, "dummy").AndReturn("ref")
|
||||
self.vmops._find_vdi_refs("ref", exclude_volumes=True).AndReturn(
|
||||
vbd_refs)
|
||||
vm_utils.create_vbd(self.vmops._session, vm_ref, "vdi_ref",
|
||||
vmops.DEVICE_RESCUE, bootable=False)
|
||||
|
||||
self.mox.ReplayAll()
|
||||
self.vmops._attach_orig_disks(instance, vm_ref)
|
||||
with mock.patch.object(self.vmops, '_find_vdi_refs',
|
||||
return_value=vbd_refs) as mock_find_vdi:
|
||||
self.vmops._attach_orig_disks(instance, vm_ref)
|
||||
mock_lookup.assert_called_once_with(self.vmops._session, 'dummy')
|
||||
mock_find_vdi.assert_called_once_with('ref', exclude_volumes=True)
|
||||
mock_create_vbd.assert_called_once_with(
|
||||
self.vmops._session, vm_ref, 'vdi_ref', vmops.DEVICE_RESCUE,
|
||||
bootable=False)
|
||||
|
||||
def test_agent_update_setup(self):
|
||||
# agent updates need to occur after networking is configured
|
||||
|
|
|
@ -33,55 +33,37 @@ class VolumeOpsTestBase(stubs.XenAPITestBaseNoDB):
|
|||
|
||||
|
||||
class VolumeDetachTestCase(VolumeOpsTestBase):
|
||||
def test_detach_volume_call(self):
|
||||
registered_calls = []
|
||||
|
||||
def regcall(label):
|
||||
def side_effect(*args, **kwargs):
|
||||
registered_calls.append(label)
|
||||
return side_effect
|
||||
@mock.patch.object(volumeops.vm_utils, 'lookup', return_value='vmref')
|
||||
@mock.patch.object(volumeops.volume_utils, 'find_vbd_by_number',
|
||||
return_value='vbdref')
|
||||
@mock.patch.object(volumeops.vm_utils, 'is_vm_shutdown',
|
||||
return_value=False)
|
||||
@mock.patch.object(volumeops.vm_utils, 'unplug_vbd')
|
||||
@mock.patch.object(volumeops.vm_utils, 'destroy_vbd')
|
||||
@mock.patch.object(volumeops.volume_utils, 'get_device_number',
|
||||
return_value='devnumber')
|
||||
@mock.patch.object(volumeops.volume_utils, 'find_sr_from_vbd',
|
||||
return_value='srref')
|
||||
@mock.patch.object(volumeops.volume_utils, 'purge_sr')
|
||||
def test_detach_volume_call(self, mock_purge, mock_find_sr,
|
||||
mock_get_device_num, mock_destroy_vbd,
|
||||
mock_unplug_vbd, mock_is_vm, mock_find_vbd,
|
||||
mock_lookup):
|
||||
|
||||
ops = volumeops.VolumeOps('session')
|
||||
self.mox.StubOutWithMock(volumeops.vm_utils, 'lookup')
|
||||
self.mox.StubOutWithMock(volumeops.volume_utils, 'find_vbd_by_number')
|
||||
self.mox.StubOutWithMock(volumeops.vm_utils, 'is_vm_shutdown')
|
||||
self.mox.StubOutWithMock(volumeops.vm_utils, 'unplug_vbd')
|
||||
self.mox.StubOutWithMock(volumeops.vm_utils, 'destroy_vbd')
|
||||
self.mox.StubOutWithMock(volumeops.volume_utils, 'get_device_number')
|
||||
self.mox.StubOutWithMock(volumeops.volume_utils, 'find_sr_from_vbd')
|
||||
self.mox.StubOutWithMock(volumeops.volume_utils, 'purge_sr')
|
||||
|
||||
volumeops.vm_utils.lookup('session', 'instance_1').AndReturn(
|
||||
'vmref')
|
||||
|
||||
volumeops.volume_utils.get_device_number('mountpoint').AndReturn(
|
||||
'devnumber')
|
||||
|
||||
volumeops.volume_utils.find_vbd_by_number(
|
||||
'session', 'vmref', 'devnumber').AndReturn('vbdref')
|
||||
|
||||
volumeops.vm_utils.is_vm_shutdown('session', 'vmref').AndReturn(
|
||||
False)
|
||||
|
||||
volumeops.vm_utils.unplug_vbd('session', 'vbdref', 'vmref')
|
||||
|
||||
volumeops.vm_utils.destroy_vbd('session', 'vbdref').WithSideEffects(
|
||||
regcall('destroy_vbd'))
|
||||
|
||||
volumeops.volume_utils.find_sr_from_vbd(
|
||||
'session', 'vbdref').WithSideEffects(
|
||||
regcall('find_sr_from_vbd')).AndReturn('srref')
|
||||
|
||||
volumeops.volume_utils.purge_sr('session', 'srref')
|
||||
|
||||
self.mox.ReplayAll()
|
||||
|
||||
ops.detach_volume(
|
||||
dict(driver_volume_type='iscsi', data='conn_data'),
|
||||
'instance_1', 'mountpoint')
|
||||
|
||||
self.assertEqual(
|
||||
['find_sr_from_vbd', 'destroy_vbd'], registered_calls)
|
||||
mock_lookup.assert_called_once_with('session', 'instance_1')
|
||||
mock_get_device_num.assert_called_once_with('mountpoint')
|
||||
mock_find_vbd.assert_called_once_with('session', 'vmref', 'devnumber')
|
||||
mock_is_vm.assert_called_once_with('session', 'vmref')
|
||||
mock_unplug_vbd.assert_called_once_with('session', 'vbdref', 'vmref')
|
||||
mock_destroy_vbd.assert_called_once_with('session', 'vbdref')
|
||||
mock_find_sr.assert_called_once_with('session', 'vbdref')
|
||||
mock_purge.assert_called_once_with('session', 'srref')
|
||||
|
||||
@mock.patch.object(volumeops.VolumeOps, "_detach_vbds_and_srs")
|
||||
@mock.patch.object(volume_utils, "find_vbd_by_number")
|
||||
|
|
|
@ -347,23 +347,19 @@ class XenAPIVMTestCase(stubs.XenAPITestBase):
|
|||
self.conn.init_host(None)
|
||||
self.assertEqual(set(xenapi_fake.get_all('VBD')), set([vbd0, vbd2]))
|
||||
|
||||
def test_instance_exists(self):
|
||||
self.mox.StubOutWithMock(vm_utils, 'lookup')
|
||||
vm_utils.lookup(mox.IgnoreArg(), 'foo').AndReturn(True)
|
||||
self.mox.ReplayAll()
|
||||
|
||||
@mock.patch.object(vm_utils, 'lookup', return_value=True)
|
||||
def test_instance_exists(self, mock_lookup):
|
||||
self.stubs.Set(objects.Instance, 'name', 'foo')
|
||||
instance = objects.Instance(uuid='fake-uuid')
|
||||
self.assertTrue(self.conn.instance_exists(instance))
|
||||
mock_lookup.assert_called_once_with(mock.ANY, 'foo')
|
||||
|
||||
def test_instance_not_exists(self):
|
||||
self.mox.StubOutWithMock(vm_utils, 'lookup')
|
||||
vm_utils.lookup(mox.IgnoreArg(), 'bar').AndReturn(None)
|
||||
self.mox.ReplayAll()
|
||||
|
||||
@mock.patch.object(vm_utils, 'lookup', return_value=None)
|
||||
def test_instance_not_exists(self, mock_lookup):
|
||||
self.stubs.Set(objects.Instance, 'name', 'bar')
|
||||
instance = objects.Instance(uuid='fake-uuid')
|
||||
self.assertFalse(self.conn.instance_exists(instance))
|
||||
mock_lookup.assert_called_once_with(mock.ANY, 'bar')
|
||||
|
||||
def test_list_instances_0(self):
|
||||
instances = self.conn.list_instances()
|
||||
|
@ -1397,12 +1393,11 @@ iface eth0 inet6 static
|
|||
|
||||
real_result = vm_utils.lookup(conn._session, instance['name'])
|
||||
|
||||
self.mox.StubOutWithMock(vm_utils, 'lookup')
|
||||
vm_utils.lookup(conn._session, instance['name'],
|
||||
True).AndReturn(real_result)
|
||||
self.mox.ReplayAll()
|
||||
|
||||
conn.reboot(self.context, instance, None, "SOFT")
|
||||
with mock.patch.object(vm_utils, 'lookup',
|
||||
return_value=real_result) as mock_lookup:
|
||||
conn.reboot(self.context, instance, None, "SOFT")
|
||||
mock_lookup.assert_called_once_with(conn._session,
|
||||
instance['name'], True)
|
||||
|
||||
def test_get_console_output_succeeds(self):
|
||||
|
||||
|
|
Loading…
Reference in New Issue