From: Juan Manuel Olle Date: Fri, 21 Mar 2014 19:46:03 +0000 (-0300) Subject: Correct metadata ordering issue in tests X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=2001946a0279e98b85d78a4991f4d4a728920eba;p=openstack-build%2Fcinder-build.git Correct metadata ordering issue in tests Some test including test_volume_get_all_filters fails randomly because metadata is in a dict and the items order is undefined. The test comparison was changed to avoid unexpected test results. Change-Id: Ibb24d21cd05aa1eefb45b61c63de067b34fb1013 Closes-Bug: #1293792 (cherry picked from commit 4cc2366623743393f89a198581fcb69dc04d31cd) --- diff --git a/cinder/tests/test_db_api.py b/cinder/tests/test_db_api.py index 0e9d49cb5..e1a2077b3 100644 --- a/cinder/tests/test_db_api.py +++ b/cinder/tests/test_db_api.py @@ -481,17 +481,16 @@ class DBAPIVolumeTestCase(BaseTest): result = db.volume_get_all(self.ctxt, None, limit, sort_key, sort_dir, filters=filters) self.assertEqual(len(correct_order), len(result)) - self.assertEqual(len(result), len(correct_order)) for vol1, vol2 in zip(result, correct_order): for key in match_keys: val1 = vol1.get(key) val2 = vol2.get(key) - # metadata is a list, compare the 'key' and 'value' of each + # metadata is a dict, compare the 'key' and 'value' of each if key == 'volume_metadata': self.assertEqual(len(val1), len(val2)) - for m1, m2 in zip(val1, val2): - self.assertEqual(m1.get('key'), m2.get('key')) - self.assertEqual(m1.get('value'), m2.get('value')) + val1_dict = dict((x.key, x.value) for x in val1) + val2_dict = dict((x.key, x.value) for x in val2) + self.assertDictMatch(val1_dict, val2_dict) else: self.assertEqual(val1, val2)