From cee1c4fc7f35c74103af50d6b6ccfe46e3ccc384 Mon Sep 17 00:00:00 2001 From: Guilherme Gallo Date: Mon, 20 Jun 2022 19:12:28 -0300 Subject: [PATCH] ci/lava: Filter out undesired messages Some LAVA jobs emit lots of messages "Listened to connection for namespace 'common' for up to 1s" in a row at the end of the logs, making difficult to see the result of the test script. This commit removes those lines until a proper solution is deployed on the LAVA side. Closes: #6116 Signed-off-by: Guilherme Gallo Acked-by: Emma Anholt Part-of: --- .gitlab-ci/lava/lava_job_submitter.py | 21 ++++++++++++ .gitlab-ci/tests/test_lava_job_submitter.py | 36 ++++++++++++++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci/lava/lava_job_submitter.py b/.gitlab-ci/lava/lava_job_submitter.py index 3c53c440d47..f9d4d89b893 100755 --- a/.gitlab-ci/lava/lava_job_submitter.py +++ b/.gitlab-ci/lava/lava_job_submitter.py @@ -402,6 +402,25 @@ def fix_lava_gitlab_section_log(line): line["msg"] = f"\x1b[0K{marker}:{timestamp}:{id_collapsible}\r\x1b[0K{header}" +def filter_debug_messages(line: dict[str, str]) -> bool: + """Filter some LAVA debug messages that does not add much information to the + developer and may clutter the trace log.""" + if line["lvl"] != "debug": + return False + # line["msg"] can be a list[str] when there is a kernel dump + if not isinstance(line["msg"], str): + return False + + if re.match( + # Sometimes LAVA dumps this messages lots of times when the LAVA job is + # reaching the end. + r"^Listened to connection for namespace", + line["msg"], + ): + return True + return False + + def parse_lava_lines(new_lines) -> list[str]: parsed_lines: list[str] = [] for line in new_lines: @@ -413,6 +432,8 @@ def parse_lava_lines(new_lines) -> list[str]: elif line["lvl"] in ["warning", "error"]: prefix = CONSOLE_LOG_COLOR_RED suffix = CONSOLE_LOG_COLOR_RESET + elif filter_debug_messages(line): + continue elif line["lvl"] == "input": prefix = "$ " suffix = "" diff --git a/.gitlab-ci/tests/test_lava_job_submitter.py b/.gitlab-ci/tests/test_lava_job_submitter.py index def946c1ac9..76a43c33eff 100644 --- a/.gitlab-ci/tests/test_lava_job_submitter.py +++ b/.gitlab-ci/tests/test_lava_job_submitter.py @@ -37,6 +37,7 @@ from lava.lava_job_submitter import ( DEVICE_HANGING_TIMEOUT_SEC, NUMBER_OF_RETRIES_TIMEOUT_DETECTION, LAVAJob, + filter_debug_messages, fix_lava_color_log, fix_lava_gitlab_section_log, follow_job_execution, @@ -420,7 +421,6 @@ GITLAB_SECTION_MANGLED_SCENARIOS = { ), } - @pytest.mark.parametrize( "message, fixed_message", GITLAB_SECTION_MANGLED_SCENARIOS.values(), @@ -430,3 +430,37 @@ def test_fix_lava_gitlab_section_log(message, fixed_message): fix_lava_gitlab_section_log(message) assert message["msg"] == fixed_message + + +LAVA_DEBUG_SPAM_MESSAGES = { + "Listened to connection in debug level": ( + create_lava_yaml_msg( + msg="Listened to connection for namespace 'common' for up to 1s", + lvl="debug", + ), + True, + ), + "Listened to connection in debug level - v2": ( + create_lava_yaml_msg( + msg="Listened to connection for namespace 'prepare' for up to 9s", + lvl="debug", + ), + True, + ), + "Listened to connection in target level": ( + create_lava_yaml_msg( + msg="Listened to connection for namespace 'common' for up to 1s", + lvl="target", + ), + False, + ), +} + + +@pytest.mark.parametrize( + "message, expectation", + LAVA_DEBUG_SPAM_MESSAGES.values(), + ids=LAVA_DEBUG_SPAM_MESSAGES.keys(), +) +def test_filter_debug_messages(message, expectation): + assert filter_debug_messages(message) == expectation