From e4eb5745663cecb5ab981a60c284d10322b99528 Mon Sep 17 00:00:00 2001 From: Mia Altieri Date: Wed, 30 Aug 2023 15:01:27 +0000 Subject: [PATCH] PR comments --- tests/integration/ha_tests/helpers.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tests/integration/ha_tests/helpers.py b/tests/integration/ha_tests/helpers.py index 2a8330367..8018568e3 100644 --- a/tests/integration/ha_tests/helpers.py +++ b/tests/integration/ha_tests/helpers.py @@ -736,7 +736,7 @@ async def update_pebble_plans(ops_test: OpsTest, override: Dict[str, str]) -> No async def reused_storage(ops_test: OpsTest, reused_unit: Unit, removal_time: datetime) -> None: - """Cats the k8s logs, looking for messages related to startup state reusing the storage. + """Verifies storage is reused by the mongo daemon. MongoDB startup message indicates storage reuse: If member transitions to STARTUP2 from STARTUP then it is syncing/getting data from @@ -752,25 +752,27 @@ async def reused_storage(ops_test: OpsTest, reused_unit: Unit, removal_time: dat "cat /var/lib/mongodb/mongodb.log", ] - return_code, start_states, _ = await ops_test.juju(*cat_cmd) + return_code, logs, _ = await ops_test.juju(*cat_cmd) assert ( return_code == 0 ), f"Failed catting mongodb logs, unit={reused_unit.name}, container={MONGODB_CONTAINER_NAME}" - for line in start_states.split("\n"): - if not len(line): - continue + filtered_logs = filter(filter_logs.split("\n"), logs) - item = json.loads(line) - - re_use_time = convert_time(item["t"]["$date"]) - if '"newState":"STARTUP2","oldState":"REMOVED"' in line and re_use_time > removal_time: + for log in filtered_logs: + item = json.loads(log) + reuse_time = convert_time(item["t"]["$date"]) + if reuse_time > removal_time: return True return False +def filter_logs(log): + return True if '"newState":"STARTUP2","oldState":"REMOVED"' in log else False + + def convert_time(time_as_str: str) -> int: """Converts a string time representation to an integer time representation.""" # parse time representation, provided in this format: 'YYYY-MM-DDTHH:MM:SS.MMM+00:00'