File 7813-kernel-test-sys-monitor-fixes.patch of Package erlang
From 2836c0a2fdd685a0765b9f6ef38d716684cb846b Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Thu, 29 Jun 2023 11:08:38 +0200
Subject: [PATCH 3/4] [kernel|test] sys monitor fixes
---
lib/kernel/test/inet_SUITE.erl | 28 ++++++----
lib/kernel/test/inet_sockopt_SUITE.erl | 73 ++++++++++++++++++++++----
lib/kernel/test/kernel_test_lib.erl | 19 +++++--
3 files changed, 99 insertions(+), 21 deletions(-)
diff --git a/lib/kernel/test/inet_SUITE.erl b/lib/kernel/test/inet_SUITE.erl
index 5713fb6f1e..e4fd195e31 100644
--- a/lib/kernel/test/inet_SUITE.erl
+++ b/lib/kernel/test/inet_SUITE.erl
@@ -133,12 +133,13 @@ init_per_suite(Config0) ->
Config1 when is_list(Config1) ->
- ?P("init_per_suite -> end when "
- "~n Config: ~p", [Config1]),
-
%% We need a monitor on this node also
+ ?P("init_per_suite -> try start system monitor"),
kernel_test_sys_monitor:start(),
+ ?P("init_per_suite -> end when "
+ "~n Config: ~p", [Config1]),
+
Config1
end.
@@ -148,11 +149,12 @@ end_per_suite(Config0) ->
"~n Config: ~p"
"~n Nodes: ~p", [Config0, erlang:nodes()]),
- Config1 = ?LIB:end_per_suite(Config0),
-
%% Stop the local monitor
+ ?P("init_per_suite -> try stop system monitor"),
kernel_test_sys_monitor:stop(),
+ Config1 = ?LIB:end_per_suite(Config0),
+
?P("end_per_suite -> "
"~n Nodes: ~p", [erlang:nodes()]),
@@ -172,7 +174,7 @@ init_per_testcase(Case, Config0) ->
"~n Nodes: ~p"
"~n Links: ~p"
"~n Monitors: ~p",
- [Config0, erlang:nodes(), pi(links), pi(monitors)]),
+ [Config0, erlang:nodes(), links(), monitors()]),
kernel_test_global_sys_monitor:reset_events(),
@@ -182,7 +184,7 @@ init_per_testcase(Case, Config0) ->
"~n Config: ~p"
"~n Nodes: ~p"
"~n Links: ~p"
- "~n Monitors: ~p", [Config1, erlang:nodes(), pi(links), pi(monitors)]),
+ "~n Monitors: ~p", [Config1, erlang:nodes(), links(), monitors()]),
Config1.
init_per_testcase2(gethostnative_debug_level, Config) ->
@@ -210,7 +212,7 @@ end_per_testcase(Case, Config) ->
"~n Nodes: ~p"
"~n Links: ~p"
"~n Monitors: ~p",
- [Config, erlang:nodes(), pi(links), pi(monitors)]),
+ [Config, erlang:nodes(), links(), monitors()]),
?P("system events during test: "
"~n ~p", [kernel_test_global_sys_monitor:events()]),
@@ -220,7 +222,7 @@ end_per_testcase(Case, Config) ->
?P("end_per_testcase -> done with"
"~n Nodes: ~p"
"~n Links: ~p"
- "~n Monitors: ~p", [erlang:nodes(), pi(links), pi(monitors)]),
+ "~n Monitors: ~p", [erlang:nodes(), links(), monitors()]),
ok.
end_per_testcase2(lookup_bad_search_option, Config) ->
@@ -2096,6 +2098,8 @@ do_socknames_udp1(Conf) ->
"~n ~p", [Reason1]),
exit({skip, {listen_socket, Reason1}})
end,
+ ?P("enable debug"),
+ inet:setopts(S1, [{debug, true}]),
?P("close socket"),
(catch gen_udp:close(S1)),
?P("done"),
@@ -2105,6 +2109,12 @@ do_socknames_udp1(Conf) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+links() ->
+ pi(links).
+
+monitors() ->
+ pi(monitors).
+
pi(Item) ->
{Item, Val} = process_info(self(), Item),
Val.
diff --git a/lib/kernel/test/inet_sockopt_SUITE.erl b/lib/kernel/test/inet_sockopt_SUITE.erl
index 9d539b7f89..bd2bfc20e2 100644
--- a/lib/kernel/test/inet_sockopt_SUITE.erl
+++ b/lib/kernel/test/inet_sockopt_SUITE.erl
@@ -80,27 +80,43 @@ all() ->
groups() ->
[].
-init_per_suite(Config) ->
+init_per_suite(Config0) ->
?P("init_per_suite -> entry with"
"~n Config: ~p"
- "~n Nodes: ~p", [Config, erlang:nodes()]),
+ "~n Nodes: ~p", [Config0, erlang:nodes()]),
- %% We need a monitor on this node also
- kernel_test_sys_monitor:start(),
+ case ?LIB:init_per_suite([{allow_skip, false} | Config0]) of
+ {skip, _} = SKIP ->
+ SKIP;
- Config.
+ Config1 when is_list(Config1) ->
+
+ %% We need a monitor on this node also
+ kernel_test_sys_monitor:start(),
+
+ ?P("init_per_suite -> end when "
+ "~n Config: ~p", [Config1]),
+
+ Config1
+ end.
-end_per_suite(Config) ->
+end_per_suite(Config0) ->
?P("end_per_suite -> entry with"
"~n Config: ~p"
- "~n Nodes: ~p", [Config, erlang:nodes()]),
+ "~n Nodes: ~p", [Config0, erlang:nodes()]),
%% Stop the local monitor
+ ?P("init_per_suite -> try stop system monitor"),
kernel_test_sys_monitor:stop(),
- ok.
+ Config1 = ?LIB:end_per_suite(Config0),
+
+ ?P("end_per_suite -> "
+ "~n Nodes: ~p", [erlang:nodes()]),
+
+ Config1.
init_per_group(_GroupName, Config) ->
Config.
@@ -110,9 +126,36 @@ end_per_group(_GroupName, Config) ->
init_per_testcase(_Func, Config) ->
+ ?P("init_per_testcase -> entry with"
+ "~n Config: ~p"
+ "~n Nodes: ~p"
+ "~n Links: ~p"
+ "~n Monitors: ~p",
+ [Config, erlang:nodes(), links(), monitors()]),
+
+ kernel_test_global_sys_monitor:reset_events(),
+
+ ?P("init_per_testcase -> done when"
+ "~n Nodes: ~p"
+ "~n Links: ~p"
+ "~n Monitors: ~p", [erlang:nodes(), links(), monitors()]),
Config.
-end_per_testcase(_Func, _Config) ->
+end_per_testcase(_Func, Config) ->
+ ?P("end_per_testcase -> entry with"
+ "~n Config: ~p"
+ "~n Nodes: ~p"
+ "~n Links: ~p"
+ "~n Monitors: ~p",
+ [Config, erlang:nodes(), links(), monitors()]),
+
+ ?P("system events during test: "
+ "~n ~p", [kernel_test_global_sys_monitor:events()]),
+
+ ?P("end_per_testcase -> done with"
+ "~n Nodes: ~p"
+ "~n Links: ~p"
+ "~n Monitors: ~p", [erlang:nodes(), links(), monitors()]),
ok.
%% Test inet:setopt/getopt simple functionality.
@@ -1135,3 +1178,15 @@ skip(Reason) ->
throw({skip, Reason}).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+links() ->
+ pi(links).
+
+monitors() ->
+ pi(monitors).
+
+pi(Item) ->
+ {Item, Val} = process_info(self(), Item),
+ Val.
+
diff --git a/lib/kernel/test/kernel_test_lib.erl b/lib/kernel/test/kernel_test_lib.erl
index e327d6f38f..45953fed84 100644
--- a/lib/kernel/test/kernel_test_lib.erl
+++ b/lib/kernel/test/kernel_test_lib.erl
@@ -113,10 +113,23 @@ init_per_suite(AllowSkip, Config) when is_boolean(AllowSkip) ->
SKIP
end;
- {Factor, _HostInfo} when (AllowSkip =:= false) andalso
+ {Factor, HostInfo} when (AllowSkip =:= false) andalso
is_integer(Factor) ->
- [{kernel_factor, Factor} | Config]
-
+ print("try start (global) system monitor"),
+ case kernel_test_global_sys_monitor:start() of
+ {ok, _} ->
+ print("(global) system monitor started"),
+ case lists:keysearch(label, 1, HostInfo) of
+ {value, Label} ->
+ [{kernel_factor, Factor}, Label | Config];
+ false ->
+ [{kernel_factor, Factor} | Config]
+ end;
+ {error, Reason} ->
+ print("Failed start (global) system monitor:"
+ "~n ~p", [Reason]),
+ [{kernel_factor, Factor} | Config]
+ end
catch
throw:{skip, _} = SKIP ->
SKIP
--
2.35.3