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 4cc2366623)
This commit is contained in:
Juan Manuel Olle 2014-03-21 16:46:03 -03:00 committed by Matt Riedemann
parent 978b036a64
commit 59fe59ebfc
1 changed files with 4 additions and 5 deletions

View File

@ -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)