summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2011-12-12 00:54:38 +0000
committerGerrit Code Review <review@openstack.org>2011-12-12 00:54:38 +0000
commit1b4a0f859e76de4c6e5cb7b51a12e9bf2fb3e295 (patch)
tree9d4d44b70adcd992af1bfe9dbe5a5731dd655ae8 /nova/tests
parenta4e2ed8cb9ba71e96dfadb96f8171054a0d30914 (diff)
parentcfe6fe374fa04b9c6150256c9a760b6b340ce697 (diff)
Merge "Add preparation for asynchronous instance faults"
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/test_compute.py55
-rw-r--r--nova/tests/test_db_api.py72
2 files changed, 127 insertions, 0 deletions
diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py
index e4c60e068..e6167dc51 100644
--- a/nova/tests/test_compute.py
+++ b/nova/tests/test_compute.py
@@ -21,6 +21,7 @@ Tests For Compute
"""
from copy import copy
+from webob import exc
import mox
@@ -1063,6 +1064,60 @@ class ComputeTestCase(BaseTestCase):
self.assertEqual(len(instances), 1)
self.assertEqual(power_state.NOSTATE, instances[0]['power_state'])
+ def test_add_instance_fault(self):
+ instance_uuid = str(utils.gen_uuid())
+
+ def fake_db_fault_create(ctxt, values):
+ expected = {
+ 'code': 404,
+ 'message': 'HTTPNotFound',
+ 'details': 'Error Details',
+ 'instance_uuid': instance_uuid,
+ }
+ self.assertEquals(expected, values)
+
+ self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create)
+
+ ctxt = context.get_admin_context()
+ self.compute.add_instance_fault(ctxt, instance_uuid, 404,
+ 'HTTPNotFound', 'Error Details')
+
+ def test_add_instance_fault_error(self):
+ instance_uuid = str(utils.gen_uuid())
+
+ def fake_db_fault_create(ctxt, values):
+ expected = {
+ 'code': 500,
+ 'message': 'NotImplementedError',
+ 'details': '',
+ 'instance_uuid': instance_uuid,
+ }
+ self.assertEquals(expected, values)
+
+ self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create)
+
+ ctxt = context.get_admin_context()
+ self.compute.add_instance_fault_from_exc(ctxt, instance_uuid,
+ NotImplementedError())
+
+ def test_add_instance_fault_http_exception(self):
+ instance_uuid = str(utils.gen_uuid())
+
+ def fake_db_fault_create(ctxt, values):
+ expected = {
+ 'code': 404,
+ 'message': 'HTTPNotFound',
+ 'details': 'Error Details',
+ 'instance_uuid': instance_uuid,
+ }
+ self.assertEquals(expected, values)
+
+ self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create)
+
+ ctxt = context.get_admin_context()
+ self.compute.add_instance_fault_from_exc(ctxt, instance_uuid,
+ exc.HTTPNotFound("Error Details"))
+
class ComputeAPITestCase(BaseTestCase):
diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py
index 10c758412..36b5eced4 100644
--- a/nova/tests/test_db_api.py
+++ b/nova/tests/test_db_api.py
@@ -24,6 +24,7 @@ from nova import test
from nova import context
from nova import db
from nova import flags
+from nova import utils
FLAGS = flags.FLAGS
@@ -192,3 +193,74 @@ class DbApiTestCase(test.TestCase):
# Retrieve the metadata to ensure it was successfully updated
instance_meta = db.instance_metadata_get(ctxt, instance.id)
self.assertEqual('bar', instance_meta['host'])
+
+ def test_instance_fault_create(self):
+ """Ensure we can create an instance fault"""
+ ctxt = context.get_admin_context()
+ uuid = str(utils.gen_uuid())
+
+ # Create a fault
+ fault_values = {
+ 'message': 'message',
+ 'details': 'detail',
+ 'instance_uuid': uuid,
+ 'code': 404,
+ }
+ db.instance_fault_create(ctxt, fault_values)
+
+ # Retrieve the fault to ensure it was successfully added
+ instance_fault = db.instance_fault_get_by_instance(ctxt, uuid)
+ self.assertEqual(404, instance_fault['code'])
+
+ def test_instance_fault_get_by_instance(self):
+ """ ensure we can retrieve an instance fault by instance UUID """
+ ctxt = context.get_admin_context()
+
+ # Create faults
+ uuid = str(utils.gen_uuid())
+ fault_values = {
+ 'message': 'message',
+ 'details': 'detail',
+ 'instance_uuid': uuid,
+ 'code': 404,
+ }
+ db.instance_fault_create(ctxt, fault_values)
+
+ uuid2 = str(utils.gen_uuid())
+ fault_values = {
+ 'message': 'message',
+ 'details': 'detail',
+ 'instance_uuid': uuid2,
+ 'code': 500,
+ }
+ db.instance_fault_create(ctxt, fault_values)
+
+ # Retrieve the fault to ensure it was successfully added
+ instance_fault = db.instance_fault_get_by_instance(ctxt, uuid2)
+ self.assertEqual(500, instance_fault['code'])
+
+ def test_instance_fault_get_by_instance_first_fault(self):
+ """Instance_fault_get_by_instance should return the latest fault """
+ ctxt = context.get_admin_context()
+
+ # Create faults
+ uuid = str(utils.gen_uuid())
+ fault_values = {
+ 'message': 'message',
+ 'details': 'detail',
+ 'instance_uuid': uuid,
+ 'code': 404,
+ }
+ db.instance_fault_create(ctxt, fault_values)
+
+ fault_values = {
+ 'message': 'message',
+ 'details': 'detail',
+ 'instance_uuid': uuid,
+ 'code': 500,
+ }
+ db.instance_fault_create(ctxt, fault_values)
+
+ # Retrieve the fault to ensure it was successfully added
+ instance_fault = db.instance_fault_get_by_instance(ctxt, uuid)
+ self.assertEqual(500, instance_fault['code'])