diff options
| author | Alexei Kornienko <akornienko@mirantis.com> | 2013-06-06 10:54:21 +0300 |
|---|---|---|
| committer | Alexei Kornienko <akornienko@mirantis.com> | 2013-06-10 10:48:02 +0300 |
| commit | 313f7fde6bc029ca17e76d2208fa5aafe91f38bc (patch) | |
| tree | 2ae1cd456d2dc911cd1f6b70a74c5d421c2b0f81 /nova | |
| parent | 77c7846cad471c6edc747d521974bb0444479dd1 (diff) | |
Refactored tests for instance_fault_*
Moved tests to separate test case
Improved test assertions
blueprint db-api-tests
Change-Id: Id0ac41520bd6b4161f9ad4c72dfb702592733975
Diffstat (limited to 'nova')
| -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): |
