summaryrefslogtreecommitdiff
path: root/trove/tests/scenario/runners/test_runners.py
diff options
context:
space:
mode:
Diffstat (limited to 'trove/tests/scenario/runners/test_runners.py')
-rw-r--r--trove/tests/scenario/runners/test_runners.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/trove/tests/scenario/runners/test_runners.py b/trove/tests/scenario/runners/test_runners.py
index 60326773..d1dacd0c 100644
--- a/trove/tests/scenario/runners/test_runners.py
+++ b/trove/tests/scenario/runners/test_runners.py
@@ -325,7 +325,7 @@ class TestRunner(object, metaclass=LogOnFail):
instance_info = InstanceTestInfo()
report = CONFIG.get_report()
- def __init__(self, sleep_time=10, timeout=1800):
+ def __init__(self, sleep_time=10, timeout=900):
self.def_sleep_time = sleep_time
self.def_timeout = timeout
@@ -604,6 +604,19 @@ class TestRunner(object, metaclass=LogOnFail):
self.assert_equal(expected_http_code, client.last_http_code,
"Unexpected client status code")
+ def assert_instance_operating_status(self, instance_id, expected_status):
+ self.report.log(f"Waiting for expected_status ({expected_status}) "
+ f"for instances: {instance_id}")
+
+ def wait_for_operating_status():
+ instance = self.get_instance(instance_id, self.admin_client)
+ if instance.operating_status == expected_status:
+ return True
+ return False
+
+ poll_until(wait_for_operating_status, sleep_time=self.def_sleep_time,
+ time_out=self.def_timeout)
+
def assert_all_instance_states(self, instance_ids, expected_states,
fast_fail_status=None,
require_all_states=False):
@@ -647,6 +660,15 @@ class TestRunner(object, metaclass=LogOnFail):
self.report.log("Waiting for states (%s) for instance: %s" %
(expected_states, instance_id))
+ # Replace HEALTHY with ACTIVE. This is needed after operating_status
+ # is introduced in Trove.
+ wait_operating_status = False
+ if 'HEALTHY' in expected_states:
+ wait_operating_status = True
+ expected_states.remove('HEALTHY')
+ if 'ACTIVE' not in expected_states:
+ expected_states.append('ACTIVE')
+
if fast_fail_status is None:
fast_fail_status = ['ERROR', 'FAILED']
found = False
@@ -677,6 +699,9 @@ class TestRunner(object, metaclass=LogOnFail):
"Instance state was not '%s', moving to the next expected "
"state." % status)
+ if found and wait_operating_status:
+ self.assert_instance_operating_status(instance_id, 'HEALTHY')
+
return found
def _time_since(self, start_time):
@@ -992,7 +1017,7 @@ class CheckInstance(AttrCheck):
if 'datastore' not in self.instance:
self.fail("'datastore' not found in instance.")
else:
- allowed_attrs = ['type', 'version']
+ allowed_attrs = ['type', 'version', 'version_number']
self.contains_allowed_attrs(
self.instance['datastore'], allowed_attrs,
msg="datastore")