From 400154ee24d4053473bdd2e804f9e54bbdffba73 Mon Sep 17 00:00:00 2001 From: Rick Harris Date: Thu, 16 May 2013 01:00:04 +0000 Subject: Adding tests for rebuild image checks Create instance has tests arounds it's image-checks, this patch just ports those tests over to the rebuild case. Change-Id: Ibe982e478ec2c8b44e130c022c6d1d493d6d9674 --- nova/tests/compute/test_compute.py | 81 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 0040ba2da..111232ebf 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -5519,6 +5519,87 @@ class ComputeAPITestCase(BaseTestCase): self.compute_api.rebuild(self.context, instance, self.fake_image['id'], 'new_password') + def test_rebuild_with_too_little_ram(self): + instance = jsonutils.to_primitive( + self._create_fake_instance(params={'image_ref': '1'})) + + def fake_extract_instance_type(_inst): + return dict(memory_mb=64, root_gb=1) + + self.stubs.Set(flavors, 'extract_instance_type', + fake_extract_instance_type) + + self.fake_image['min_ram'] = 128 + self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) + + self.assertRaises(exception.InstanceTypeMemoryTooSmall, + self.compute_api.rebuild, self.context, + instance, self.fake_image['id'], 'new_password') + + # Reduce image memory requirements and make sure it works + self.fake_image['min_ram'] = 64 + + self.compute_api.rebuild(self.context, + instance, self.fake_image['id'], 'new_password') + db.instance_destroy(self.context, instance['uuid']) + + def test_rebuild_with_too_little_disk(self): + instance = jsonutils.to_primitive( + self._create_fake_instance(params={'image_ref': '1'})) + + def fake_extract_instance_type(_inst): + return dict(memory_mb=64, root_gb=1) + + self.stubs.Set(flavors, 'extract_instance_type', + fake_extract_instance_type) + + self.fake_image['min_disk'] = 2 + self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) + + self.assertRaises(exception.InstanceTypeDiskTooSmall, + self.compute_api.rebuild, self.context, + instance, self.fake_image['id'], 'new_password') + + # Reduce image disk requirements and make sure it works + self.fake_image['min_disk'] = 1 + + self.compute_api.rebuild(self.context, + instance, self.fake_image['id'], 'new_password') + db.instance_destroy(self.context, instance['uuid']) + + def test_rebuild_with_just_enough_ram_and_disk(self): + instance = jsonutils.to_primitive( + self._create_fake_instance(params={'image_ref': '1'})) + + def fake_extract_instance_type(_inst): + return dict(memory_mb=64, root_gb=1) + + self.stubs.Set(flavors, 'extract_instance_type', + fake_extract_instance_type) + + self.fake_image['min_ram'] = 64 + self.fake_image['min_disk'] = 1 + self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) + + self.compute_api.rebuild(self.context, + instance, self.fake_image['id'], 'new_password') + db.instance_destroy(self.context, instance['uuid']) + + def test_rebuild_with_no_ram_and_disk_reqs(self): + instance = jsonutils.to_primitive( + self._create_fake_instance(params={'image_ref': '1'})) + + def fake_extract_instance_type(_inst): + return dict(memory_mb=64, root_gb=1) + + self.stubs.Set(flavors, 'extract_instance_type', + fake_extract_instance_type) + self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show) + + self.compute_api.rebuild(self.context, + instance, self.fake_image['id'], 'new_password') + db.instance_destroy(self.context, instance['uuid']) + def _stub_out_reboot(self, device_name): def fake_reboot_instance(rpcapi, context, instance, block_device_info, -- cgit