summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2011-11-08 22:54:11 +0000
committerGerrit Code Review <review@openstack.org>2011-11-08 22:54:11 +0000
commit150a5c16d689b4db4632a0bc6e0220cdf51b3db4 (patch)
tree048c80b4bea3c4cdbd42ae4d17d2aae71a456f86 /nova/tests
parent192b8fd3c9ea226a58f469a5896b75bf48c29d38 (diff)
parentc04b431cd63f4d934f40dd1f62a9107ae6dfde90 (diff)
Merge "Move failed instances to error state"
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/test_compute.py45
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()