File 4330-kernel-tcp-api-test-Adjust-t-implicit-inet6-test-cas.patch of Package erlang

From 7edff1a078d075039dd1fc40f57b4d40c94cce79 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Mon, 25 May 2020 19:10:04 +0200
Subject: [PATCH 30/35] [kernel|tcp|api-test] Adjust t-implicit-inet6 test case

Add a skip clause (eaddrnotavail on listen).
---
 lib/kernel/test/gen_tcp_api_SUITE.erl | 99 +++++++++++++++++++++++----
 1 file changed, 86 insertions(+), 13 deletions(-)

diff --git a/lib/kernel/test/gen_tcp_api_SUITE.erl b/lib/kernel/test/gen_tcp_api_SUITE.erl
index e825f4247d..c70edd7ebf 100644
--- a/lib/kernel/test/gen_tcp_api_SUITE.erl
+++ b/lib/kernel/test/gen_tcp_api_SUITE.erl
@@ -291,11 +291,21 @@ t_fdconnect(Config) when is_list(Config) ->
 %%% implicit inet6 option to api functions
 
 t_implicit_inet6(Config) when is_list(Config) ->
+    try do_t_implicit_inet6(Config)
+    catch
+        throw:{skip, _} = SKIP ->
+            SKIP
+    end.
+
+do_t_implicit_inet6(_Config) ->
+    p("try get hostname"),
     Host = ok(inet:gethostname()),
+    p("try get address for host ~p", [Host]),
     case inet:getaddr(Host, inet6) of
-	{ok,Addr} ->
+	{ok, Addr} ->
+            p("address: ~p", [Addr]),
 	    t_implicit_inet6(Host, Addr);
-	{error,Reason} ->
+	{error, Reason} ->
 	    {skip,
 	     "Can not look up IPv6 address: "
 	     ++atom_to_list(Reason)}
@@ -304,29 +314,51 @@ t_implicit_inet6(Config) when is_list(Config) ->
 t_implicit_inet6(Host, Addr) ->
     Loopback = {0,0,0,0,0,0,0,1},
     case gen_tcp:listen(0, [inet6, {ip,Loopback}]) of
-	{ok,S1} ->
-	    io:format("~s ~p~n", ["::1",Loopback]),
+	{ok, S1} ->
+	    p("try ~s ~p", ["::1", Loopback]),
 	    implicit_inet6(S1, Loopback),
 	    ok = gen_tcp:close(S1),
 	    %%
 	    Localaddr = ok(get_localaddr()),
-	    S2 = ok(gen_tcp:listen(0, [{ip,Localaddr}])),
+	    S2 = case gen_tcp:listen(0, [{ip, Localaddr}]) of
+                     {ok, LSock2} ->
+                         LSock2;
+                     {error, Reason2} ->
+                         skip(listen_failed_str(Reason2))
+                 end,
 	    implicit_inet6(S2, Localaddr),
 	    ok = gen_tcp:close(S2),
 	    %%
-	    io:format("~s ~p~n", [Host,Addr]),
-	    S3 = ok(gen_tcp:listen(0, [{ifaddr,Addr}])),
+	    p("try ~s ~p", [Host, Addr]),
+	    S3 = case gen_tcp:listen(0, [{ifaddr,Addr}]) of
+                     {ok, LSock3} ->
+                         LSock3;
+                     {error, Reason3} ->
+                         skip(listen_failed_str(Reason3))
+                 end,
 	    implicit_inet6(S3, Addr),
-	    ok = gen_tcp:close(S3);
-	{error,_} ->
-	    {skip,"IPv6 not supported"}
+	    ok = gen_tcp:close(S3),
+	    p("done"),
+            ok;
+        {error, Reason1} ->
+            skip(listen_failed_str(Reason1))
     end.
 
 implicit_inet6(S, Addr) ->
     P = ok(inet:port(S)),
-    S2 = ok(gen_tcp:connect(Addr, P, [])),
+    S2 = case gen_tcp:connect(Addr, P, []) of
+             {ok, CSock} ->
+                 CSock;
+             {error, CReason} ->
+                 skip(connect_failed_str(CReason))
+         end,
     P2 = ok(inet:port(S2)),
-    S1 = ok(gen_tcp:accept(S)),
+    S1 = case gen_tcp:accept(S) of
+             {ok, ASock} ->
+                 ASock;
+             {error, AReason} ->
+                 skip(accept_failed_str(AReason))
+         end,
     P1 = P = ok(inet:port(S1)),
     {Addr,P2} = ok(inet:peername(S1)),
     {Addr,P1} = ok(inet:peername(S2)),
@@ -638,7 +670,7 @@ get_localaddr([]) ->
 get_localaddr([Localhost|Ls]) ->
     case inet:getaddr(Localhost, inet6) of
        {ok, LocalAddr} ->
-           io:format("~s ~p~n", [Localhost, LocalAddr]),
+           p("~s ~p", [Localhost, LocalAddr]),
            {ok, LocalAddr};
        _ ->
            get_localaddr(Ls)
@@ -660,3 +692,44 @@ delete_local_filenames() ->
 		filelib:wildcard(
 		  "/tmp/" ?MODULE_STRING "_" ++ os:getpid() ++ "_*")],
     ok.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+skip(S) when is_list(S) ->
+    throw({skip, S}).
+
+%% skip(F, A) when is_list(F) andalso is_list(A) ->
+%%     skip(f(F, A)).
+
+f(F, A) ->
+    lists:flatten(io_lib:format(F, A)).
+
+connect_failed_str(Reason) ->
+    f("Connect failed: ~w", [Reason]).
+
+listen_failed_str(Reason) ->
+    f("Listen failed: ~w", [Reason]).
+
+accept_failed_str(Reason) ->
+    f("Accept failed: ~w", [Reason]).
+
+%% port_failed_str(Reason) ->
+%%     f("Port failed: ~w", [Reason]).
+
+formated_timestamp() ->
+    format_timestamp(os:timestamp()).
+
+format_timestamp({_N1, _N2, N3} = TS) ->
+    {_Date, Time}   = calendar:now_to_local_time(TS),
+    {Hour, Min, Sec} = Time,
+    FormatTS = io_lib:format("~.2.0w:~.2.0w:~.2.0w.~.3.0w",
+                             [Hour, Min, Sec, N3 div 1000]),  
+    lists:flatten(FormatTS).
+
+p(F) ->
+    p(F, []).
+
+p(F, A) ->
+    io:format("~s ~p " ++ F ++ "~n", [formated_timestamp(), self() | A]).
+
-- 
2.26.2

openSUSE Build Service is sponsored by