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