Add wait_for_zones_loaded fixture

The wait_for_zones_loaded fixture waits for the "all zones loaded"
message in the named log file before the test function can proceed.

(cherry picked from commit 662a88055c)
This commit is contained in:
Michał Kępień 2023-12-19 15:58:36 +01:00 committed by Michal Nowak
parent b09835a5d1
commit 24fd30f7eb
No known key found for this signature in database
2 changed files with 23 additions and 0 deletions

View file

@ -357,6 +357,27 @@ def mlogger(system_test_name):
return logging.getLogger(system_test_name)
def _get_marker(node, marker):
try:
# pytest >= 4.x
return node.get_closest_marker(marker)
except AttributeError:
# pytest < 4.x
return node.get_marker(marker)
@pytest.fixture(autouse=True)
def wait_for_zones_loaded(request, servers):
"""Wait for all zones to be loaded by specified named instances."""
instances = _get_marker(request.node, "requires_zones_loaded")
if not instances:
return
for instance in instances.args:
with servers[instance].watch_log_from_start() as watcher:
watcher.wait_for_line("all zones loaded")
@pytest.fixture
def logger(request, system_test_name):
"""Logging facility specific to a particular test."""

View file

@ -18,3 +18,5 @@ log_level = INFO
python_files = tests_*.py
junit_logging = log
junit_log_passing_tests = 0
markers =
requires_zones_loaded: ensures the test does not start until the specified named instances load all configured zones