File 0222-erts-Do-not-print-verbose-error-log-messages-in-test.patch of Package erlang
From 7dbdd9d7da4a1895a557ac650d0530c6411f118b Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Mon, 10 Jan 2022 11:07:59 +0100
Subject: [PATCH 2/2] erts: Do not print verbose error log messages in test
We add a logger filter that removes the verbose error log
messages from the driver_SUITE. The log messages will still
be in the html logs, they just wont be printed to stdout.
---
erts/emulator/sys/common/erl_check_io.c | 8 ++------
erts/emulator/test/driver_SUITE.erl | 17 ++++++++++++++++-
2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/erts/emulator/sys/common/erl_check_io.c b/erts/emulator/sys/common/erl_check_io.c
index e5aa36251d..2106b34dd4 100644
--- a/erts/emulator/sys/common/erl_check_io.c
+++ b/erts/emulator/sys/common/erl_check_io.c
@@ -2955,12 +2955,8 @@ erts_check_io_debug(ErtsCheckIoDebugInfo *ciodip)
erts_dsprintf(dsbufp, "internal fds=%d\n", counters.internal_fds);
#endif
erts_dsprintf(dsbufp, "---------------------------------------------------------\n");
- if (counters.num_errors > 0)
- erts_send_error_to_logger_nogl(dsbufp);
- else {
- erts_free(ERTS_ALC_T_LOGGER_DSBUF, (void *) dsbufp->str);
- erts_free(ERTS_ALC_T_LOGGER_DSBUF, (void *) dsbufp);
- }
+
+ erts_send_error_to_logger_nogl(dsbufp);
#ifdef ERTS_SYS_CONTINOUS_FD_NUMBERS
erts_free(ERTS_ALC_T_TMP, (void *) counters.epep);
#endif
diff --git a/erts/emulator/test/driver_SUITE.erl b/erts/emulator/test/driver_SUITE.erl
index 4fb177a116..40973625c2 100644
--- a/erts/emulator/test/driver_SUITE.erl
+++ b/erts/emulator/test/driver_SUITE.erl
@@ -123,7 +123,7 @@
-define(heap_binary_size, 64).
suite() ->
- [{ct_hooks,[ts_install_cth]},
+ [{ct_hooks,[cth_log_redirect,ts_install_cth]},
{timetrap, {minutes, 1}}].
all() -> %% Keep a_test first and z_test last...
@@ -171,9 +171,24 @@ groups() ->
ioq_exit_timeout_async]}].
init_per_suite(Config) ->
+ logger:add_handler_filter(default,
+ checkio_filter,
+ {fun F(#{ msg := {string,Str}} = Log, _State) ->
+ case re:run(Str,"(fds in pollset)|(Bad value on output port)") of
+ {match,_} ->
+ stop;
+ _ ->
+ Log
+ end;
+ F(#{ msg := {Fmt,Args}} = Log, State) when not is_atom(Fmt) ->
+ F(Log#{ msg := {string,io_lib:format(Fmt,Args)}}, State);
+ F(Log, _State) ->
+ Log
+ end, undefined}),
Config.
end_per_suite(_Config) ->
+ logger:remove_handler_filter(default, checkio_filter),
catch erts_debug:set_internal_state(available_internal_state, false).
init_per_group(poll_thread, Config) ->
--
2.31.1