File 0185-socket-Fix-test-cases-to-handle-socket-being-disable.patch of Package erlang
From 62dc5d58e5083f06bd8e5e697f408cc288e0b2e3 Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Wed, 8 Dec 2021 16:30:52 +0100
Subject: [PATCH 07/12] socket: Fix test cases to handle socket being disabled
---
lib/kernel/test/gen_tcp_api_SUITE.erl | 9 ++++++---
lib/kernel/test/inet_SUITE.erl | 16 +++++++++++++---
lib/kernel/test/init_SUITE.erl | 21 +++++++++++++++++----
3 files changed, 36 insertions(+), 10 deletions(-)
diff --git a/lib/kernel/test/gen_tcp_api_SUITE.erl b/lib/kernel/test/gen_tcp_api_SUITE.erl
index 3d987a180f..24d9f44b1b 100644
--- a/lib/kernel/test/gen_tcp_api_SUITE.erl
+++ b/lib/kernel/test/gen_tcp_api_SUITE.erl
@@ -1109,7 +1109,7 @@ do_accept_inet6_tclass(Config) ->
s_accept_with_explicit_socket_backend(Config) when is_list(Config) ->
?TC_TRY(s_accept_with_explicit_socket_backend,
fun() ->
- is_not_windows(),
+ has_socket_support(),
is_socket_supported()
end,
fun() -> do_s_accept_with_explicit_socket_backend() end).
@@ -1127,12 +1127,15 @@ do_s_accept_with_explicit_socket_backend() ->
%%% Utilities
-is_not_windows() ->
+has_socket_support() ->
case os:type() of
{win32, _} ->
{skip, "Windows not supported"};
_ ->
- ok
+ case code:is_loaded(prim_socket) of
+ false -> {skip, "Compiled without socket support"};
+ _ -> ok
+ end
end.
is_socket_supported() ->
diff --git a/lib/kernel/test/inet_SUITE.erl b/lib/kernel/test/inet_SUITE.erl
index cf3ff47325..f49724a4da 100644
--- a/lib/kernel/test/inet_SUITE.erl
+++ b/lib/kernel/test/inet_SUITE.erl
@@ -1916,9 +1916,14 @@ do_socknames_tcp0(_Config) ->
?P("Test socknames for 'new' socket (=socket nif)"),
do_socknames_tcp1([{inet_backend, socket}])
catch
- error : notsup ->
+ error:notsup ->
?P("Skip test of socknames for 'new' socket (=socket nif)"),
- ok
+ ok;
+ error:undef:ST ->
+ case ST of
+ [{prim_socket,info,[],_}|_] ->
+ ?P("Skip test of socknames for 'new' socket (=socket nif)")
+ end
end.
@@ -1995,7 +2000,12 @@ do_socknames_udp0(_Config) ->
catch
error : notsup ->
?P("Skip test of socknames for 'new' socket (=socket nif)"),
- ok
+ ok;
+ error:undef:ST ->
+ case ST of
+ [{prim_socket,info,[],_}|_] ->
+ ?P("Skip test of socknames for 'new' socket (=socket nif)")
+ end
end.
diff --git a/lib/kernel/test/init_SUITE.erl b/lib/kernel/test/init_SUITE.erl
index 71b0d44c60..4301aa2161 100644
--- a/lib/kernel/test/init_SUITE.erl
+++ b/lib/kernel/test/init_SUITE.erl
@@ -397,7 +397,7 @@ restart(Config) when is_list(Config) ->
InitPid = rpc:call(Node, erlang, whereis, [init]),
PurgerPid = rpc:call(Node, erlang, whereis, [erts_code_purger]),
Procs = rpc:call(Node, erlang, processes, []),
- MsgFlags = lists:sort(rpc:call(Node, socket, supports, [msg_flags])),
+ MsgFlags = fetch_socket_msg_flags(Node),
MaxPid = lists:last(Procs),
ok = rpc:call(Node, init, restart, []),
receive
@@ -445,8 +445,13 @@ restart(Config) when is_list(Config) ->
PrimFileP = pid_to_list(PrimFilePid1),
%% and same socket_registry helper process!
- ESockRegP = pid_to_list(ESockRegPid),
- ESockRegP = pid_to_list(ESockRegPid1),
+ if ESockRegPid =:= undefined, ESockRegPid1 =:= undefined ->
+ %% No socket registry on either node
+ ok;
+ true ->
+ ESockRegP = pid_to_list(ESockRegPid),
+ ESockRegP = pid_to_list(ESockRegPid1)
+ end,
NewProcs0 = rpc:call(Node, erlang, processes, []),
NewProcs = NewProcs0 -- SysProcs1,
@@ -459,7 +464,7 @@ restart(Config) when is_list(Config) ->
end,
%% Check that socket tables has been re-initialized; check one
- MsgFlags = lists:sort(rpc:call(Node, socket, supports, [msg_flags])),
+ MsgFlags = fetch_socket_msg_flags(Node),
%% Test that, for instance, the same argument still exists.
case rpc:call(Node, init, get_argument, [c]) of
@@ -555,6 +560,14 @@ apid(Pid) ->
[N,P,I] = string:tokens(pid_to_list(Pid),"<>."),
[list_to_integer(N),list_to_integer(P),list_to_integer(I)].
+fetch_socket_msg_flags(Node) ->
+ case code:is_loaded(prim_socket) of
+ {file,preloaded} ->
+ lists:sort(rpc:call(Node, socket, supports, [msg_flags]));
+ _ ->
+ ok
+ end.
+
%% ------------------------------------------------
%% Just test that the system is halted here.
%% The reboot facility using heart is tested
--
2.31.1