From 4241d2d29c9ca0773b58bceb2616c022e0385fe4 Mon Sep 17 00:00:00 2001 From: Jose Idar Date: Tue, 15 Mar 2016 16:51:04 -0500 Subject: [PATCH] Updated fixture and test for error message clarity. Change-Id: Iba0b682403e9bb1ec57d9d493475c3b48a80c0a3 --- .../blockstorage/volumes_api/fixtures.py | 33 ++++++++++++++----- .../blockstorage/volumes_api/volumes/smoke.py | 3 +- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/cloudroast/blockstorage/volumes_api/fixtures.py b/cloudroast/blockstorage/volumes_api/fixtures.py index 063f5a29..39527842 100644 --- a/cloudroast/blockstorage/volumes_api/fixtures.py +++ b/cloudroast/blockstorage/volumes_api/fixtures.py @@ -172,14 +172,31 @@ class VolumesTestFixture(BaseVolumesTestFixture): error_messages = [] for attr in comparable_attrs: - attr1 = getattr(volume1, attr, None) - attr2 = getattr(volume2, attr, None) - if attr1 != attr2: - error_messages.append( - "\n'{attr}' differs for volumes {v0} and {v1}. ({attr1} " - "!= {attr2})".format( - attr=attr, v0=volume1.id_, v1=volume2.id_, - attr1=attr1, attr2=attr2)) + in_vol1 = hasattr(volume1, attr) + in_vol2 = hasattr(volume2, attr) + if in_vol1 and in_vol2: + attr1 = getattr(volume1, attr, None) + attr2 = getattr(volume2, attr, None) + if attr1 != attr2: + error_messages.append( + "\n'{attr}' differs for volumes {v0} and {v1}. " + "({attr1} != {attr2})".format( + attr=attr, v0=volume1.id_, v1=volume2.id_, + attr1=attr1, attr2=attr2)) + else: + if not in_vol1 and in_vol2: + error_messages.append( + "\n'{attr}' is present in {v0} but not in {v1}." + .format(attr=attr, v0=volume1.id_, v1=volume2.id_)) + elif in_vol1 and not in_vol2: + error_messages.append( + "\n'{attr}' is present in {v1} but not in {v0}." + .format(attr=attr, v0=volume1.id_, v1=volume2.id_)) + elif not in_vol1 and not in_vol2: + error_messages.append( + "\n'{attr}' is not present in {v0} or {v1}, " + "but is expected to be.".format( + attr=attr, v0=volume1.id_, v1=volume2.id_)) if 'metadata' in comparable_attrs: error_messages.extend( diff --git a/cloudroast/blockstorage/volumes_api/volumes/smoke.py b/cloudroast/blockstorage/volumes_api/volumes/smoke.py index 71e7fc16..a9b13008 100644 --- a/cloudroast/blockstorage/volumes_api/volumes/smoke.py +++ b/cloudroast/blockstorage/volumes_api/volumes/smoke.py @@ -223,7 +223,8 @@ class VolumeActions(VolumesTestFixture): volume_info = expected_volumes[0] # Test - self.assertVolumeAttributesAreEqual(volume, volume_info) + self.assertVolumeAttributesAreEqual( + volume, volume_info, excluded_attrs_list=['volume_image_metadata']) @data_driven_test(volume_types_dataset) @tags('volumes', 'smoke')