From 32abab19abc834793a7b1de496c4bc636a5e3326 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Wed, 26 Jun 2024 13:41:04 +0200 Subject: [PATCH] Filter out irrelevant logs when checking for expected logs Because of some issues with asyncio and caplog, maybe pytest-asyncio, that reports some pending tasks from an unrelated test, we need to filter out the logs from the relevant loggers when checking for the expected logs. Signed-off-by: Leandro Lucarella --- tests/actor/test_actor.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/actor/test_actor.py b/tests/actor/test_actor.py index d575ec0be..958d21642 100644 --- a/tests/actor/test_actor.py +++ b/tests/actor/test_actor.py @@ -206,8 +206,9 @@ async def test_restart_on_unhandled_exception( restart_limit: The restart limit to use. caplog: The log capture fixture. """ - caplog.set_level("DEBUG", logger="frequenz.sdk.actor._actor") - caplog.set_level("DEBUG", logger="frequenz.sdk.actor._run_utils") + relevant_loggers = {"frequenz.sdk.actor._actor", "frequenz.sdk.actor._run_utils"} + for logger in relevant_loggers: + caplog.set_level("DEBUG", logger=logger) channel: Broadcast[int] = Broadcast(name="channel") @@ -270,9 +271,14 @@ async def test_restart_on_unhandled_exception( (*RUN_INFO, "All 1 actor(s) finished."), ] ) - print("expected_log:", expected_log) print("caplog.record_tuples:", caplog.record_tuples) - assert caplog.record_tuples == expected_log + # This is an ugly hack. There seem to be some issues with asyncio and caplog, maybe + # pytest-asyncio, that reports some pending tasks from an unrelated test when tested + # inside QEMU (suggesting also some timing issue when things run very slow). + filtered_logs = [r for r in caplog.record_tuples if r[0] in relevant_loggers] + print("filtered_logs:", filtered_logs) + print("expected_log:", expected_log) + assert filtered_logs == expected_log async def test_does_not_restart_on_normal_exit(