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

openSUSE Build Service is sponsored by