diff options
| author | Jenkins <jenkins@review.openstack.org> | 2011-11-08 22:54:11 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2011-11-08 22:54:11 +0000 |
| commit | 150a5c16d689b4db4632a0bc6e0220cdf51b3db4 (patch) | |
| tree | 048c80b4bea3c4cdbd42ae4d17d2aae71a456f86 /nova/tests | |
| parent | 192b8fd3c9ea226a58f469a5896b75bf48c29d38 (diff) | |
| parent | c04b431cd63f4d934f40dd1f62a9107ae6dfde90 (diff) | |
Merge "Move failed instances to error state"
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/test_compute.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py index 0de533069..b5f627dcd 100644 --- a/nova/tests/test_compute.py +++ b/nova/tests/test_compute.py @@ -44,6 +44,7 @@ from nova.db.sqlalchemy import models from nova.image import fake as fake_image from nova.notifier import test_notifier from nova.tests import fake_network +from nova.network.quantum import client as quantum_client LOG = logging.getLogger('nova.tests.compute') @@ -628,6 +629,50 @@ class ComputeTestCase(test.TestCase): instance_id) self.compute.terminate_instance(self.context, instance_id) + def test_instance_set_to_error_on_uncaught_exception(self): + """Test that instance is set to error state when exception is raised""" + instance_id = self._create_instance() + + self.mox.StubOutWithMock(self.compute.network_api, + "allocate_for_instance") + self.compute.network_api.allocate_for_instance(mox.IgnoreArg(), + mox.IgnoreArg(), + requested_networks=None, + vpn=False).\ + AndRaise(quantum_client.QuantumServerException()) + + FLAGS.stub_network = False + + self.mox.ReplayAll() + + self.assertRaises(quantum_client.QuantumServerException, + self.compute.run_instance, + self.context, + instance_id) + + instances = db.instance_get_all(context.get_admin_context()) + self.assertEqual(vm_states.ERROR, instances[0]['vm_state']) + + self.compute.terminate_instance(self.context, instance_id) + + def test_network_is_deallocated_on_spawn_failure(self): + """When a spawn fails the network must be deallocated""" + instance_id = self._create_instance() + + self.mox.StubOutWithMock(self.compute, "_setup_block_device_mapping") + self.compute._setup_block_device_mapping(mox.IgnoreArg(), + mox.IgnoreArg()).\ + AndRaise(rpc.common.RemoteError('', '', '')) + + self.mox.ReplayAll() + + self.assertRaises(rpc.common.RemoteError, + self.compute.run_instance, + self.context, + instance_id) + + self.compute.terminate_instance(self.context, instance_id) + def test_lock(self): """ensure locked instance cannot be changed""" instance_id = self._create_instance() |
