From 8434876e2d9ed377546973747cd8200c38153688 Mon Sep 17 00:00:00 2001 From: jh629g Date: Wed, 15 Jul 2020 17:08:04 -0500 Subject: [PATCH] Update Sync, update flavor delete tag update sync to sync from base class for alt_region tests, update flavor delete tag test to ensure tag exists before delete Change-Id: Iea42bc1566203a9959fe74a0ab99fb70f1360119 --- ranger_tempest_plugin/config.py | 10 +++++ ranger_tempest_plugin/tests/api/base.py | 6 ++- .../tests/api/test_customers.py | 40 ++++++++++++++----- .../tests/api/test_flavors.py | 26 ++++++++---- .../tests/api/test_images.py | 7 ++-- 5 files changed, 66 insertions(+), 23 deletions(-) diff --git a/ranger_tempest_plugin/config.py b/ranger_tempest_plugin/config.py index 8c33b92..3662884 100755 --- a/ranger_tempest_plugin/config.py +++ b/ranger_tempest_plugin/config.py @@ -16,6 +16,16 @@ from oslo_config import cfg +OSLO_CONCURRENCY_GROUP = cfg.OptGroup( + name="oslo_concurrency", + title="test concurrency configuration options" +) + +CONCURRENCY_GROUP = [ + cfg.StrOpt("lock_path", default='/tempest/lock_path', + help="Lock file location for external locks") +] + SERVICE_AVAILABLE_GROUP = cfg.OptGroup( name="service_available", title="Available OpenStack Services" diff --git a/ranger_tempest_plugin/tests/api/base.py b/ranger_tempest_plugin/tests/api/base.py index e34d297..6979c5c 100755 --- a/ranger_tempest_plugin/tests/api/base.py +++ b/ranger_tempest_plugin/tests/api/base.py @@ -13,7 +13,8 @@ # License for the specific language governing permissions and limitations # under the License. -from oslo_concurrency import lockutils +import oslo_concurrency + from oslo_log import log as logging from ranger_tempest_plugin import clients from tempest import config @@ -23,7 +24,8 @@ CONF = config.CONF LOG = logging.getLogger(__name__) PREFIX = 'alt_region' -SYNC = lockutils.synchronized_with_prefix(PREFIX) +oslo_concurrency.lockutils.set_defaults(CONF.oslo_concurrency.lock_path) +SYNC = oslo_concurrency.lockutils.synchronized_with_prefix(PREFIX) class BaseOrmTest(test.BaseTestCase): diff --git a/ranger_tempest_plugin/tests/api/test_customers.py b/ranger_tempest_plugin/tests/api/test_customers.py index f18b01b..7f225dd 100755 --- a/ranger_tempest_plugin/tests/api/test_customers.py +++ b/ranger_tempest_plugin/tests/api/test_customers.py @@ -17,7 +17,9 @@ import copy import random import uuid +from oslo_concurrency import lockutils from ranger_tempest_plugin import data_utils as orm_data_utils +from ranger_tempest_plugin.tests.api import base from ranger_tempest_plugin.tests.api import cms_base from tempest import config @@ -26,6 +28,8 @@ from tempest.lib import exceptions import testtools CONF = config.CONF +PREFIX = 'customer' +SYNC = lockutils.synchronized_with_prefix(PREFIX) class TestTempestCms(cms_base.CmsBaseOrmTest): @@ -62,6 +66,7 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): return group_id + @SYNC('customer') @decorators.idempotent_id('6072c438-1e45-4c0b-97a6-e5127bd33d89') def test_get_customer(self): """Execute 'get_customer' using the following options @@ -76,6 +81,7 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): _, body = self.client.get_customer(identifier) self.assertIn(self.setup_customer_id, body['uuid']) + @SYNC('customer') @decorators.idempotent_id('6072c438-1e45-4c0b-97a6-e5127bd33d90') def test_list_customers_with_filters(self): """This function executes 'list customer' with all available filters @@ -262,6 +268,7 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): self.assertIn(new_region_user_id, [x['id'] for x in customer["regions"][0]['users']]) + @SYNC('customer') @decorators.idempotent_id('f1444965-c711-438d-ab86-a2412acbe8e0') def test_replace_metadata(self): metadata = {'metadata': {'replace_key': 'replace_value'}} @@ -282,6 +289,7 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): self.assertIn(self.setup_customer_id, [x['id'] for x in body['customers']]) + @SYNC('customer') @decorators.idempotent_id('19a6bbe2-92b9-46be-95b7-aa0d9f247d88') def test_add_regions(self): region = self._get_region_params() @@ -319,11 +327,12 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): _, body = self.client.get_customer(test_cust_name) self.assertIn(test_customer_id, body['uuid']) - @cms_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('c2f4e842-c0c3-4747-9b10-e86c25fe8283') def test_create_customer_with_region_group(self): + self._update_region(CONF.ranger.alt_region) # create region group group_id = self._create_region_group() @@ -342,11 +351,12 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): self.assertEqual(body['status'], 'Success') self.assertEqual(len(body['regions']), 2) - @cms_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('5e6f1b6b-bff1-4d30-ba97-4ff66ad47ba9') def test_create_customer_with_two_regions(self): + self._update_region(CONF.ranger.alt_region) post_body = self._get_bare_customer_params() post_body['description'] = 'test create customer multi regions' @@ -363,7 +373,7 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): self.assertEqual(body['status'], 'Success') self.assertEqual(len(body['regions']), 2) - @cms_base.base.SYNC('customer') + @SYNC('customer') @decorators.idempotent_id('43785f87-27d5-408d-997f-de602caeb698') def test_replace_customer(self): customer = self._get_bare_customer_params() @@ -398,7 +408,7 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): self.assertRaises(exceptions.NotFound, self.client.get_customer, test_customer_id) - @cms_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('b8493b3f-e64d-448e-a965-b0eeff415981') @@ -411,6 +421,7 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): cust_body['regions'][0]['name'] = CONF.ranger.alt_region self.assertRaises(exceptions.BadRequest, self.client.create_customer, **cust_body) + self._update_region(CONF.ranger.alt_region) @decorators.idempotent_id('1aa52c36-4b1e-459e-9633-12b6cbd53ae7') def test_customer_while_region_building(self): @@ -452,12 +463,14 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): self.assertEqual(body['custId'], customer_id) self._update_region(CONF.identity.region) + @SYNC('customer') @decorators.idempotent_id('49e08cd0-4d33-4ec4-95a0-500974b3a9bf') def test_list_customer_additional_fields(self): _, customer = self.client.get_customer(self.setup_customer_id) self.assertIn('status', customer) self.assertIn('regions', customer) + @SYNC('customer') @decorators.idempotent_id('edf3a30a-fca8-49d0-acc6-c3190c6feb43') def test_disable_customer(self): self.client.enable_customer(self.setup_customer_id, False) @@ -474,6 +487,7 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): _, customer = self.client.get_customer(test_customer_id) self.assertEqual(customer['uuid'], uuid_) + @SYNC('customer') @decorators.idempotent_id('8bd31cee-825a-4542-aa1d-bf2d79dbac62') def test_replace_customer_default_and_region_quota(self): customer = self._get_bare_customer_params() @@ -496,19 +510,25 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): self.assertEqual(len(body['regions'][0]['quotas']), 0) self.assertDictEqual(quota, body['defaultQuotas'][0]) + @SYNC('customer') @decorators.idempotent_id('710ee9a9-7629-4166-941c-75dbf1c10c9d') def test_update_region_quota(self): + post_body = self._get_customer_params() + uuid_ = uuid.uuid4().hex + post_body['uuid'] = uuid_ + test_customer_id = self._create_customer(post_body) + _, test_customer = self.client.get_customer(test_customer_id) # Get original region quota and change a value - region_quotas = self.setup_customer['regions'][0]['quotas'] + region_quotas = test_customer['regions'][0]['quotas'] region = {} region['type'] = 'single' region['name'] = CONF.identity.region region['quotas'] = copy.deepcopy(region_quotas) - region['quotas'][0]['compute'][0]['ram'] = '30' + region['quotas'][0]['compute'][0]['ram'] = '10' - _, body = self.client.update_region(self.setup_customer_id, *[region]) - self._wait_for_status(self.setup_customer_id, 'Success') - _, body = self.client.get_customer(self.setup_customer_id) + _, body = self.client.update_region(test_customer_id, *[region]) + self._wait_for_status(test_customer_id, 'Success') + _, body = self.client.get_customer(test_customer_id) self.assertDictEqual(region['quotas'][0], body['regions'][0]['quotas'][0]) @@ -517,7 +537,7 @@ class TestTempestCms(cms_base.CmsBaseOrmTest): self.assertDictEqual(self.setup_customer['defaultQuotas'][0], body['defaultQuotas'][0]) - @cms_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('4bd683c6-1e1c-4f5d-9f42-6af8ac0b2183') diff --git a/ranger_tempest_plugin/tests/api/test_flavors.py b/ranger_tempest_plugin/tests/api/test_flavors.py index fc2fad0..0dbf942 100755 --- a/ranger_tempest_plugin/tests/api/test_flavors.py +++ b/ranger_tempest_plugin/tests/api/test_flavors.py @@ -18,6 +18,7 @@ import time from oslo_concurrency import lockutils from ranger_tempest_plugin import data_utils as orm_data_utils +from ranger_tempest_plugin.tests.api import base from ranger_tempest_plugin.tests.api import fms_base from tempest import config from tempest.lib import decorators @@ -306,16 +307,25 @@ class TestTempestFms(fms_base.FmsBaseOrmTest): @SYNC('flavor') @decorators.idempotent_id('e0a0eca6-e120-45ab-a1a4-f5b95fdf97f1') def test_delete_flavor_tag(self): - # test delete_tag command - delete a tag from tags body - delete_tag_key = 'a' + delete_tag_key = 'aa' + _, tag_body = self.client.get_tags(self.flavor['id']) + tag_present = tag_body.get("tags").get(delete_tag_key, None) + if tag_present is None: + self._exec_tags_function(self.flavor['id'], + {'tags': {'aa': 'bb'}}, + 'add', + None) + + # delete the tag key self._exec_tags_function(self.flavor['id'], None, 'delete', delete_tag_key) + # do get_tag and tries to retrieve the deleted tag _, tag_body = self.client.get_tags(self.flavor['id']) tag_present = tag_body.get("tags").get(delete_tag_key, None) self.assertIsNone(tag_present) - # restore tags + # restore tag self._exec_tags_function(self.flavor['id'], {'tags': {'aa': 'bb'}}, 'add', @@ -339,7 +349,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest): # restore deleted tags self._exec_tags_function(self.flavor['id'], restore_tags, 'add', None) - @fms_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('ec74d68f-b42a-41a8-9685-ff5eca25ea0c') @@ -539,7 +549,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest): self.assertEqual(flavor_details["status"], "Success") self.assertEqual(flavor_details["disk"], disk) - @fms_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('997ca03c-4176-4632-a0c9-7e943b03306c') @@ -559,7 +569,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest): assert self.region or self.alt_region in \ flavor['regions'][1]['name'] - @fms_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('ea2a618e-bd53-460b-bde5-01ea20b417c9') @@ -574,7 +584,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest): self.assertEqual(flavor_details['status'], 'Success') self.assertEqual(len(flavor['regions']), 2) - @fms_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('06c81b29-85b6-4edf-ab89-3877c49e23bc') @@ -601,7 +611,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest): self.assertEqual(flavor_details['status'], 'Success') self.assertEqual(flavor['id'], post_body['id']) - @fms_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('37f1909f-3ba2-403c-ba0c-0a11b869d6a1') diff --git a/ranger_tempest_plugin/tests/api/test_images.py b/ranger_tempest_plugin/tests/api/test_images.py index 96da1be..a44b3d1 100644 --- a/ranger_tempest_plugin/tests/api/test_images.py +++ b/ranger_tempest_plugin/tests/api/test_images.py @@ -16,6 +16,7 @@ from oslo_concurrency import lockutils from ranger_tempest_plugin import data_utils as orm_data_utils +from ranger_tempest_plugin.tests.api import base from ranger_tempest_plugin.tests.api import ims_base from tempest import config @@ -296,7 +297,7 @@ class TestTempestIms(ims_base.ImsBaseOrmTest): self.assertRaises(exceptions.NotFound, self.client.get_image, image['id']) - @ims_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('e642fa39-1b69-4d17-8bd1-aee90ea042a3') @@ -472,7 +473,7 @@ class TestTempestIms(ims_base.ImsBaseOrmTest): image = body["image"] self.assertEqual(image['id'], post_body['id']) - @ims_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('7ae78584-55af-45cb-a4a2-b28cc679699e') @@ -502,7 +503,7 @@ class TestTempestIms(ims_base.ImsBaseOrmTest): self.assertEqual(image['status'], 'Success') self.assertEqual(len(image['regions']), 2) - @ims_base.base.SYNC('alt_region', external=True) + @base.SYNC('alt_region', external=True) @testtools.skipUnless(CONF.ranger.alt_region_available, 'Alt region not provided, skipping this test') @decorators.idempotent_id('73c97918-2081-4f42-9c1e-6fd7a9fb8735')