summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-03-26 12:40:59 +0000
committerGerrit Code Review <review@openstack.org>2013-03-26 12:40:59 +0000
commit2900258d5e117afd302ecff3411658910078d431 (patch)
tree9f75ca9fe2f5d19d6ff8b517337bc3c05d5f1849 /nova/tests
parent5b075b0a364dc1f9259ded105e08e1982e0fee08 (diff)
parent4a6a9da8e7d283b781ceee1b20a7f6f25144de57 (diff)
Merge "Fix Hyper V instance conflicts"
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/test_hypervapi.py81
1 files changed, 69 insertions, 12 deletions
diff --git a/nova/tests/test_hypervapi.py b/nova/tests/test_hypervapi.py
index 0ddfe080d..b50709512 100644
--- a/nova/tests/test_hypervapi.py
+++ b/nova/tests/test_hypervapi.py
@@ -84,6 +84,7 @@ class HyperVAPITestCase(test.TestCase):
self._instance_ide_dvds = []
self._instance_volume_disks = []
self._test_vm_name = None
+ self._test_instance_dir = 'C:\\FakeInstancesPath\\instance-0000001'
self._setup_stubs()
@@ -134,6 +135,7 @@ class HyperVAPITestCase(test.TestCase):
self._mox.StubOutWithMock(fake.PathUtils, 'makedirs')
self._mox.StubOutWithMock(fake.PathUtils,
'get_instance_migr_revert_dir')
+ self._mox.StubOutWithMock(fake.PathUtils, 'get_instance_dir')
self._mox.StubOutWithMock(vmutils.VMUtils, 'vm_exists')
self._mox.StubOutWithMock(vmutils.VMUtils, 'create_vm')
@@ -336,6 +338,9 @@ class HyperVAPITestCase(test.TestCase):
content=mox.IsA(list),
extra_md=mox.IsA(dict))
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str))
+ m.AndReturn(self._test_instance_dir)
+
cdb = self._mox.CreateMockAnything()
m = configdrive.ConfigDriveBuilder(instance_md=mox.IgnoreArg())
m.AndReturn(cdb)
@@ -368,8 +373,6 @@ class HyperVAPITestCase(test.TestCase):
self.flags(config_drive_cdrom=use_cdrom, group='hyperv')
self.flags(mkisofs_cmd='mkisofs.exe')
- self._setup_spawn_config_drive_mocks(use_cdrom)
-
if use_cdrom:
expected_ide_disks = 1
expected_ide_dvds = 1
@@ -378,7 +381,9 @@ class HyperVAPITestCase(test.TestCase):
expected_ide_dvds = 0
self._test_spawn_instance(expected_ide_disks=expected_ide_disks,
- expected_ide_dvds=expected_ide_dvds)
+ expected_ide_dvds=expected_ide_dvds,
+ config_drive=True,
+ use_cdrom=use_cdrom)
def test_spawn_config_drive(self):
self._test_spawn_config_drive(False)
@@ -512,7 +517,7 @@ class HyperVAPITestCase(test.TestCase):
None)
self._mox.VerifyAll()
- def _setup_destroy_mocks(self):
+ def _setup_destroy_mocks(self, destroy_disks=True):
m = vmutils.VMUtils.vm_exists(mox.Func(self._check_instance_name))
m.AndReturn(True)
@@ -524,6 +529,12 @@ class HyperVAPITestCase(test.TestCase):
vmutils.VMUtils.destroy_vm(func)
+ if destroy_disks:
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str),
+ create_dir=False,
+ remove_dir=True)
+ m.AndReturn(self._test_instance_dir)
+
def test_destroy(self):
self._instance_data = self._get_instance_data()
@@ -691,6 +702,9 @@ class HyperVAPITestCase(test.TestCase):
m = vmutils.VMUtils.take_vm_snapshot(func)
m.AndReturn(fake_hv_snapshot_path)
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str))
+ m.AndReturn(self._test_instance_dir)
+
m = vhdutils.VHDUtils.get_vhd_parent_path(mox.IsA(str))
m.AndReturn(fake_parent_vhd_path)
@@ -831,10 +845,17 @@ class HyperVAPITestCase(test.TestCase):
def _setup_spawn_instance_mocks(self, cow, setup_vif_mocks_func=None,
with_exception=False,
block_device_info=None,
- boot_from_volume=False):
+ boot_from_volume=False,
+ config_drive=False,
+ use_cdrom=False):
m = vmutils.VMUtils.vm_exists(mox.IsA(str))
m.WithSideEffects(self._set_vm_name).AndReturn(False)
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str),
+ create_dir=False,
+ remove_dir=True)
+ m.AndReturn(self._test_instance_dir)
+
m = basevolumeutils.BaseVolumeUtils.volume_in_mapping(
mox.IsA(str), block_device_info)
m.AndReturn(boot_from_volume)
@@ -856,6 +877,9 @@ class HyperVAPITestCase(test.TestCase):
boot_from_volume,
block_device_info)
+ if config_drive:
+ self._setup_spawn_config_drive_mocks(use_cdrom)
+
# TODO(alexpilotti) Based on where the exception is thrown
# some of the above mock calls need to be skipped
if with_exception:
@@ -871,9 +895,17 @@ class HyperVAPITestCase(test.TestCase):
expected_ide_disks=1,
expected_ide_dvds=0,
setup_vif_mocks_func=None,
- with_exception=False):
- self._setup_spawn_instance_mocks(cow, setup_vif_mocks_func,
- with_exception)
+ with_exception=False,
+ config_drive=False,
+ use_cdrom=False):
+ self._setup_spawn_instance_mocks(cow,
+ setup_vif_mocks_func,
+ with_exception,
+ config_drive=config_drive,
+ use_cdrom=use_cdrom)
+
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str))
+ m.AndReturn(self._test_instance_dir)
self._mox.ReplayAll()
self._spawn_instance(cow)
@@ -882,7 +914,7 @@ class HyperVAPITestCase(test.TestCase):
self.assertEquals(len(self._instance_ide_disks), expected_ide_disks)
self.assertEquals(len(self._instance_ide_dvds), expected_ide_dvds)
- vhd_path = pathutils.PathUtils().get_vhd_path(self._test_vm_name)
+ vhd_path = os.path.join(self._test_instance_dir, 'root.vhd')
self.assertEquals(vhd_path, self._instance_ide_disks[0])
def _mock_get_mounted_disk_from_lun(self, target_iqn, target_lun,
@@ -1028,8 +1060,7 @@ class HyperVAPITestCase(test.TestCase):
fake_dest_ip = '10.0.0.2'
fake_root_vhd_path = 'C:\\FakePath\\root.vhd'
- fake_revert_path = ('C:\\FakeInstancesPath\\%s\\_revert' %
- instance['name'])
+ fake_revert_path = os.path.join(self._test_instance_dir, '_revert')
func = mox.Func(self._check_instance_name)
vmutils.VMUtils.set_vm_state(func, constants.HYPERV_VM_STATE_DISABLED)
@@ -1040,6 +1071,9 @@ class HyperVAPITestCase(test.TestCase):
m = hostutils.HostUtils.get_local_ips()
m.AndReturn([fake_local_ip])
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str))
+ m.AndReturn(self._test_instance_dir)
+
m = pathutils.PathUtils.get_instance_migr_revert_dir(instance['name'],
remove_dir=True)
m.AndReturn(fake_revert_path)
@@ -1050,12 +1084,24 @@ class HyperVAPITestCase(test.TestCase):
m = fake.PathUtils.copy(fake_root_vhd_path, mox.IsA(str))
if with_exception:
m.AndRaise(shutil.Error('Simulated copy error'))
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str),
+ mox.IsA(str),
+ remove_dir=True)
+ m.AndReturn(self._test_instance_dir)
else:
fake.PathUtils.rename(mox.IsA(str), mox.IsA(str))
+ destroy_disks = True
if same_host:
fake.PathUtils.rename(mox.IsA(str), mox.IsA(str))
+ destroy_disks = False
+
+ self._setup_destroy_mocks(False)
- self._setup_destroy_mocks()
+ if destroy_disks:
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str),
+ mox.IsA(str),
+ remove_dir=True)
+ m.AndReturn(self._test_instance_dir)
return (instance, fake_dest_ip, network_info)
@@ -1103,6 +1149,9 @@ class HyperVAPITestCase(test.TestCase):
None)
m.AndReturn(False)
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str))
+ m.AndReturn(self._test_instance_dir)
+
self._mox.StubOutWithMock(fake.PathUtils, 'exists')
m = fake.PathUtils.exists(mox.IsA(str))
m.AndReturn(True)
@@ -1161,10 +1210,18 @@ class HyperVAPITestCase(test.TestCase):
None)
m.AndReturn(False)
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str),
+ create_dir=False,
+ remove_dir=True)
+ m.AndReturn(self._test_instance_dir)
+
m = pathutils.PathUtils.get_instance_migr_revert_dir(instance['name'])
m.AndReturn(fake_revert_path)
fake.PathUtils.rename(fake_revert_path, mox.IsA(str))
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str))
+ m.AndReturn(self._test_instance_dir)
+
self._set_vm_name(instance['name'])
self._setup_create_instance_mocks(None, False)