From: Liang Chen Date: Fri, 31 May 2013 02:56:18 +0000 (+0800) Subject: add error flow tests for volume detach X-Git-Tag: 2014.1~529^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=cbe4cdcf29e18130e9860e9d4db45d802e51e46b;p=openstack-build%2Fheat-build.git add error flow tests for volume detach engine.resources.volume.VolumeAttachment lacks tests for some exception flows Fixes bug #1183239 Change-Id: I3d84fadb1ff60c622fbfbd634e003aaab382b405 --- diff --git a/heat/tests/test_volume.py b/heat/tests/test_volume.py index b49c4f37..9a490bb2 100644 --- a/heat/tests/test_volume.py +++ b/heat/tests/test_volume.py @@ -257,6 +257,67 @@ class VolumeTest(HeatTestCase): self.m.VerifyAll() + def test_volume_detachment_err(self): + fv = FakeVolume('creating', 'available') + fva = FakeVolume('in-use', 'available') + stack_name = 'test_volume_detach_stack' + + # volume create + clients.OpenStackClients.cinder().MultipleTimes().AndReturn( + self.cinder_fc) + self.cinder_fc.volumes.create( + size=u'1', availability_zone='nova', + display_description='%s.DataVolume' % stack_name, + display_name='%s.DataVolume' % stack_name).AndReturn(fv) + + # create script + clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc) + self.fc.volumes.create_server_volume( + device=u'/dev/vdc', + server_id=u'WikiDatabase', + volume_id=u'vol-123').AndReturn(fva) + + self.cinder_fc.volumes.get('vol-123').AndReturn(fva) + + # delete script + fva = FakeVolume('i-use', 'available') + self.m.StubOutWithMock(fva, 'get') + fva.get().MultipleTimes() + fva.status = "in-use" + + self.cinder_fc.volumes.get('vol-123').AndReturn(fva) + + self.fc.volumes.delete_server_volume( + 'WikiDatabase', 'vol-123').AndRaise( + clients.novaclient.exceptions.NotFound('Not found')) + + scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None) + self.fc.volumes.delete_server_volume( + 'WikiDatabase', 'vol-123').AndRaise( + clients.novaclient.exceptions.NotFound('Not found')) + + scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None) + self.fc.volumes.delete_server_volume( + 'WikiDatabase', 'vol-123').AndRaise( + clients.cinderclient.exceptions.NotFound('Not found')) + + self.m.ReplayAll() + + t = template_format.parse(volume_template) + t['Resources']['DataVolume']['Properties']['AvailabilityZone'] = 'nova' + stack = parse_stack(t, stack_name=stack_name) + + scheduler.TaskRunner(stack['DataVolume'].create)() + self.assertEqual(fv.status, 'available') + rsrc = self.create_attachment(t, stack, 'MountPoint') + + self.assertRaises(resource.UpdateReplace, + rsrc.handle_update, {}, {}, {}) + + self.assertEqual(rsrc.delete(), None) + + self.m.VerifyAll() + @skipIf(volume_backups is None, 'unable to import volume_backups') def test_snapshot(self): stack_name = 'test_volume_stack'