diff --git a/tempest/api/object_storage/test_account_bulk.py b/tempest/api/object_storage/test_account_bulk.py index 1eda49a62..d8827317b 100644 --- a/tempest/api/object_storage/test_account_bulk.py +++ b/tempest/api/object_storage/test_account_bulk.py @@ -17,6 +17,7 @@ import tempfile from tempest.api.object_storage import base from tempest.common import custom_matchers +from tempest.lib import decorators from tempest import test @@ -68,7 +69,7 @@ class BulkTest(base.BaseObjectTest): self.assertHeaders(resp, 'Account', 'GET') self.assertNotIn(container_name, body) - @test.idempotent_id('a407de51-1983-47cc-9f14-47c2b059413c') + @decorators.idempotent_id('a407de51-1983-47cc-9f14-47c2b059413c') @test.requires_ext(extension='bulk_upload', service='object') def test_extract_archive(self): # Test bulk operation of file upload with an archived file @@ -104,7 +105,7 @@ class BulkTest(base.BaseObjectTest): self.assertIn(object_name, [c['name'] for c in contents_list]) - @test.idempotent_id('c075e682-0d2a-43b2-808d-4116200d736d') + @decorators.idempotent_id('c075e682-0d2a-43b2-808d-4116200d736d') @test.requires_ext(extension='bulk_delete', service='object') def test_bulk_delete(self): # Test bulk operation of deleting multiple files @@ -131,7 +132,7 @@ class BulkTest(base.BaseObjectTest): # Check if uploaded contents are completely deleted self._check_contents_deleted(container_name) - @test.idempotent_id('dbea2bcb-efbb-4674-ac8a-a5a0e33d1d79') + @decorators.idempotent_id('dbea2bcb-efbb-4674-ac8a-a5a0e33d1d79') @test.requires_ext(extension='bulk_delete', service='object') def test_bulk_delete_by_POST(self): # Test bulk operation of deleting multiple files diff --git a/tempest/api/object_storage/test_account_quotas.py b/tempest/api/object_storage/test_account_quotas.py index fcbd6eb23..cbf0d4b03 100644 --- a/tempest/api/object_storage/test_account_quotas.py +++ b/tempest/api/object_storage/test_account_quotas.py @@ -15,6 +15,7 @@ from tempest.api.object_storage import base from tempest.common.utils import data_utils from tempest import config +from tempest.lib import decorators from tempest import test CONF = config.CONF @@ -76,7 +77,7 @@ class AccountQuotasTest(base.BaseObjectTest): super(AccountQuotasTest, cls).resource_cleanup() @test.attr(type="smoke") - @test.idempotent_id('a22ef352-a342-4587-8f47-3bbdb5b039c4') + @decorators.idempotent_id('a22ef352-a342-4587-8f47-3bbdb5b039c4') @test.requires_ext(extension='account_quotas', service='object') def test_upload_valid_object(self): object_name = data_utils.rand_name(name="TestObject") @@ -87,7 +88,7 @@ class AccountQuotasTest(base.BaseObjectTest): self.assertHeaders(resp, 'Object', 'PUT') @test.attr(type=["smoke"]) - @test.idempotent_id('63f51f9f-5f1d-4fc6-b5be-d454d70949d6') + @decorators.idempotent_id('63f51f9f-5f1d-4fc6-b5be-d454d70949d6') @test.requires_ext(extension='account_quotas', service='object') def test_admin_modify_quota(self): """Test ResellerAdmin can modify/remove the quota on a user's account diff --git a/tempest/api/object_storage/test_account_quotas_negative.py b/tempest/api/object_storage/test_account_quotas_negative.py index ae8dfcc9c..2e85a4350 100644 --- a/tempest/api/object_storage/test_account_quotas_negative.py +++ b/tempest/api/object_storage/test_account_quotas_negative.py @@ -14,6 +14,7 @@ from tempest.api.object_storage import base from tempest import config +from tempest.lib import decorators from tempest.lib import exceptions as lib_exc from tempest import test @@ -75,7 +76,7 @@ class AccountQuotasNegativeTest(base.BaseObjectTest): super(AccountQuotasNegativeTest, cls).resource_cleanup() @test.attr(type=["negative"]) - @test.idempotent_id('d1dc5076-555e-4e6d-9697-28f1fe976324') + @decorators.idempotent_id('d1dc5076-555e-4e6d-9697-28f1fe976324') @test.requires_ext(extension='account_quotas', service='object') def test_user_modify_quota(self): """Test that a user cannot modify or remove a quota on its account.""" diff --git a/tempest/api/object_storage/test_account_services.py b/tempest/api/object_storage/test_account_services.py index 59129e59d..d779d42bf 100644 --- a/tempest/api/object_storage/test_account_services.py +++ b/tempest/api/object_storage/test_account_services.py @@ -22,6 +22,7 @@ from tempest.api.object_storage import base from tempest.common import custom_matchers from tempest.common.utils import data_utils from tempest import config +from tempest.lib import decorators from tempest import test CONF = config.CONF @@ -54,7 +55,7 @@ class AccountTest(base.BaseObjectTest): super(AccountTest, cls).resource_cleanup() @test.attr(type='smoke') - @test.idempotent_id('3499406a-ae53-4f8c-b43a-133d4dc6fe3f') + @decorators.idempotent_id('3499406a-ae53-4f8c-b43a-133d4dc6fe3f') def test_list_containers(self): # list of all containers should not be empty resp, container_list = self.account_client.list_account_containers() @@ -66,7 +67,7 @@ class AccountTest(base.BaseObjectTest): self.assertIn(six.text_type(container_name).encode('utf-8'), container_list) - @test.idempotent_id('884ec421-fbad-4fcc-916b-0580f2699565') + @decorators.idempotent_id('884ec421-fbad-4fcc-916b-0580f2699565') def test_list_no_containers(self): # List request to empty account @@ -103,7 +104,7 @@ class AccountTest(base.BaseObjectTest): self.assertEqual(len(container_list), 0) - @test.idempotent_id('1c7efa35-e8a2-4b0b-b5ff-862c7fd83704') + @decorators.idempotent_id('1c7efa35-e8a2-4b0b-b5ff-862c7fd83704') def test_list_containers_with_format_json(self): # list containers setting format parameter to 'json' params = {'format': 'json'} @@ -115,7 +116,7 @@ class AccountTest(base.BaseObjectTest): self.assertTrue([c['count'] for c in container_list]) self.assertTrue([c['bytes'] for c in container_list]) - @test.idempotent_id('4477b609-1ca6-4d4b-b25d-ad3f01086089') + @decorators.idempotent_id('4477b609-1ca6-4d4b-b25d-ad3f01086089') def test_list_containers_with_format_xml(self): # list containers setting format parameter to 'xml' params = {'format': 'xml'} @@ -130,7 +131,7 @@ class AccountTest(base.BaseObjectTest): self.assertEqual(container_list.find(".//count").tag, 'count') self.assertEqual(container_list.find(".//bytes").tag, 'bytes') - @test.idempotent_id('6eb04a6a-4860-4e31-ba91-ea3347d76b58') + @decorators.idempotent_id('6eb04a6a-4860-4e31-ba91-ea3347d76b58') @testtools.skipIf( not CONF.object_storage_feature_enabled.discoverability, 'Discoverability function is disabled') @@ -139,7 +140,7 @@ class AccountTest(base.BaseObjectTest): self.assertThat(resp, custom_matchers.AreAllWellFormatted()) - @test.idempotent_id('5cfa4ab2-4373-48dd-a41f-a532b12b08b2') + @decorators.idempotent_id('5cfa4ab2-4373-48dd-a41f-a532b12b08b2') def test_list_containers_with_limit(self): # list containers one of them, half of them then all of them for limit in (1, self.containers_count // 2, @@ -151,7 +152,7 @@ class AccountTest(base.BaseObjectTest): self.assertEqual(len(container_list), limit) - @test.idempotent_id('638f876d-6a43-482a-bbb3-0840bca101c6') + @decorators.idempotent_id('638f876d-6a43-482a-bbb3-0840bca101c6') def test_list_containers_with_marker(self): # list containers using marker param # first expect to get 0 container as we specified last @@ -172,7 +173,7 @@ class AccountTest(base.BaseObjectTest): self.assertEqual(len(container_list), self.containers_count // 2 - 1) - @test.idempotent_id('5ca164e4-7bde-43fa-bafb-913b53b9e786') + @decorators.idempotent_id('5ca164e4-7bde-43fa-bafb-913b53b9e786') def test_list_containers_with_end_marker(self): # list containers using end_marker param # first expect to get 0 container as we specified first container as @@ -190,7 +191,7 @@ class AccountTest(base.BaseObjectTest): self.assertHeaders(resp, 'Account', 'GET') self.assertEqual(len(container_list), self.containers_count // 2) - @test.idempotent_id('ac8502c2-d4e4-4f68-85a6-40befea2ef5e') + @decorators.idempotent_id('ac8502c2-d4e4-4f68-85a6-40befea2ef5e') def test_list_containers_with_marker_and_end_marker(self): # list containers combining marker and end_marker param params = {'marker': self.containers[0], @@ -200,7 +201,7 @@ class AccountTest(base.BaseObjectTest): self.assertHeaders(resp, 'Account', 'GET') self.assertEqual(len(container_list), self.containers_count - 2) - @test.idempotent_id('f7064ae8-dbcc-48da-b594-82feef6ea5af') + @decorators.idempotent_id('f7064ae8-dbcc-48da-b594-82feef6ea5af') def test_list_containers_with_limit_and_marker(self): # list containers combining marker and limit param # result are always limitated by the limit whatever the marker @@ -215,7 +216,7 @@ class AccountTest(base.BaseObjectTest): self.assertLessEqual(len(container_list), limit, str(container_list)) - @test.idempotent_id('888a3f0e-7214-4806-8e50-5e0c9a69bb5e') + @decorators.idempotent_id('888a3f0e-7214-4806-8e50-5e0c9a69bb5e') def test_list_containers_with_limit_and_end_marker(self): # list containers combining limit and end_marker param limit = random.randint(1, self.containers_count) @@ -227,7 +228,7 @@ class AccountTest(base.BaseObjectTest): self.assertEqual(len(container_list), min(limit, self.containers_count // 2)) - @test.idempotent_id('8cf98d9c-e3a0-4e44-971b-c87656fdddbd') + @decorators.idempotent_id('8cf98d9c-e3a0-4e44-971b-c87656fdddbd') def test_list_containers_with_limit_and_marker_and_end_marker(self): # list containers combining limit, marker and end_marker param limit = random.randint(1, self.containers_count) @@ -240,7 +241,7 @@ class AccountTest(base.BaseObjectTest): self.assertEqual(len(container_list), min(limit, self.containers_count - 2)) - @test.idempotent_id('365e6fc7-1cfe-463b-a37c-8bd08d47b6aa') + @decorators.idempotent_id('365e6fc7-1cfe-463b-a37c-8bd08d47b6aa') def test_list_containers_with_prefix(self): # list containers that have a name that starts with a prefix prefix = '{0}-a'.format(CONF.resources_prefix) @@ -253,7 +254,7 @@ class AccountTest(base.BaseObjectTest): 'utf-8').startswith(prefix)) @test.attr(type='smoke') - @test.idempotent_id('4894c312-6056-4587-8d6f-86ffbf861f80') + @decorators.idempotent_id('4894c312-6056-4587-8d6f-86ffbf861f80') def test_list_account_metadata(self): # list all account metadata @@ -268,14 +269,14 @@ class AccountTest(base.BaseObjectTest): self.assertIn('x-account-meta-test-account-meta2', resp) self.account_client.delete_account_metadata(metadata) - @test.idempotent_id('b904c2e3-24c2-4dba-ad7d-04e90a761be5') + @decorators.idempotent_id('b904c2e3-24c2-4dba-ad7d-04e90a761be5') def test_list_no_account_metadata(self): # list no account metadata resp, _ = self.account_client.list_account_metadata() self.assertHeaders(resp, 'Account', 'HEAD') self.assertNotIn('x-account-meta-', str(resp)) - @test.idempotent_id('e2a08b5f-3115-4768-a3ee-d4287acd6c08') + @decorators.idempotent_id('e2a08b5f-3115-4768-a3ee-d4287acd6c08') def test_update_account_metadata_with_create_metadata(self): # add metadata to account metadata = {'test-account-meta1': 'Meta1'} @@ -289,7 +290,7 @@ class AccountTest(base.BaseObjectTest): self.account_client.delete_account_metadata(metadata) - @test.idempotent_id('9f60348d-c46f-4465-ae06-d51dbd470953') + @decorators.idempotent_id('9f60348d-c46f-4465-ae06-d51dbd470953') def test_update_account_metadata_with_delete_matadata(self): # delete metadata from account metadata = {'test-account-meta1': 'Meta1'} @@ -300,7 +301,7 @@ class AccountTest(base.BaseObjectTest): resp, _ = self.account_client.list_account_metadata() self.assertNotIn('x-account-meta-test-account-meta1', resp) - @test.idempotent_id('64fd53f3-adbd-4639-af54-436e4982dbfb') + @decorators.idempotent_id('64fd53f3-adbd-4639-af54-436e4982dbfb') def test_update_account_metadata_with_create_matadata_key(self): # if the value of metadata is not set, the metadata is not # registered at a server @@ -311,7 +312,7 @@ class AccountTest(base.BaseObjectTest): resp, _ = self.account_client.list_account_metadata() self.assertNotIn('x-account-meta-test-account-meta1', resp) - @test.idempotent_id('d4d884d3-4696-4b85-bc98-4f57c4dd2bf1') + @decorators.idempotent_id('d4d884d3-4696-4b85-bc98-4f57c4dd2bf1') def test_update_account_metadata_with_delete_matadata_key(self): # Although the value of metadata is not set, the feature of # deleting metadata is valid @@ -324,7 +325,7 @@ class AccountTest(base.BaseObjectTest): resp, _ = self.account_client.list_account_metadata() self.assertNotIn('x-account-meta-test-account-meta1', resp) - @test.idempotent_id('8e5fc073-59b9-42ee-984a-29ed11b2c749') + @decorators.idempotent_id('8e5fc073-59b9-42ee-984a-29ed11b2c749') def test_update_account_metadata_with_create_and_delete_metadata(self): # Send a request adding and deleting metadata requests simultaneously metadata_1 = {'test-account-meta1': 'Meta1'} diff --git a/tempest/api/object_storage/test_account_services_negative.py b/tempest/api/object_storage/test_account_services_negative.py index 254a9b38f..d46534b4a 100644 --- a/tempest/api/object_storage/test_account_services_negative.py +++ b/tempest/api/object_storage/test_account_services_negative.py @@ -14,6 +14,7 @@ from tempest.api.object_storage import base from tempest import config +from tempest.lib import decorators from tempest.lib import exceptions as lib_exc from tempest import test @@ -32,7 +33,7 @@ class AccountNegativeTest(base.BaseObjectTest): cls.os_operator = cls.os_roles_operator_alt @test.attr(type=['negative']) - @test.idempotent_id('070e6aca-6152-4867-868d-1118d68fb38c') + @decorators.idempotent_id('070e6aca-6152-4867-868d-1118d68fb38c') def test_list_containers_with_non_authorized_user(self): # list containers using non-authorized user diff --git a/tempest/api/object_storage/test_container_acl.py b/tempest/api/object_storage/test_container_acl.py index e555fd90f..aa4e92cfe 100644 --- a/tempest/api/object_storage/test_container_acl.py +++ b/tempest/api/object_storage/test_container_acl.py @@ -16,7 +16,7 @@ from tempest.api.object_storage import base from tempest.common.utils import data_utils from tempest import config -from tempest import test +from tempest.lib import decorators CONF = config.CONF @@ -34,7 +34,7 @@ class ObjectTestACLs(base.BaseObjectTest): self.delete_containers() super(ObjectTestACLs, self).tearDown() - @test.idempotent_id('a3270f3f-7640-4944-8448-c7ea783ea5b6') + @decorators.idempotent_id('a3270f3f-7640-4944-8448-c7ea783ea5b6') def test_read_object_with_rights(self): # attempt to read object using authorized user # update X-Container-Read metadata ACL @@ -61,7 +61,7 @@ class ObjectTestACLs(base.BaseObjectTest): self.container_name, object_name) self.assertHeaders(resp, 'Object', 'GET') - @test.idempotent_id('aa58bfa5-40d9-4bc3-82b4-d07f4a9e392a') + @decorators.idempotent_id('aa58bfa5-40d9-4bc3-82b4-d07f4a9e392a') def test_write_object_with_rights(self): # attempt to write object using authorized user # update X-Container-Write metadata ACL diff --git a/tempest/api/object_storage/test_container_acl_negative.py b/tempest/api/object_storage/test_container_acl_negative.py index 0055bf960..d5d5ea7d6 100644 --- a/tempest/api/object_storage/test_container_acl_negative.py +++ b/tempest/api/object_storage/test_container_acl_negative.py @@ -15,6 +15,7 @@ from tempest.api.object_storage import base from tempest.common.utils import data_utils from tempest import config +from tempest.lib import decorators from tempest.lib import exceptions as lib_exc from tempest import test @@ -47,7 +48,7 @@ class ObjectACLsNegativeTest(base.BaseObjectTest): super(ObjectACLsNegativeTest, self).tearDown() @test.attr(type=['negative']) - @test.idempotent_id('af587587-0c24-4e15-9822-8352ce711013') + @decorators.idempotent_id('af587587-0c24-4e15-9822-8352ce711013') def test_write_object_without_using_creds(self): # trying to create object with empty headers # X-Auth-Token is not provided @@ -61,7 +62,7 @@ class ObjectACLsNegativeTest(base.BaseObjectTest): self.container_name, object_name, 'data', headers={}) @test.attr(type=['negative']) - @test.idempotent_id('af85af0b-a025-4e72-a90e-121babf55720') + @decorators.idempotent_id('af85af0b-a025-4e72-a90e-121babf55720') def test_delete_object_without_using_creds(self): # create object object_name = data_utils.rand_name(name='Object') @@ -78,7 +79,7 @@ class ObjectACLsNegativeTest(base.BaseObjectTest): self.container_name, object_name) @test.attr(type=['negative']) - @test.idempotent_id('63d84e37-55a6-42e2-9e5f-276e60e26a00') + @decorators.idempotent_id('63d84e37-55a6-42e2-9e5f-276e60e26a00') def test_write_object_with_non_authorized_user(self): # attempt to upload another file using non-authorized user # User provided token is forbidden. ACL are not set @@ -93,7 +94,7 @@ class ObjectACLsNegativeTest(base.BaseObjectTest): self.container_name, object_name, 'data', headers={}) @test.attr(type=['negative']) - @test.idempotent_id('abf63359-be52-4feb-87dd-447689fc77fd') + @decorators.idempotent_id('abf63359-be52-4feb-87dd-447689fc77fd') def test_read_object_with_non_authorized_user(self): # attempt to read object using non-authorized user # User provided token is forbidden. ACL are not set @@ -111,7 +112,7 @@ class ObjectACLsNegativeTest(base.BaseObjectTest): self.container_name, object_name) @test.attr(type=['negative']) - @test.idempotent_id('7343ac3d-cfed-4198-9bb0-00149741a492') + @decorators.idempotent_id('7343ac3d-cfed-4198-9bb0-00149741a492') def test_delete_object_with_non_authorized_user(self): # attempt to delete object using non-authorized user # User provided token is forbidden. ACL are not set @@ -129,7 +130,7 @@ class ObjectACLsNegativeTest(base.BaseObjectTest): self.container_name, object_name) @test.attr(type=['negative']) - @test.idempotent_id('9ed01334-01e9-41ea-87ea-e6f465582823') + @decorators.idempotent_id('9ed01334-01e9-41ea-87ea-e6f465582823') def test_read_object_without_rights(self): # attempt to read object using non-authorized user # update X-Container-Read metadata ACL @@ -153,7 +154,7 @@ class ObjectACLsNegativeTest(base.BaseObjectTest): self.container_name, object_name) @test.attr(type=['negative']) - @test.idempotent_id('a3a585a7-d8cf-4b65-a1a0-edc2b1204f85') + @decorators.idempotent_id('a3a585a7-d8cf-4b65-a1a0-edc2b1204f85') def test_write_object_without_rights(self): # attempt to write object using non-authorized user # update X-Container-Write metadata ACL @@ -174,7 +175,7 @@ class ObjectACLsNegativeTest(base.BaseObjectTest): object_name, 'data', headers={}) @test.attr(type=['negative']) - @test.idempotent_id('8ba512ad-aa6e-444e-b882-2906a0ea2052') + @decorators.idempotent_id('8ba512ad-aa6e-444e-b882-2906a0ea2052') def test_write_object_without_write_rights(self): # attempt to write object using non-authorized user # update X-Container-Read and X-Container-Write metadata ACL @@ -199,7 +200,7 @@ class ObjectACLsNegativeTest(base.BaseObjectTest): object_name, 'data', headers={}) @test.attr(type=['negative']) - @test.idempotent_id('b4e366f8-f185-47ab-b789-df4416f9ecdb') + @decorators.idempotent_id('b4e366f8-f185-47ab-b789-df4416f9ecdb') def test_delete_object_without_write_rights(self): # attempt to delete object using non-authorized user # update X-Container-Read and X-Container-Write metadata ACL diff --git a/tempest/api/object_storage/test_container_quotas.py b/tempest/api/object_storage/test_container_quotas.py index 8cbe44134..d3b456a6f 100644 --- a/tempest/api/object_storage/test_container_quotas.py +++ b/tempest/api/object_storage/test_container_quotas.py @@ -15,6 +15,7 @@ from tempest.api.object_storage import base from tempest.common.utils import data_utils +from tempest.lib import decorators from tempest.lib import exceptions as lib_exc from tempest import test @@ -47,7 +48,7 @@ class ContainerQuotasTest(base.BaseObjectTest): self.delete_containers() super(ContainerQuotasTest, self).tearDown() - @test.idempotent_id('9a0fb034-86af-4df0-86fa-f8bd7db21ae0') + @decorators.idempotent_id('9a0fb034-86af-4df0-86fa-f8bd7db21ae0') @test.requires_ext(extension='container_quotas', service='object') @test.attr(type="smoke") def test_upload_valid_object(self): @@ -64,7 +65,7 @@ class ContainerQuotasTest(base.BaseObjectTest): nafter = self._get_bytes_used() self.assertEqual(nbefore + len(data), nafter) - @test.idempotent_id('22eeeb2b-3668-4160-baef-44790f65a5a0') + @decorators.idempotent_id('22eeeb2b-3668-4160-baef-44790f65a5a0') @test.requires_ext(extension='container_quotas', service='object') @test.attr(type="smoke") def test_upload_large_object(self): @@ -81,7 +82,7 @@ class ContainerQuotasTest(base.BaseObjectTest): nafter = self._get_bytes_used() self.assertEqual(nbefore, nafter) - @test.idempotent_id('3a387039-697a-44fc-a9c0-935de31f426b') + @decorators.idempotent_id('3a387039-697a-44fc-a9c0-935de31f426b') @test.requires_ext(extension='container_quotas', service='object') @test.attr(type="smoke") def test_upload_too_many_objects(self): diff --git a/tempest/api/object_storage/test_container_services.py b/tempest/api/object_storage/test_container_services.py index e4476a188..4b65584bb 100644 --- a/tempest/api/object_storage/test_container_services.py +++ b/tempest/api/object_storage/test_container_services.py @@ -15,6 +15,7 @@ from tempest.api.object_storage import base from tempest.lib.common.utils import data_utils +from tempest.lib import decorators from tempest import test @@ -24,14 +25,14 @@ class ContainerTest(base.BaseObjectTest): super(ContainerTest, self).tearDown() @test.attr(type='smoke') - @test.idempotent_id('92139d73-7819-4db1-85f8-3f2f22a8d91f') + @decorators.idempotent_id('92139d73-7819-4db1-85f8-3f2f22a8d91f') def test_create_container(self): container_name = data_utils.rand_name(name='TestContainer') resp, body = self.container_client.create_container(container_name) self.containers.append(container_name) self.assertHeaders(resp, 'Container', 'PUT') - @test.idempotent_id('49f866ed-d6af-4395-93e7-4187eb56d322') + @decorators.idempotent_id('49f866ed-d6af-4395-93e7-4187eb56d322') def test_create_container_overwrite(self): # overwrite container with the same name container_name = data_utils.rand_name(name='TestContainer') @@ -41,7 +42,7 @@ class ContainerTest(base.BaseObjectTest): resp, _ = self.container_client.create_container(container_name) self.assertHeaders(resp, 'Container', 'PUT') - @test.idempotent_id('c2ac4d59-d0f5-40d5-ba19-0635056d48cd') + @decorators.idempotent_id('c2ac4d59-d0f5-40d5-ba19-0635056d48cd') def test_create_container_with_metadata_key(self): # create container with the blank value of metadata container_name = data_utils.rand_name(name='TestContainer') @@ -58,7 +59,7 @@ class ContainerTest(base.BaseObjectTest): # in the server self.assertNotIn('x-container-meta-test-container-meta', resp) - @test.idempotent_id('e1e8df32-7b22-44e1-aa08-ccfd8d446b58') + @decorators.idempotent_id('e1e8df32-7b22-44e1-aa08-ccfd8d446b58') def test_create_container_with_metadata_value(self): # create container with metadata value container_name = data_utils.rand_name(name='TestContainer') @@ -77,7 +78,7 @@ class ContainerTest(base.BaseObjectTest): self.assertEqual(resp['x-container-meta-test-container-meta'], metadata['test_container_meta']) - @test.idempotent_id('24d16451-1c0c-4e4f-b59c-9840a3aba40e') + @decorators.idempotent_id('24d16451-1c0c-4e4f-b59c-9840a3aba40e') def test_create_container_with_remove_metadata_key(self): # create container with the blank value of remove metadata container_name = data_utils.rand_name(name='TestContainer') @@ -97,7 +98,7 @@ class ContainerTest(base.BaseObjectTest): container_name) self.assertNotIn('x-container-meta-test-container-meta', resp) - @test.idempotent_id('8a21ebad-a5c7-4e29-b428-384edc8cd156') + @decorators.idempotent_id('8a21ebad-a5c7-4e29-b428-384edc8cd156') def test_create_container_with_remove_metadata_value(self): # create container with remove metadata container_name = data_utils.rand_name(name='TestContainer') @@ -115,7 +116,7 @@ class ContainerTest(base.BaseObjectTest): container_name) self.assertNotIn('x-container-meta-test-container-meta', resp) - @test.idempotent_id('95d3a249-b702-4082-a2c4-14bb860cf06a') + @decorators.idempotent_id('95d3a249-b702-4082-a2c4-14bb860cf06a') def test_delete_container(self): # create a container container_name = self.create_container() @@ -124,7 +125,7 @@ class ContainerTest(base.BaseObjectTest): self.assertHeaders(resp, 'Container', 'DELETE') @test.attr(type='smoke') - @test.idempotent_id('312ff6bd-5290-497f-bda1-7c5fec6697ab') + @decorators.idempotent_id('312ff6bd-5290-497f-bda1-7c5fec6697ab') def test_list_container_contents(self): # get container contents list container_name = self.create_container() @@ -135,7 +136,7 @@ class ContainerTest(base.BaseObjectTest): self.assertHeaders(resp, 'Container', 'GET') self.assertEqual([object_name], object_list) - @test.idempotent_id('4646ac2d-9bfb-4c7d-a3c5-0f527402b3df') + @decorators.idempotent_id('4646ac2d-9bfb-4c7d-a3c5-0f527402b3df') def test_list_container_contents_with_no_object(self): # get empty container contents list container_name = self.create_container() @@ -145,7 +146,7 @@ class ContainerTest(base.BaseObjectTest): self.assertHeaders(resp, 'Container', 'GET') self.assertEmpty(object_list) - @test.idempotent_id('fe323a32-57b9-4704-a996-2e68f83b09bc') + @decorators.idempotent_id('fe323a32-57b9-4704-a996-2e68f83b09bc') def test_list_container_contents_with_delimiter(self): # get container contents list using delimiter param container_name = self.create_container() @@ -159,7 +160,7 @@ class ContainerTest(base.BaseObjectTest): self.assertHeaders(resp, 'Container', 'GET') self.assertEqual([object_name.split('/')[0] + '/'], object_list) - @test.idempotent_id('55b4fa5c-e12e-4ca9-8fcf-a79afe118522') + @decorators.idempotent_id('55b4fa5c-e12e-4ca9-8fcf-a79afe118522') def test_list_container_contents_with_end_marker(self): # get container contents list using end_marker param container_name = self.create_container() @@ -172,7 +173,7 @@ class ContainerTest(base.BaseObjectTest): self.assertHeaders(resp, 'Container', 'GET') self.assertEqual([object_name], object_list) - @test.idempotent_id('196f5034-6ab0-4032-9da9-a937bbb9fba9') + @decorators.idempotent_id('196f5034-6ab0-4032-9da9-a937bbb9fba9') def test_list_container_contents_with_format_json(self): # get container contents list using format_json param container_name = self.create_container() @@ -191,7 +192,7 @@ class ContainerTest(base.BaseObjectTest): self.assertTrue([c['content_type'] for c in object_list]) self.assertTrue([c['last_modified'] for c in object_list]) - @test.idempotent_id('655a53ca-4d15-408c-a377-f4c6dbd0a1fa') + @decorators.idempotent_id('655a53ca-4d15-408c-a377-f4c6dbd0a1fa') def test_list_container_contents_with_format_xml(self): # get container contents list using format_xml param container_name = self.create_container() @@ -215,7 +216,7 @@ class ContainerTest(base.BaseObjectTest): self.assertEqual(object_list.find(".//last_modified").tag, 'last_modified') - @test.idempotent_id('297ec38b-2b61-4ff4-bcd1-7fa055e97b61') + @decorators.idempotent_id('297ec38b-2b61-4ff4-bcd1-7fa055e97b61') def test_list_container_contents_with_limit(self): # get container contents list using limit param container_name = self.create_container() @@ -228,7 +229,7 @@ class ContainerTest(base.BaseObjectTest): self.assertHeaders(resp, 'Container', 'GET') self.assertEqual([object_name], object_list) - @test.idempotent_id('c31ddc63-2a58-4f6b-b25c-94d2937e6867') + @decorators.idempotent_id('c31ddc63-2a58-4f6b-b25c-94d2937e6867') def test_list_container_contents_with_marker(self): # get container contents list using marker param container_name = self.create_container() @@ -241,7 +242,7 @@ class ContainerTest(base.BaseObjectTest): self.assertHeaders(resp, 'Container', 'GET') self.assertEqual([object_name], object_list) - @test.idempotent_id('58ca6cc9-6af0-408d-aaec-2a6a7b2f0df9') + @decorators.idempotent_id('58ca6cc9-6af0-408d-aaec-2a6a7b2f0df9') def test_list_container_contents_with_path(self): # get container contents list using path param container_name = self.create_container() @@ -255,7 +256,7 @@ class ContainerTest(base.BaseObjectTest): self.assertHeaders(resp, 'Container', 'GET') self.assertEqual([object_name], object_list) - @test.idempotent_id('77e742c7-caf2-4ec9-8aa4-f7d509a3344c') + @decorators.idempotent_id('77e742c7-caf2-4ec9-8aa4-f7d509a3344c') def test_list_container_contents_with_prefix(self): # get container contents list using prefix param container_name = self.create_container() @@ -270,7 +271,7 @@ class ContainerTest(base.BaseObjectTest): self.assertEqual([object_name], object_list) @test.attr(type='smoke') - @test.idempotent_id('96e68f0e-19ec-4aa2-86f3-adc6a45e14dd') + @decorators.idempotent_id('96e68f0e-19ec-4aa2-86f3-adc6a45e14dd') def test_list_container_metadata(self): # List container metadata container_name = self.create_container() @@ -286,7 +287,7 @@ class ContainerTest(base.BaseObjectTest): self.assertIn('x-container-meta-name', resp) self.assertEqual(resp['x-container-meta-name'], metadata['name']) - @test.idempotent_id('a2faf936-6b13-4f8d-92a2-c2278355821e') + @decorators.idempotent_id('a2faf936-6b13-4f8d-92a2-c2278355821e') def test_list_no_container_metadata(self): # HEAD container without metadata container_name = self.create_container() @@ -296,7 +297,7 @@ class ContainerTest(base.BaseObjectTest): self.assertHeaders(resp, 'Container', 'HEAD') self.assertNotIn('x-container-meta-', str(resp)) - @test.idempotent_id('cf19bc0b-7e16-4a5a-aaed-cb0c2fe8deef') + @decorators.idempotent_id('cf19bc0b-7e16-4a5a-aaed-cb0c2fe8deef') def test_update_container_metadata_with_create_and_delete_metadata(self): # Send one request of adding and deleting metadata container_name = data_utils.rand_name(name='TestContainer') @@ -319,7 +320,7 @@ class ContainerTest(base.BaseObjectTest): self.assertEqual(resp['x-container-meta-test-container-meta2'], metadata_2['test-container-meta2']) - @test.idempotent_id('2ae5f295-4bf1-4e04-bfad-21e54b62cec5') + @decorators.idempotent_id('2ae5f295-4bf1-4e04-bfad-21e54b62cec5') def test_update_container_metadata_with_create_metadata(self): # update container metadata using add metadata container_name = self.create_container() @@ -336,7 +337,7 @@ class ContainerTest(base.BaseObjectTest): self.assertEqual(resp['x-container-meta-test-container-meta1'], metadata['test-container-meta1']) - @test.idempotent_id('3a5ce7d4-6e4b-47d0-9d87-7cd42c325094') + @decorators.idempotent_id('3a5ce7d4-6e4b-47d0-9d87-7cd42c325094') def test_update_container_metadata_with_delete_metadata(self): # update container metadata using delete metadata container_name = data_utils.rand_name(name='TestContainer') @@ -354,7 +355,7 @@ class ContainerTest(base.BaseObjectTest): container_name) self.assertNotIn('x-container-meta-test-container-meta1', resp) - @test.idempotent_id('31f40a5f-6a52-4314-8794-cd89baed3040') + @decorators.idempotent_id('31f40a5f-6a52-4314-8794-cd89baed3040') def test_update_container_metadata_with_create_metadata_key(self): # update container metadata with a blank value of metadata container_name = self.create_container() @@ -369,7 +370,7 @@ class ContainerTest(base.BaseObjectTest): container_name) self.assertNotIn('x-container-meta-test-container-meta1', resp) - @test.idempotent_id('a2e36378-6f1f-43f4-840a-ffd9cfd61914') + @decorators.idempotent_id('a2e36378-6f1f-43f4-840a-ffd9cfd61914') def test_update_container_metadata_with_delete_metadata_key(self): # update container metadata with a blank value of metadata container_name = data_utils.rand_name(name='TestContainer') diff --git a/tempest/api/object_storage/test_container_services_negative.py b/tempest/api/object_storage/test_container_services_negative.py index 2856fabf5..be066ba73 100644 --- a/tempest/api/object_storage/test_container_services_negative.py +++ b/tempest/api/object_storage/test_container_services_negative.py @@ -18,6 +18,7 @@ import testtools from tempest.api.object_storage import base from tempest import config from tempest.lib.common.utils import data_utils +from tempest.lib import decorators from tempest.lib import exceptions from tempest import test @@ -36,7 +37,7 @@ class ContainerNegativeTest(base.BaseObjectTest): cls.constraints = body['swift'] @test.attr(type=["negative"]) - @test.idempotent_id('30686921-4bed-4764-a038-40d741ed4e78') + @decorators.idempotent_id('30686921-4bed-4764-a038-40d741ed4e78') @testtools.skipUnless( CONF.object_storage_feature_enabled.discoverability, 'Discoverability function is disabled') @@ -52,7 +53,7 @@ class ContainerNegativeTest(base.BaseObjectTest): ' longer than ' + str(max_length), str(ex)) @test.attr(type=["negative"]) - @test.idempotent_id('41e645bf-2e68-4f84-bf7b-c71aa5cd76ce') + @decorators.idempotent_id('41e645bf-2e68-4f84-bf7b-c71aa5cd76ce') @testtools.skipUnless( CONF.object_storage_feature_enabled.discoverability, 'Discoverability function is disabled') @@ -69,7 +70,7 @@ class ContainerNegativeTest(base.BaseObjectTest): self.assertIn('Metadata name too long', str(ex)) @test.attr(type=["negative"]) - @test.idempotent_id('81e36922-326b-4b7c-8155-3bbceecd7a82') + @decorators.idempotent_id('81e36922-326b-4b7c-8155-3bbceecd7a82') @testtools.skipUnless( CONF.object_storage_feature_enabled.discoverability, 'Discoverability function is disabled') @@ -86,7 +87,7 @@ class ContainerNegativeTest(base.BaseObjectTest): self.assertIn('Metadata value longer than ' + str(max_length), str(ex)) @test.attr(type=["negative"]) - @test.idempotent_id('ac666539-d566-4f02-8ceb-58e968dfb732') + @decorators.idempotent_id('ac666539-d566-4f02-8ceb-58e968dfb732') @testtools.skipUnless( CONF.object_storage_feature_enabled.discoverability, 'Discoverability function is disabled') @@ -106,7 +107,7 @@ class ContainerNegativeTest(base.BaseObjectTest): str(ex)) @test.attr(type=["negative"]) - @test.idempotent_id('1a95ab2e-b712-4a98-8a4d-8ce21b7557d6') + @decorators.idempotent_id('1a95ab2e-b712-4a98-8a4d-8ce21b7557d6') def test_get_metadata_headers_with_invalid_container_name(self): # Attempts to retrieve metadata headers with an invalid # container name. @@ -115,7 +116,7 @@ class ContainerNegativeTest(base.BaseObjectTest): 'invalid_container_name') @test.attr(type=["negative"]) - @test.idempotent_id('125a24fa-90a7-4cfc-b604-44e49d788390') + @decorators.idempotent_id('125a24fa-90a7-4cfc-b604-44e49d788390') def test_update_metadata_with_nonexistent_container_name(self): # Attempts to update metadata using a nonexistent container name. metadata = {'animal': 'penguin'} @@ -125,7 +126,7 @@ class ContainerNegativeTest(base.BaseObjectTest): 'nonexistent_container_name', metadata) @test.attr(type=["negative"]) - @test.idempotent_id('65387dbf-a0e2-4aac-9ddc-16eb3f1f69ba') + @decorators.idempotent_id('65387dbf-a0e2-4aac-9ddc-16eb3f1f69ba') def test_delete_with_nonexistent_container_name(self): # Attempts to delete metadata using a nonexistent container name. metadata = {'animal': 'penguin'} @@ -135,7 +136,7 @@ class ContainerNegativeTest(base.BaseObjectTest): 'nonexistent_container_name', metadata) @test.attr(type=["negative"]) - @test.idempotent_id('14331d21-1e81-420a-beea-19cb5e5207f5') + @decorators.idempotent_id('14331d21-1e81-420a-beea-19cb5e5207f5') def test_list_all_container_objects_with_nonexistent_container(self): # Attempts to get a listing of all objects on a container # that doesn't exist. @@ -145,7 +146,7 @@ class ContainerNegativeTest(base.BaseObjectTest): 'nonexistent_container_name', params) @test.attr(type=["negative"]) - @test.idempotent_id('86b2ab08-92d5-493d-acd2-85f0c848819e') + @decorators.idempotent_id('86b2ab08-92d5-493d-acd2-85f0c848819e') def test_list_all_container_objects_on_deleted_container(self): # Attempts to get a listing of all objects on a container # that was deleted. @@ -159,7 +160,7 @@ class ContainerNegativeTest(base.BaseObjectTest): container_name, params) @test.attr(type=["negative"]) - @test.idempotent_id('42da116e-1e8c-4c96-9e06-2f13884ed2b1') + @decorators.idempotent_id('42da116e-1e8c-4c96-9e06-2f13884ed2b1') def test_delete_non_empty_container(self): # create a container and an object within it # attempt to delete a container that isn't empty. diff --git a/tempest/api/object_storage/test_container_staticweb.py b/tempest/api/object_storage/test_container_staticweb.py index edc92718f..a28024850 100644 --- a/tempest/api/object_storage/test_container_staticweb.py +++ b/tempest/api/object_storage/test_container_staticweb.py @@ -15,6 +15,7 @@ from tempest.api.object_storage import base from tempest.common import custom_matchers from tempest.common.utils import data_utils +from tempest.lib import decorators from tempest.lib import exceptions as lib_exc from tempest import test @@ -43,7 +44,7 @@ class StaticWebTest(base.BaseObjectTest): cls.delete_containers() super(StaticWebTest, cls).resource_cleanup() - @test.idempotent_id('c1f055ab-621d-4a6a-831f-846fcb578b8b') + @decorators.idempotent_id('c1f055ab-621d-4a6a-831f-846fcb578b8b') @test.requires_ext(extension='staticweb', service='object') def test_web_index(self): headers = {'web-index': self.object_name} @@ -74,7 +75,7 @@ class StaticWebTest(base.BaseObjectTest): self.container_name) self.assertNotIn('x-container-meta-web-index', body) - @test.idempotent_id('941814cf-db9e-4b21-8112-2b6d0af10ee5') + @decorators.idempotent_id('941814cf-db9e-4b21-8112-2b6d0af10ee5') @test.requires_ext(extension='staticweb', service='object') def test_web_listing(self): headers = {'web-listings': 'true'} @@ -106,7 +107,7 @@ class StaticWebTest(base.BaseObjectTest): self.container_name) self.assertNotIn('x-container-meta-web-listings', body) - @test.idempotent_id('bc37ec94-43c8-4990-842e-0e5e02fc8926') + @decorators.idempotent_id('bc37ec94-43c8-4990-842e-0e5e02fc8926') @test.requires_ext(extension='staticweb', service='object') def test_web_listing_css(self): headers = {'web-listings': 'true', @@ -130,7 +131,7 @@ class StaticWebTest(base.BaseObjectTest): css = '' self.assertIn(css, body.decode()) - @test.idempotent_id('f18b4bef-212e-45e7-b3ca-59af3a465f82') + @decorators.idempotent_id('f18b4bef-212e-45e7-b3ca-59af3a465f82') @test.requires_ext(extension='staticweb', service='object') def test_web_error(self): headers = {'web-listings': 'true', diff --git a/tempest/api/object_storage/test_container_sync.py b/tempest/api/object_storage/test_container_sync.py index f134335c5..63fb93de8 100644 --- a/tempest/api/object_storage/test_container_sync.py +++ b/tempest/api/object_storage/test_container_sync.py @@ -131,7 +131,7 @@ class ContainerSyncTest(base.BaseObjectTest): @test.attr(type='slow') @decorators.skip_because(bug='1317133') - @test.idempotent_id('be008325-1bba-4925-b7dd-93b58f22ce9b') + @decorators.idempotent_id('be008325-1bba-4925-b7dd-93b58f22ce9b') @testtools.skipIf( not CONF.object_storage_feature_enabled.container_sync, 'Old-style container sync function is disabled') diff --git a/tempest/api/object_storage/test_container_sync_middleware.py b/tempest/api/object_storage/test_container_sync_middleware.py index 4491a8432..df738b3b6 100644 --- a/tempest/api/object_storage/test_container_sync_middleware.py +++ b/tempest/api/object_storage/test_container_sync_middleware.py @@ -14,6 +14,7 @@ from tempest.api.object_storage import test_container_sync from tempest import config +from tempest.lib import decorators from tempest import test CONF = config.CONF @@ -37,7 +38,7 @@ class ContainerSyncMiddlewareTest(test_container_sync.ContainerSyncTest): cls.cluster_name = CONF.object_storage.cluster_name @test.attr(type='slow') - @test.idempotent_id('ea4645a1-d147-4976-82f7-e5a7a3065f80') + @decorators.idempotent_id('ea4645a1-d147-4976-82f7-e5a7a3065f80') @test.requires_ext(extension='container_sync', service='object') def test_container_synchronization(self): def make_headers(cont, cont_client): diff --git a/tempest/api/object_storage/test_crossdomain.py b/tempest/api/object_storage/test_crossdomain.py index 18dc25447..c47aa93eb 100644 --- a/tempest/api/object_storage/test_crossdomain.py +++ b/tempest/api/object_storage/test_crossdomain.py @@ -14,6 +14,7 @@ from tempest.api.object_storage import base from tempest.common import custom_matchers +from tempest.lib import decorators from tempest import test @@ -36,7 +37,7 @@ class CrossdomainTest(base.BaseObjectTest): # Turning http://.../v1/foobar into http://.../ self.account_client.skip_path() - @test.idempotent_id('d1b8b031-b622-4010-82f9-ff78a9e915c7') + @decorators.idempotent_id('d1b8b031-b622-4010-82f9-ff78a9e915c7') @test.requires_ext(extension='crossdomain', service='object') def test_get_crossdomain_policy(self): resp, body = self.account_client.get("crossdomain.xml", {}) diff --git a/tempest/api/object_storage/test_healthcheck.py b/tempest/api/object_storage/test_healthcheck.py index 104253ab6..a186f9ee6 100644 --- a/tempest/api/object_storage/test_healthcheck.py +++ b/tempest/api/object_storage/test_healthcheck.py @@ -15,7 +15,7 @@ from tempest.api.object_storage import base from tempest.common import custom_matchers -from tempest import test +from tempest.lib import decorators class HealthcheckTest(base.BaseObjectTest): @@ -25,7 +25,7 @@ class HealthcheckTest(base.BaseObjectTest): # Turning http://.../v1/foobar into http://.../ self.account_client.skip_path() - @test.idempotent_id('db5723b1-f25c-49a9-bfeb-7b5640caf337') + @decorators.idempotent_id('db5723b1-f25c-49a9-bfeb-7b5640caf337') def test_get_healthcheck(self): resp, _ = self.account_client.get("healthcheck", {}) diff --git a/tempest/api/object_storage/test_object_expiry.py b/tempest/api/object_storage/test_object_expiry.py index 11acb3188..7768d239e 100644 --- a/tempest/api/object_storage/test_object_expiry.py +++ b/tempest/api/object_storage/test_object_expiry.py @@ -16,8 +16,8 @@ import time from tempest.api.object_storage import base +from tempest.lib import decorators from tempest.lib import exceptions as lib_exc -from tempest import test class ObjectExpiryTest(base.BaseObjectTest): @@ -81,14 +81,14 @@ class ObjectExpiryTest(base.BaseObjectTest): self.container_name, self.object_name) - @test.idempotent_id('fb024a42-37f3-4ba5-9684-4f40a7910b41') + @decorators.idempotent_id('fb024a42-37f3-4ba5-9684-4f40a7910b41') def test_get_object_after_expiry_time(self): # the 10s is important, because the get calls can take 3s each # some times metadata = {'X-Delete-After': '10'} self._test_object_expiry(metadata) - @test.idempotent_id('e592f18d-679c-48fe-9e36-4be5f47102c5') + @decorators.idempotent_id('e592f18d-679c-48fe-9e36-4be5f47102c5') def test_get_object_at_expiry_time(self): metadata = {'X-Delete-At': str(int(time.time()) + 10)} self._test_object_expiry(metadata) diff --git a/tempest/api/object_storage/test_object_formpost.py b/tempest/api/object_storage/test_object_formpost.py index 0a87a647e..2829ac7f2 100644 --- a/tempest/api/object_storage/test_object_formpost.py +++ b/tempest/api/object_storage/test_object_formpost.py @@ -20,6 +20,7 @@ from six.moves.urllib import parse as urlparse from tempest.api.object_storage import base from tempest.common.utils import data_utils +from tempest.lib import decorators from tempest import test @@ -104,7 +105,7 @@ class ObjectFormPostTest(base.BaseObjectTest): content_type = 'multipart/form-data; boundary=%s' % boundary return body, content_type - @test.idempotent_id('80fac02b-6e54-4f7b-be0d-a965b5cbef76') + @decorators.idempotent_id('80fac02b-6e54-4f7b-be0d-a965b5cbef76') @test.requires_ext(extension='formpost', service='object') def test_post_object_using_form(self): body, content_type = self.get_multipart_form() diff --git a/tempest/api/object_storage/test_object_formpost_negative.py b/tempest/api/object_storage/test_object_formpost_negative.py index f193111bc..2174940cf 100644 --- a/tempest/api/object_storage/test_object_formpost_negative.py +++ b/tempest/api/object_storage/test_object_formpost_negative.py @@ -20,6 +20,7 @@ from six.moves.urllib import parse as urlparse from tempest.api.object_storage import base from tempest.common.utils import data_utils +from tempest.lib import decorators from tempest.lib import exceptions as lib_exc from tempest import test @@ -105,7 +106,7 @@ class ObjectFormPostNegativeTest(base.BaseObjectTest): content_type = 'multipart/form-data; boundary=%s' % boundary return body, content_type - @test.idempotent_id('d3fb3c4d-e627-48ce-9379-a1631f21336d') + @decorators.idempotent_id('d3fb3c4d-e627-48ce-9379-a1631f21336d') @test.requires_ext(extension='formpost', service='object') @test.attr(type=['negative']) def test_post_object_using_form_expired(self): @@ -122,7 +123,7 @@ class ObjectFormPostNegativeTest(base.BaseObjectTest): url, body, headers=headers) self.assertIn('FormPost: Form Expired', str(exc)) - @test.idempotent_id('b277257f-113c-4499-b8d1-5fead79f7360') + @decorators.idempotent_id('b277257f-113c-4499-b8d1-5fead79f7360') @test.requires_ext(extension='formpost', service='object') def test_post_object_using_form_invalid_signature(self): self.key = "Wrong" diff --git a/tempest/api/object_storage/test_object_services.py b/tempest/api/object_storage/test_object_services.py index 7716bdb1e..58fd8229b 100644 --- a/tempest/api/object_storage/test_object_services.py +++ b/tempest/api/object_storage/test_object_services.py @@ -23,6 +23,7 @@ from tempest.api.object_storage import base from tempest.common import custom_matchers from tempest.common.utils import data_utils from tempest import config +from tempest.lib import decorators from tempest import test CONF = config.CONF @@ -75,7 +76,7 @@ class ObjectTest(base.BaseObjectTest): self.assertNotIn('x-object-meta-' + meta_key, resp) @test.attr(type='smoke') - @test.idempotent_id('5b4ce26f-3545-46c9-a2ba-5754358a4c62') + @decorators.idempotent_id('5b4ce26f-3545-46c9-a2ba-5754358a4c62') def test_create_object(self): # create object object_name = data_utils.rand_name(name='TestObject') @@ -94,7 +95,7 @@ class ObjectTest(base.BaseObjectTest): object_name) self.assertEqual(data, body) - @test.idempotent_id('5daebb1d-f0d5-4dc9-b541-69672eff00b0') + @decorators.idempotent_id('5daebb1d-f0d5-4dc9-b541-69672eff00b0') def test_create_object_with_content_disposition(self): # create object with content_disposition object_name = data_utils.rand_name(name='TestObject') @@ -116,7 +117,7 @@ class ObjectTest(base.BaseObjectTest): self.assertEqual(resp['content-disposition'], 'inline') self.assertEqual(body, data) - @test.idempotent_id('605f8317-f945-4bee-ae91-013f1da8f0a0') + @decorators.idempotent_id('605f8317-f945-4bee-ae91-013f1da8f0a0') def test_create_object_with_content_encoding(self): # create object with content_encoding object_name = data_utils.rand_name(name='TestObject') @@ -143,7 +144,7 @@ class ObjectTest(base.BaseObjectTest): metadata=metadata) self.assertEqual(body, data_before) - @test.idempotent_id('73820093-0503-40b1-a478-edf0e69c7d1f') + @decorators.idempotent_id('73820093-0503-40b1-a478-edf0e69c7d1f') def test_create_object_with_etag(self): # create object with etag object_name = data_utils.rand_name(name='TestObject') @@ -162,7 +163,7 @@ class ObjectTest(base.BaseObjectTest): object_name) self.assertEqual(data, body) - @test.idempotent_id('84dafe57-9666-4f6d-84c8-0814d37923b8') + @decorators.idempotent_id('84dafe57-9666-4f6d-84c8-0814d37923b8') def test_create_object_with_expect_continue(self): # create object with expect_continue @@ -179,7 +180,7 @@ class ObjectTest(base.BaseObjectTest): object_name) self.assertEqual(data, body) - @test.idempotent_id('4f84422a-e2f2-4403-b601-726a4220b54e') + @decorators.idempotent_id('4f84422a-e2f2-4403-b601-726a4220b54e') def test_create_object_with_transfer_encoding(self): # create object with transfer_encoding object_name = data_utils.rand_name(name='TestObject') @@ -196,7 +197,7 @@ class ObjectTest(base.BaseObjectTest): object_name) self.assertEqual(data, body) - @test.idempotent_id('0f3d62a6-47e3-4554-b0e5-1a5dc372d501') + @decorators.idempotent_id('0f3d62a6-47e3-4554-b0e5-1a5dc372d501') def test_create_object_with_x_fresh_metadata(self): # create object with x_fresh_metadata object_name_base = data_utils.rand_name(name='TestObject') @@ -222,7 +223,7 @@ class ObjectTest(base.BaseObjectTest): self.assertNotIn('x-object-meta-test-meta', resp) self.assertEqual(data, body) - @test.idempotent_id('1c7ed3e4-2099-406b-b843-5301d4811baf') + @decorators.idempotent_id('1c7ed3e4-2099-406b-b843-5301d4811baf') def test_create_object_with_x_object_meta(self): # create object with object_meta object_name = data_utils.rand_name(name='TestObject') @@ -241,7 +242,7 @@ class ObjectTest(base.BaseObjectTest): self.assertEqual(resp['x-object-meta-test-meta'], 'Meta') self.assertEqual(data, body) - @test.idempotent_id('e4183917-33db-4153-85cc-4dacbb938865') + @decorators.idempotent_id('e4183917-33db-4153-85cc-4dacbb938865') def test_create_object_with_x_object_metakey(self): # create object with the blank value of metadata object_name = data_utils.rand_name(name='TestObject') @@ -260,7 +261,7 @@ class ObjectTest(base.BaseObjectTest): self.assertEqual(resp['x-object-meta-test-meta'], '') self.assertEqual(data, body) - @test.idempotent_id('ce798afc-b278-45de-a5ce-2ea124b98b99') + @decorators.idempotent_id('ce798afc-b278-45de-a5ce-2ea124b98b99') def test_create_object_with_x_remove_object_meta(self): # create object with x_remove_object_meta object_name = data_utils.rand_name(name='TestObject') @@ -283,7 +284,7 @@ class ObjectTest(base.BaseObjectTest): self.assertNotIn('x-object-meta-test-meta', resp) self.assertEqual(data, body) - @test.idempotent_id('ad21e342-7916-4f9e-ab62-a1f885f2aaf9') + @decorators.idempotent_id('ad21e342-7916-4f9e-ab62-a1f885f2aaf9') def test_create_object_with_x_remove_object_metakey(self): # create object with the blank value of remove metadata object_name = data_utils.rand_name(name='TestObject') @@ -306,7 +307,7 @@ class ObjectTest(base.BaseObjectTest): self.assertNotIn('x-object-meta-test-meta', resp) self.assertEqual(data, body) - @test.idempotent_id('17738d45-03bd-4d45-9e0b-7b2f58f98687') + @decorators.idempotent_id('17738d45-03bd-4d45-9e0b-7b2f58f98687') def test_delete_object(self): # create object object_name = data_utils.rand_name(name='TestObject') @@ -319,7 +320,7 @@ class ObjectTest(base.BaseObjectTest): self.assertHeaders(resp, 'Object', 'DELETE') @test.attr(type='smoke') - @test.idempotent_id('7a94c25d-66e6-434c-9c38-97d4e2c29945') + @decorators.idempotent_id('7a94c25d-66e6-434c-9c38-97d4e2c29945') def test_update_object_metadata(self): # update object metadata object_name, _ = self.create_object(self.container_name) @@ -338,7 +339,7 @@ class ObjectTest(base.BaseObjectTest): self.assertIn('x-object-meta-test-meta', resp) self.assertEqual(resp['x-object-meta-test-meta'], 'Meta') - @test.idempotent_id('48650ed0-c189-4e1e-ad6b-1d4770c6e134') + @decorators.idempotent_id('48650ed0-c189-4e1e-ad6b-1d4770c6e134') def test_update_object_metadata_with_remove_metadata(self): # update object metadata with remove metadata object_name = data_utils.rand_name(name='TestObject') @@ -362,7 +363,7 @@ class ObjectTest(base.BaseObjectTest): object_name) self.assertNotIn('x-object-meta-test-meta1', resp) - @test.idempotent_id('f726174b-2ded-4708-bff7-729d12ce1f84') + @decorators.idempotent_id('f726174b-2ded-4708-bff7-729d12ce1f84') def test_update_object_metadata_with_create_and_remove_metadata(self): # creation and deletion of metadata with one request object_name = data_utils.rand_name(name='TestObject') @@ -389,7 +390,7 @@ class ObjectTest(base.BaseObjectTest): self.assertIn('x-object-meta-test-meta2', resp) self.assertEqual(resp['x-object-meta-test-meta2'], 'Meta2') - @test.idempotent_id('08854588-6449-4bb7-8cca-f2e1040f5e6f') + @decorators.idempotent_id('08854588-6449-4bb7-8cca-f2e1040f5e6f') def test_update_object_metadata_with_x_object_manifest(self): # update object metadata with x_object_manifest @@ -416,7 +417,7 @@ class ObjectTest(base.BaseObjectTest): self.assertIn('x-object-manifest', resp) self.assertNotEqual(len(resp['x-object-manifest']), 0) - @test.idempotent_id('0dbbe89c-6811-4d84-a2df-eca2bdd40c0e') + @decorators.idempotent_id('0dbbe89c-6811-4d84-a2df-eca2bdd40c0e') def test_update_object_metadata_with_x_object_metakey(self): # update object metadata with a blank value of metadata object_name, _ = self.create_object(self.container_name) @@ -435,7 +436,7 @@ class ObjectTest(base.BaseObjectTest): self.assertIn('x-object-meta-test-meta', resp) self.assertEqual(resp['x-object-meta-test-meta'], '') - @test.idempotent_id('9a88dca4-b684-425b-806f-306cd0e57e42') + @decorators.idempotent_id('9a88dca4-b684-425b-806f-306cd0e57e42') def test_update_object_metadata_with_x_remove_object_metakey(self): # update object metadata with a blank value of remove metadata object_name = data_utils.rand_name(name='TestObject') @@ -460,7 +461,7 @@ class ObjectTest(base.BaseObjectTest): self.assertNotIn('x-object-meta-test-meta', resp) @test.attr(type='smoke') - @test.idempotent_id('9a447cf6-de06-48de-8226-a8c6ed31caf2') + @decorators.idempotent_id('9a447cf6-de06-48de-8226-a8c6ed31caf2') def test_list_object_metadata(self): # get object metadata object_name = data_utils.rand_name(name='TestObject') @@ -478,7 +479,7 @@ class ObjectTest(base.BaseObjectTest): self.assertIn('x-object-meta-test-meta', resp) self.assertEqual(resp['x-object-meta-test-meta'], 'Meta') - @test.idempotent_id('170fb90e-f5c3-4b1f-ae1b-a18810821172') + @decorators.idempotent_id('170fb90e-f5c3-4b1f-ae1b-a18810821172') def test_list_no_object_metadata(self): # get empty list of object metadata object_name, _ = self.create_object(self.container_name) @@ -489,7 +490,7 @@ class ObjectTest(base.BaseObjectTest): self.assertHeaders(resp, 'Object', 'HEAD') self.assertNotIn('x-object-meta-', str(resp)) - @test.idempotent_id('23a3674c-d6de-46c3-86af-ff92bfc8a3da') + @decorators.idempotent_id('23a3674c-d6de-46c3-86af-ff92bfc8a3da') def test_list_object_metadata_with_x_object_manifest(self): # get object metadata with x_object_manifest @@ -530,7 +531,7 @@ class ObjectTest(base.BaseObjectTest): '%s/%s' % (self.container_name, object_name)) @test.attr(type='smoke') - @test.idempotent_id('02610ba7-86b7-4272-9ed8-aa8d417cb3cd') + @decorators.idempotent_id('02610ba7-86b7-4272-9ed8-aa8d417cb3cd') def test_get_object(self): # retrieve object's data (in response body) @@ -543,7 +544,7 @@ class ObjectTest(base.BaseObjectTest): self.assertEqual(body, data) - @test.idempotent_id('005f9bf6-e06d-41ec-968e-96c78e0b1d82') + @decorators.idempotent_id('005f9bf6-e06d-41ec-968e-96c78e0b1d82') def test_get_object_with_metadata(self): # get object with metadata object_name = data_utils.rand_name(name='TestObject') @@ -562,7 +563,7 @@ class ObjectTest(base.BaseObjectTest): self.assertEqual(resp['x-object-meta-test-meta'], 'Meta') self.assertEqual(body, data) - @test.idempotent_id('05a1890e-7db9-4a6c-90a8-ce998a2bddfa') + @decorators.idempotent_id('05a1890e-7db9-4a6c-90a8-ce998a2bddfa') def test_get_object_with_range(self): # get object with range object_name = data_utils.rand_name(name='TestObject') @@ -580,7 +581,7 @@ class ObjectTest(base.BaseObjectTest): self.assertHeaders(resp, 'Object', 'GET') self.assertEqual(body, data[rand_num - 3: rand_num]) - @test.idempotent_id('11b4515b-7ba7-4ca8-8838-357ded86fc10') + @decorators.idempotent_id('11b4515b-7ba7-4ca8-8838-357ded86fc10') def test_get_object_with_x_object_manifest(self): # get object with x_object_manifest @@ -623,7 +624,7 @@ class ObjectTest(base.BaseObjectTest): self.assertEqual(''.join(data_segments), body.decode()) - @test.idempotent_id('c05b4013-e4de-47af-be84-e598062b16fc') + @decorators.idempotent_id('c05b4013-e4de-47af-be84-e598062b16fc') def test_get_object_with_if_match(self): # get object with if_match object_name = data_utils.rand_name(name='TestObject') @@ -643,7 +644,7 @@ class ObjectTest(base.BaseObjectTest): self.assertHeaders(resp, 'Object', 'GET') self.assertEqual(body, data) - @test.idempotent_id('be133639-e5d2-4313-9b1f-2d59fc054a16') + @decorators.idempotent_id('be133639-e5d2-4313-9b1f-2d59fc054a16') def test_get_object_with_if_modified_since(self): # get object with if_modified_since object_name = data_utils.rand_name(name='TestObject') @@ -663,7 +664,7 @@ class ObjectTest(base.BaseObjectTest): self.assertHeaders(resp, 'Object', 'GET') self.assertEqual(body, data) - @test.idempotent_id('641500d5-1612-4042-a04d-01fc4528bc30') + @decorators.idempotent_id('641500d5-1612-4042-a04d-01fc4528bc30') def test_get_object_with_if_none_match(self): # get object with if_none_match object_name = data_utils.rand_name(name='TestObject') @@ -685,7 +686,7 @@ class ObjectTest(base.BaseObjectTest): self.assertHeaders(resp, 'Object', 'GET') self.assertEqual(body, data) - @test.idempotent_id('0aa1201c-10aa-467a-bee7-63cbdd463152') + @decorators.idempotent_id('0aa1201c-10aa-467a-bee7-63cbdd463152') def test_get_object_with_if_unmodified_since(self): # get object with if_unmodified_since object_name, data = self.create_object(self.container_name) @@ -700,7 +701,7 @@ class ObjectTest(base.BaseObjectTest): self.assertHeaders(resp, 'Object', 'GET') self.assertEqual(body, data) - @test.idempotent_id('94587078-475f-48f9-a40f-389c246e31cd') + @decorators.idempotent_id('94587078-475f-48f9-a40f-389c246e31cd') def test_get_object_with_x_newest(self): # get object with x_newest object_name, data = self.create_object(self.container_name) @@ -713,7 +714,7 @@ class ObjectTest(base.BaseObjectTest): self.assertHeaders(resp, 'Object', 'GET') self.assertEqual(body, data) - @test.idempotent_id('1a9ab572-1b66-4981-8c21-416e2a5e6011') + @decorators.idempotent_id('1a9ab572-1b66-4981-8c21-416e2a5e6011') def test_copy_object_in_same_container(self): # create source object src_object_name = data_utils.rand_name(name='SrcObject') @@ -737,7 +738,7 @@ class ObjectTest(base.BaseObjectTest): dst_object_name) self.assertEqual(body, src_data) - @test.idempotent_id('2248abba-415d-410b-9c30-22dff9cd6e67') + @decorators.idempotent_id('2248abba-415d-410b-9c30-22dff9cd6e67') def test_copy_object_to_itself(self): # change the content type of an existing object @@ -758,7 +759,7 @@ class ObjectTest(base.BaseObjectTest): object_name) self.assertEqual(resp['content-type'], metadata['content-type']) - @test.idempotent_id('06f90388-2d0e-40aa-934c-e9a8833e958a') + @decorators.idempotent_id('06f90388-2d0e-40aa-934c-e9a8833e958a') def test_copy_object_2d_way(self): # create source object src_object_name = data_utils.rand_name(name='SrcObject') @@ -782,7 +783,7 @@ class ObjectTest(base.BaseObjectTest): # check data self._check_copied_obj(dst_object_name, src_data) - @test.idempotent_id('aa467252-44f3-472a-b5ae-5b57c3c9c147') + @decorators.idempotent_id('aa467252-44f3-472a-b5ae-5b57c3c9c147') def test_copy_object_across_containers(self): # create a container to use as a source container src_container_name = data_utils.rand_name(name='TestSourceContainer') @@ -821,7 +822,7 @@ class ObjectTest(base.BaseObjectTest): self.assertIn(actual_meta_key, resp) self.assertEqual(resp[actual_meta_key], meta_value) - @test.idempotent_id('5a9e2cc6-85b6-46fc-916d-0cbb7a88e5fd') + @decorators.idempotent_id('5a9e2cc6-85b6-46fc-916d-0cbb7a88e5fd') def test_copy_object_with_x_fresh_metadata(self): # create source object metadata = {'x-object-meta-src': 'src_value'} @@ -842,7 +843,7 @@ class ObjectTest(base.BaseObjectTest): # check that destination object does NOT have any object-meta self._check_copied_obj(dst_object_name, data, not_in_meta=["src"]) - @test.idempotent_id('a28a8b99-e701-4d7e-9d84-3b66f121460b') + @decorators.idempotent_id('a28a8b99-e701-4d7e-9d84-3b66f121460b') def test_copy_object_with_x_object_metakey(self): # create source object metadata = {'x-object-meta-src': 'src_value'} @@ -865,7 +866,7 @@ class ObjectTest(base.BaseObjectTest): # check destination object self._check_copied_obj(dst_obj_name, data, in_meta=["test", "src"]) - @test.idempotent_id('edabedca-24c3-4322-9b70-d6d9f942a074') + @decorators.idempotent_id('edabedca-24c3-4322-9b70-d6d9f942a074') def test_copy_object_with_x_object_meta(self): # create source object metadata = {'x-object-meta-src': 'src_value'} @@ -888,7 +889,7 @@ class ObjectTest(base.BaseObjectTest): # check destination object self._check_copied_obj(dst_obj_name, data, in_meta=["test", "src"]) - @test.idempotent_id('e3e6a64a-9f50-4955-b987-6ce6767c97fb') + @decorators.idempotent_id('e3e6a64a-9f50-4955-b987-6ce6767c97fb') def test_object_upload_in_segments(self): # create object object_name = data_utils.rand_name(name='LObject') @@ -930,7 +931,7 @@ class ObjectTest(base.BaseObjectTest): self.container_name, object_name) self.assertEqual(''.join(data_segments), body.decode()) - @test.idempotent_id('50d01f12-526f-4360-9ac2-75dd508d7b68') + @decorators.idempotent_id('50d01f12-526f-4360-9ac2-75dd508d7b68') def test_get_object_if_different(self): # http://en.wikipedia.org/wiki/HTTP_ETag # Make a conditional request for an object using the If-None-Match @@ -984,7 +985,7 @@ class PublicObjectTest(base.BaseObjectTest): self.delete_containers([self.container_name]) super(PublicObjectTest, self).tearDown() - @test.idempotent_id('07c9cf95-c0d4-4b49-b9c8-0ef2c9b27193') + @decorators.idempotent_id('07c9cf95-c0d4-4b49-b9c8-0ef2c9b27193') def test_access_public_container_object_without_using_creds(self): # make container public-readable and access an object in it object # anonymously, without using credentials @@ -1021,7 +1022,7 @@ class PublicObjectTest(base.BaseObjectTest): self.assertEqual(body, data) - @test.idempotent_id('54e2a2fe-42dc-491b-8270-8e4217dd4cdc') + @decorators.idempotent_id('54e2a2fe-42dc-491b-8270-8e4217dd4cdc') def test_access_public_object_with_another_user_creds(self): # make container public-readable and access an object in it using # another user's credentials diff --git a/tempest/api/object_storage/test_object_slo.py b/tempest/api/object_storage/test_object_slo.py index f9c114868..8ed9bf8c7 100644 --- a/tempest/api/object_storage/test_object_slo.py +++ b/tempest/api/object_storage/test_object_slo.py @@ -20,6 +20,7 @@ from tempest.api.object_storage import base from tempest.common import custom_matchers from tempest.common.utils import data_utils from tempest.lib.common.utils import test_utils +from tempest.lib import decorators from tempest import test # Each segment, except for the final one, must be at least 1 megabyte @@ -105,7 +106,7 @@ class ObjectSloTest(base.BaseObjectTest): resp['etag'] = resp['etag'].strip('"') self.assertHeaders(resp, 'Object', method) - @test.idempotent_id('2c3f24a6-36e8-4711-9aa2-800ee1fc7b5b') + @decorators.idempotent_id('2c3f24a6-36e8-4711-9aa2-800ee1fc7b5b') @test.requires_ext(extension='slo', service='object') def test_upload_manifest(self): # create static large object from multipart manifest @@ -120,7 +121,7 @@ class ObjectSloTest(base.BaseObjectTest): self._assertHeadersSLO(resp, 'PUT') - @test.idempotent_id('e69ad766-e1aa-44a2-bdd2-bf62c09c1456') + @decorators.idempotent_id('e69ad766-e1aa-44a2-bdd2-bf62c09c1456') @test.requires_ext(extension='slo', service='object') def test_list_large_object_metadata(self): # list static large object metadata using multipart manifest @@ -132,7 +133,7 @@ class ObjectSloTest(base.BaseObjectTest): self._assertHeadersSLO(resp, 'HEAD') - @test.idempotent_id('49bc49bc-dd1b-4c0f-904e-d9f10b830ee8') + @decorators.idempotent_id('49bc49bc-dd1b-4c0f-904e-d9f10b830ee8') @test.requires_ext(extension='slo', service='object') def test_retrieve_large_object(self): # list static large object using multipart manifest @@ -147,7 +148,7 @@ class ObjectSloTest(base.BaseObjectTest): sum_data = self.content + self.content self.assertEqual(body, sum_data) - @test.idempotent_id('87b6dfa1-abe9-404d-8bf0-6c3751e6aa77') + @decorators.idempotent_id('87b6dfa1-abe9-404d-8bf0-6c3751e6aa77') @test.requires_ext(extension='slo', service='object') def test_delete_large_object(self): # delete static large object using multipart manifest diff --git a/tempest/api/object_storage/test_object_temp_url.py b/tempest/api/object_storage/test_object_temp_url.py index bd0d213e4..5e3c9f7de 100644 --- a/tempest/api/object_storage/test_object_temp_url.py +++ b/tempest/api/object_storage/test_object_temp_url.py @@ -20,6 +20,7 @@ from six.moves.urllib import parse as urlparse from tempest.api.object_storage import base from tempest.common.utils import data_utils +from tempest.lib import decorators from tempest import test @@ -85,7 +86,7 @@ class ObjectTempUrlTest(base.BaseObjectTest): return url - @test.idempotent_id('f91c96d4-1230-4bba-8eb9-84476d18d991') + @decorators.idempotent_id('f91c96d4-1230-4bba-8eb9-84476d18d991') @test.requires_ext(extension='tempurl', service='object') def test_get_object_using_temp_url(self): expires = self._get_expiry_date() @@ -104,7 +105,7 @@ class ObjectTempUrlTest(base.BaseObjectTest): resp, body = self.object_client.head(url) self.assertHeaders(resp, 'Object', 'HEAD') - @test.idempotent_id('671f9583-86bd-4128-a034-be282a68c5d8') + @decorators.idempotent_id('671f9583-86bd-4128-a034-be282a68c5d8') @test.requires_ext(extension='tempurl', service='object') def test_get_object_using_temp_url_key_2(self): key2 = 'Meta2-' @@ -128,7 +129,7 @@ class ObjectTempUrlTest(base.BaseObjectTest): resp, body = self.object_client.get(url) self.assertEqual(body, self.content) - @test.idempotent_id('9b08dade-3571-4152-8a4f-a4f2a873a735') + @decorators.idempotent_id('9b08dade-3571-4152-8a4f-a4f2a873a735') @test.requires_ext(extension='tempurl', service='object') def test_put_object_using_temp_url(self): new_data = data_utils.random_bytes(size=len(self.object_name)) @@ -154,7 +155,7 @@ class ObjectTempUrlTest(base.BaseObjectTest): _, body = self.object_client.get(url) self.assertEqual(body, new_data) - @test.idempotent_id('249a0111-5ad3-4534-86a7-1993d55f9185') + @decorators.idempotent_id('249a0111-5ad3-4534-86a7-1993d55f9185') @test.requires_ext(extension='tempurl', service='object') def test_head_object_using_temp_url(self): expires = self._get_expiry_date() @@ -168,7 +169,7 @@ class ObjectTempUrlTest(base.BaseObjectTest): resp, body = self.object_client.head(url) self.assertHeaders(resp, 'Object', 'HEAD') - @test.idempotent_id('9d9cfd90-708b-465d-802c-e4a8090b823d') + @decorators.idempotent_id('9d9cfd90-708b-465d-802c-e4a8090b823d') @test.requires_ext(extension='tempurl', service='object') def test_get_object_using_temp_url_with_inline_query_parameter(self): expires = self._get_expiry_date() diff --git a/tempest/api/object_storage/test_object_temp_url_negative.py b/tempest/api/object_storage/test_object_temp_url_negative.py index df7a7f693..d0e093566 100644 --- a/tempest/api/object_storage/test_object_temp_url_negative.py +++ b/tempest/api/object_storage/test_object_temp_url_negative.py @@ -20,6 +20,7 @@ from six.moves.urllib import parse as urlparse from tempest.api.object_storage import base from tempest.common.utils import data_utils +from tempest.lib import decorators from tempest.lib import exceptions as lib_exc from tempest import test @@ -91,7 +92,7 @@ class ObjectTempUrlNegativeTest(base.BaseObjectTest): return url @test.attr(type=['negative']) - @test.idempotent_id('5a583aca-c804-41ba-9d9a-e7be132bdf0b') + @decorators.idempotent_id('5a583aca-c804-41ba-9d9a-e7be132bdf0b') @test.requires_ext(extension='tempurl', service='object') def test_get_object_after_expiration_time(self): diff --git a/tempest/api/object_storage/test_object_version.py b/tempest/api/object_storage/test_object_version.py index 6d064a28f..1b12dacb2 100644 --- a/tempest/api/object_storage/test_object_version.py +++ b/tempest/api/object_storage/test_object_version.py @@ -18,7 +18,7 @@ import testtools from tempest.api.object_storage import base from tempest.common.utils import data_utils from tempest import config -from tempest import test +from tempest.lib import decorators CONF = config.CONF @@ -44,7 +44,7 @@ class ContainerTest(base.BaseObjectTest): header_value = resp.get('x-versions-location', 'Missing Header') self.assertEqual(header_value, versioned) - @test.idempotent_id('a151e158-dcbf-4a1f-a1e7-46cd65895a6f') + @decorators.idempotent_id('a151e158-dcbf-4a1f-a1e7-46cd65895a6f') @testtools.skipIf( not CONF.object_storage_feature_enabled.object_versioning, 'Object-versioning is disabled')