From 59fe59ebfc93a9354aa4598a39c7132cc38938fe Mon Sep 17 00:00:00 2001 From: Juan Manuel Olle Date: Fri, 21 Mar 2014 16:46:03 -0300 Subject: [PATCH] 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) --- cinder/tests/test_db_api.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/cinder/tests/test_db_api.py b/cinder/tests/test_db_api.py index 0e9d49cb560..e1a2077b3ca 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)