diff options
| -rw-r--r-- | nova/tests/db/test_db_api.py | 140 |
1 files changed, 63 insertions, 77 deletions
diff --git a/nova/tests/db/test_db_api.py b/nova/tests/db/test_db_api.py index d3913117b..49a1d6452 100644 --- a/nova/tests/db/test_db_api.py +++ b/nova/tests/db/test_db_api.py @@ -636,83 +636,6 @@ class DbApiTestCase(DbTestCase): # Ensure that metadata is updated during instance_update self._test_instance_update_updates_metadata('metadata') - def test_instance_fault_create(self): - # Ensure we can create an instance fault. - ctxt = context.get_admin_context() - uuid = str(stdlib_uuid.uuid4()) - - # 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 - faults = db.instance_fault_get_by_instance_uuids(ctxt, [uuid]) - self.assertEqual(404, faults[uuid][0]['code']) - - def test_instance_fault_get_by_instance(self): - # ensure we can retrieve an instance fault by instance UUID. - ctxt = context.get_admin_context() - instance1 = db.instance_create(ctxt, {}) - instance2 = db.instance_create(ctxt, {}) - uuids = [instance1['uuid'], instance2['uuid']] - - # Create faults - fault_values = { - 'message': 'message', - 'details': 'detail', - 'instance_uuid': uuids[0], - 'code': 404, - } - fault1 = db.instance_fault_create(ctxt, fault_values) - - fault_values = { - 'message': 'message', - 'details': 'detail', - 'instance_uuid': uuids[0], - 'code': 500, - } - fault2 = db.instance_fault_create(ctxt, fault_values) - - fault_values = { - 'message': 'message', - 'details': 'detail', - 'instance_uuid': uuids[1], - 'code': 404, - } - fault3 = db.instance_fault_create(ctxt, fault_values) - - fault_values = { - 'message': 'message', - 'details': 'detail', - 'instance_uuid': uuids[1], - 'code': 500, - } - fault4 = db.instance_fault_create(ctxt, fault_values) - - instance_faults = db.instance_fault_get_by_instance_uuids(ctxt, uuids) - - expected = { - uuids[0]: [fault2, fault1], - uuids[1]: [fault4, fault3], - } - - self.assertEqual(instance_faults, expected) - - def test_instance_faults_get_by_instance_uuids_no_faults(self): - # None should be returned when no faults exist. - ctxt = context.get_admin_context() - instance1 = db.instance_create(ctxt, {}) - instance2 = db.instance_create(ctxt, {}) - uuids = [instance1['uuid'], instance2['uuid']] - instance_faults = db.instance_fault_get_by_instance_uuids(ctxt, uuids) - expected = {uuids[0]: [], uuids[1]: []} - self.assertEqual(expected, instance_faults) - def test_instance_action_start(self): """Create an instance action.""" ctxt = context.get_admin_context() @@ -2432,6 +2355,69 @@ class BaseInstanceTypeTestCase(test.TestCase, ModelsObjectComparatorMixin): return db.instance_type_create(self.ctxt, v) +class InstanceFaultTestCase(test.TestCase, ModelsObjectComparatorMixin): + def setUp(self): + super(InstanceFaultTestCase, self).setUp() + self.ctxt = context.get_admin_context() + + def _create_fault_values(self, uuid, code=404): + return { + 'message': 'message', + 'details': 'detail', + 'instance_uuid': uuid, + 'code': code, + 'host': 'localhost' + } + + def test_instance_fault_create(self): + """Ensure we can create an instance fault.""" + uuid = str(stdlib_uuid.uuid4()) + + # Ensure no faults registered for this instance + faults = db.instance_fault_get_by_instance_uuids(self.ctxt, [uuid]) + self.assertEqual(0, len(faults[uuid])) + + # Create a fault + fault_values = self._create_fault_values(uuid) + fault = db.instance_fault_create(self.ctxt, fault_values) + + ignored_keys = ['deleted', 'created_at', 'updated_at', + 'deleted_at', 'id'] + self._assertEqualObjects(fault_values, fault, ignored_keys) + + # Retrieve the fault to ensure it was successfully added + faults = db.instance_fault_get_by_instance_uuids(self.ctxt, [uuid]) + self.assertEqual(1, len(faults[uuid])) + self._assertEqualObjects(fault, faults[uuid][0]) + + def test_instance_fault_get_by_instance(self): + """Ensure we can retrieve faults for instance.""" + uuids = [str(stdlib_uuid.uuid4()), str(stdlib_uuid.uuid4())] + fault_codes = [404, 500] + expected = {} + + # Create faults + for uuid in uuids: + expected[uuid] = [] + for code in fault_codes: + fault_values = self._create_fault_values(uuid, code) + fault = db.instance_fault_create(self.ctxt, fault_values) + expected[uuid].append(fault) + + # Ensure faults are saved + faults = db.instance_fault_get_by_instance_uuids(self.ctxt, uuids) + self.assertEqual(len(expected), len(faults)) + for uuid in uuids: + self._assertEqualListsOfObjects(expected[uuid], faults[uuid]) + + def test_instance_faults_get_by_instance_uuids_no_faults(self): + uuid = str(stdlib_uuid.uuid4()) + # None should be returned when no faults exist. + faults = db.instance_fault_get_by_instance_uuids(self.ctxt, [uuid]) + expected = {uuid: []} + self.assertEqual(expected, faults) + + class InstanceTypeTestCase(BaseInstanceTypeTestCase): def test_instance_type_create(self): |
