diff options
| author | Jenkins <jenkins@review.openstack.org> | 2011-12-12 00:54:38 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2011-12-12 00:54:38 +0000 |
| commit | 1b4a0f859e76de4c6e5cb7b51a12e9bf2fb3e295 (patch) | |
| tree | 9d4d44b70adcd992af1bfe9dbe5a5731dd655ae8 /nova/tests | |
| parent | a4e2ed8cb9ba71e96dfadb96f8171054a0d30914 (diff) | |
| parent | cfe6fe374fa04b9c6150256c9a760b6b340ce697 (diff) | |
Merge "Add preparation for asynchronous instance faults"
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/test_compute.py | 55 | ||||
| -rw-r--r-- | nova/tests/test_db_api.py | 72 |
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']) |
