From 3ad54cf0829832579f7bdb2bb742ef2ff2766994 Mon Sep 17 00:00:00 2001
From: jh629g <jh629g@att.com>
Date: Tue, 30 Jun 2020 11:06:08 -0500
Subject: [PATCH] Adjusted FMS tests for fringe failures

Adjusted delete tag test to ensure tags
are correct before test begins. Updated
test build flavor with two regions to
account for an unordered list in results.
Adjusted build interval to a longer period
to allow for slow networks.

Change-Id: I188953a0aab18e0cbd797907bc8d98ee6759e142
---
 ranger_tempest_plugin/tests/api/fms_base.py   | 22 ++++++++++------
 .../tests/api/test_flavors.py                 | 26 ++++++++++++-------
 2 files changed, 31 insertions(+), 17 deletions(-)

diff --git a/ranger_tempest_plugin/tests/api/fms_base.py b/ranger_tempest_plugin/tests/api/fms_base.py
index 3ca9b62..95746be 100755
--- a/ranger_tempest_plugin/tests/api/fms_base.py
+++ b/ranger_tempest_plugin/tests/api/fms_base.py
@@ -179,15 +179,21 @@ class FmsBaseOrmTest(base.BaseOrmTest):
             cls, flavor_id, rname):
         cls.client.delete_region_from_flavor(flavor_id, rname)
 
-        time.sleep(10)
-
+        delete_loop_counter = 0
         _, body = cls.client.get_flavor(flavor_id)
-        for regions_on_flavor in body['flavor']['regions']:
-            if regions_on_flavor['name'] == rname:
-                message = \
-                    'Region {} failed to get deleted from flavor {}' \
-                    .format(rname, flavor_id)
-                raise exceptions.TempestException(message)
+
+        while delete_loop_counter <= 5:
+            delete_loop_counter += 1
+            for regions_on_flavor in body['flavor']['regions']:
+                if regions_on_flavor['name'] == rname:
+                    time.sleep(cls.build_interval)
+                    _, body = cls.client.get_flavor(flavor_id)
+
+        if delete_loop_counter >= 5:
+            message = \
+                'Region {} failed to get deleted from flavor {}' \
+                .format(rname, flavor_id)
+            raise exceptions.TempestException(message)
 
     @classmethod
     def _wait_for_flavor_deletion_on_dcp(cls, flavor_id):
diff --git a/ranger_tempest_plugin/tests/api/test_flavors.py b/ranger_tempest_plugin/tests/api/test_flavors.py
index c1ad26e..1fd7ae1 100755
--- a/ranger_tempest_plugin/tests/api/test_flavors.py
+++ b/ranger_tempest_plugin/tests/api/test_flavors.py
@@ -34,7 +34,7 @@ SYNC = lockutils.synchronized_with_prefix(PREFIX)
 class TestTempestFms(fms_base.FmsBaseOrmTest):
 
     region = CONF.identity.region
-    region_alt = CONF.ranger.alt_region
+    alt_region = CONF.ranger.alt_region
 
     @classmethod
     def setup_clients(cls):
@@ -115,7 +115,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
     def _create_region_group(self):
         _, body = self.rms_client.create_region_group(
             **orm_data_utils.rand_region_group([self.region,
-                                                self.region_alt])
+                                                self.alt_region])
         )
         group_id = body['group']['id']
         self.addCleanup(
@@ -339,6 +339,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
         # restore deleted tags
         self._exec_tags_function(self.flavor['id'], restore_tags, 'add', None)
 
+    @SYNC('alt_region')
     @testtools.skipUnless(CONF.ranger.alt_region_available,
                           'Alt region not provided, skipping this test')
     @decorators.idempotent_id('ec74d68f-b42a-41a8-9685-ff5eca25ea0c')
@@ -538,6 +539,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
         self.assertEqual(flavor_details["status"], "Success")
         self.assertEqual(flavor_details["disk"], disk)
 
+    @SYNC('alt_region')
     @testtools.skipUnless(CONF.ranger.alt_region_available,
                           'Alt region not provided, skipping this test')
     @decorators.idempotent_id('997ca03c-4176-4632-a0c9-7e943b03306c')
@@ -552,15 +554,19 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
 
         flavor_details = self._get_flavor_details(test_flavor_id)
         self.assertEqual(flavor_details['status'], 'Success')
-        self.assertEqual(flavor['regions'][0]['name'], CONF.identity.region)
+        assert self.region or self.alt_region in \
+            flavor['regions'][0]['name']
+        assert self.region or self.alt_region in \
+            flavor['regions'][1]['name']
 
+    @SYNC('alt_region')
     @testtools.skipUnless(CONF.ranger.alt_region_available,
                           'Alt region not provided, skipping this test')
     @decorators.idempotent_id('ea2a618e-bd53-460b-bde5-01ea20b417c9')
     def test_create_flavor_with_two_regions(self):
         post_body = self._get_flavor_params()
         post_body['regions'].append(
-            {'name': self.region_alt}
+            {'name': self.alt_region}
         )
         flavor = self._data_setup(post_body)
         test_flavor_id = flavor['id']
@@ -568,6 +574,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
         self.assertEqual(flavor_details['status'], 'Success')
         self.assertEqual(len(flavor['regions']), 2)
 
+    @SYNC('alt_region')
     @testtools.skipUnless(CONF.ranger.alt_region_available,
                           'Alt region not provided, skipping this test')
     @decorators.idempotent_id('06c81b29-85b6-4edf-ab89-3877c49e23bc')
@@ -583,8 +590,8 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
         flavor = self._data_setup(post_body)
         flavor_details = self._get_flavor_details(flavor['id'])
         self.assertEqual(flavor_details['status'], 'Success')
-        assert self.region_alt or self.region in flavor['regions'][0]['name']
-        assert self.region_alt or self.region in flavor['regions'][1]['name']
+        assert self.alt_region or self.region in flavor['regions'][0]['name']
+        assert self.alt_region or self.region in flavor['regions'][1]['name']
 
     @decorators.idempotent_id('997ca03c-4176-4632-a0c9-7e943b03306d')
     def test_create_flavor_with_uuid(self):
@@ -594,17 +601,18 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
         self.assertEqual(flavor_details['status'], 'Success')
         self.assertEqual(flavor['id'], post_body['id'])
 
+    @SYNC('alt_region')
     @decorators.idempotent_id('37f1909f-3ba2-403c-ba0c-0a11b869d6a1')
     def test_flavor_while_region_down(self):
         # update region to status down
-        self._update_region(self.region, status={'status': 'down'})
+        self._update_region(self.alt_region, status={'status': 'down'})
 
         # create flavor within that newly created region
         post_body = self._get_flavor_params(set_region=False)
-        post_body['regions'] = [{'name': self.region}]
+        post_body['regions'] = [{'name': self.alt_region}]
         self.assertRaises(exceptions.BadRequest,
                           self.client.create_flavor, **post_body)
-        self._update_region(self.region)
+        self._update_region(self.alt_region)
 
     @decorators.idempotent_id('1c6a24d3-345e-46d4-aaa0-127b7fc8a42d')
     def test_flavor_while_region_building(self):