From 7241704336e4f2e6343e1219820a662ab7068260 Mon Sep 17 00:00:00 2001 From: jh629g Date: Wed, 3 Jun 2020 15:30:09 -0500 Subject: [PATCH] Minor fixes for Ranger flavor tests Fixed test that gave false positives and false negatives, added skipcheck to that test. Updated config value to boolean so that test skipchecks in flavor tests worked as expected. Added function for checking the status of individual regions on a flavor. Change-Id: I331e12a757b8eb1182cb88a19a8fd9607358143e --- ranger_tempest_plugin/config.py | 6 +-- ranger_tempest_plugin/tests/api/base.py | 1 - .../tests/api/test_flavors.py | 47 +++++++++++++++---- 3 files changed, 41 insertions(+), 13 deletions(-) diff --git a/ranger_tempest_plugin/config.py b/ranger_tempest_plugin/config.py index 5f09487..8c33b92 100755 --- a/ranger_tempest_plugin/config.py +++ b/ranger_tempest_plugin/config.py @@ -55,9 +55,9 @@ ORM_GROUP_OPTIONS = [ cfg.StrOpt("catalog_type", default='ranger', help="ranger catalog type"), - cfg.StrOpt("alt_region_available", - default=False, - help="Alt region for ranger tempest testing"), + cfg.BoolOpt("alt_region_available", + default=False, + help="Alt region for ranger tempest testing"), cfg.StrOpt("alt_region", default='', help="Provide alternate region for creating" diff --git a/ranger_tempest_plugin/tests/api/base.py b/ranger_tempest_plugin/tests/api/base.py index e94dd11..317962a 100755 --- a/ranger_tempest_plugin/tests/api/base.py +++ b/ranger_tempest_plugin/tests/api/base.py @@ -44,7 +44,6 @@ class BaseOrmTest(test.BaseTestCase): # Get regions in ranger deployment _, regions_list = cls.region_client.list_regions() regions = [x for x in regions_list['regions']] - for region in regions: if region['id'] is CONF.identity.region or \ (region['id'] is CONF.ranger.alt_region and diff --git a/ranger_tempest_plugin/tests/api/test_flavors.py b/ranger_tempest_plugin/tests/api/test_flavors.py index e5d3eb1..f2b55bf 100755 --- a/ranger_tempest_plugin/tests/api/test_flavors.py +++ b/ranger_tempest_plugin/tests/api/test_flavors.py @@ -150,6 +150,33 @@ class TestTempestFms(fms_base.FmsBaseOrmTest): self._wait_for_flavor_status_on_dcp(flavor_id, 'Success') + def _wait_for_flavor_region_status(self, flavor, region_name): + region_index = 0 + start = int(time.time()) + for regions in flavor['regions']: + if regions['name'] == region_name: + region_status = regions['status'] + while region_status != 'Success': + time.sleep(self.build_interval) + region_status = \ + self.fms_client.get_flavor(flavor['id']) + region_status = \ + region_status['regions'][region_index]['status'] + if region_status == 'Error': + message = ('Flavor region %s failed to' + ' reach success status' + ' and is in ERROR status on orm' % + region_name) + raise exceptions.TempestException(message) + if int(time.time()) - start >= self.build_timeout: + message = ('Flavor %s region %s failed to reach' + ' success status within the required' + ' time (%s s) on orm and is in %s status.' + % (flavor['id'], region_name, + self.build_timeout, + region_status)) + region_index += 1 + def _restore_default_tags(self, flavor_id): tag_body = {"tags": self.tags} _, body = self.client.update_tags(flavor_id, tag_body) @@ -303,31 +330,33 @@ class TestTempestFms(fms_base.FmsBaseOrmTest): # restore deleted tags self._exec_tags_function(self.flavor['id'], restore_tags, 'add', None) + @testtools.skipUnless(CONF.ranger.alt_region_available, + 'Alt region not provided, skipping this test') @decorators.idempotent_id('ec74d68f-b42a-41a8-9685-ff5eca25ea0c') def test_add_delete_flavor_region(self): # setup data to add region - region_id = CONF.identity.region - post_body = self._get_flavor_params(set_region=False) + post_body = self._get_flavor_params() flavor = self._data_setup(post_body) test_flavor_id = flavor['id'] - post_region_body = '{"regions": [{"name": "%s"}]}' % (region_id) + post_region_body = \ + '{"regions": [{"name": "%s"}]}' % (CONF.ranger.alt_region) post_region_body = json.loads(post_region_body) _, body = self.client.add_flavor_regions(test_flavor_id, post_region_body) self._wait_for_flavor_status_on_dcp(test_flavor_id, 'Success') _, body = self.client.get_flavor(test_flavor_id) - self.assertEqual(body["flavor"]["regions"][0]["name"], + self._wait_for_flavor_region_status(flavor, CONF.ranger.alt_region) + self.assertEqual(body["flavor"]["regions"][1]["name"], post_region_body["regions"][0]["name"]) # remove added region and then check to confirm flavor status _, body = self.client.delete_flavor_region(test_flavor_id, - region_id) - # flavor status must show 'no regions' when it has no region assigned - self._wait_for_flavor_status_on_dcp(test_flavor_id, 'no regions') - # flavor region is now empty after the lone region was removed + CONF.ranger.alt_region) + self._wait_for_flavor_status_on_dcp(test_flavor_id, 'Success') _, body = self.client.get_flavor(test_flavor_id) - self.assertTrue(len(body["flavor"]["regions"]) == 0) + + self.assertTrue(len(body["flavor"]["regions"]) == 1) @SYNC('flavor') @decorators.idempotent_id('71404409-5d95-472c-8dac-b49a1c0c4b37')