File 1259-kernel-test-Add-two-simple-test-cases.patch of Package erlang

From dc252750fccc78fbe167b7f85bf86ae160f41965 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Tue, 25 Mar 2025 18:45:29 +0100
Subject: [PATCH 3/3] [kernel|test] Add two simple test cases

OTP-19560
---
 lib/kernel/test/gen_tcp_misc_SUITE.erl | 75 +++++++++++++++++++++++++-
 1 file changed, 73 insertions(+), 2 deletions(-)

diff --git a/lib/kernel/test/gen_tcp_misc_SUITE.erl b/lib/kernel/test/gen_tcp_misc_SUITE.erl
index a40fd9e296..d7ffca5a19 100644
--- a/lib/kernel/test/gen_tcp_misc_SUITE.erl
+++ b/lib/kernel/test/gen_tcp_misc_SUITE.erl
@@ -108,7 +108,8 @@
 	 socket_monitor2_manyc/1,
 	 otp_17492/1,
 	 otp_18357/1,
-	 otp_18707/1
+	 otp_18707/1,
+         otp_19560_inet/1, otp_19560_inet6/1
 	]).
 
 %% Internal exports.
@@ -198,7 +199,8 @@ groups() ->
      {pktoptions,             [], pktoptions_cases()},
      {accept,                 [], accept_cases()},
      {send_timeout,           [], send_timeout_cases()},
-     {socket_monitor,         [], socket_monitor_cases()}
+     {socket_monitor,         [], socket_monitor_cases()},
+     {otp_19560,              [], otp_19560_cases()}
     ].
 
 inet_backend_default_cases() ->
@@ -243,7 +245,8 @@ all_std_cases() ->
 
 ticket_cases() ->
     [
-     otp_18357
+     otp_18357,
+     {group, otp_19560}
     ].
 
 close_cases() ->
@@ -357,6 +360,12 @@ socket_monitor_cases() ->
      socket_monitor2_manyc
     ].
 
+otp_19560_cases() ->
+    [
+     otp_19560_inet,
+     otp_19560_inet6
+    ].
+
 init_per_suite(Config0) ->
 
     ?P("init_per_suite -> entry with"
@@ -9634,3 +9643,65 @@ port_failed_str(Reason) ->
 
 port_failed_str(Reason) ->
     ?F("Port failed: ~w", [Reason]).
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% This is the most basic of tests.
+otp_19560_inet(Config) when is_list(Config) ->
+    ?TC_TRY(?FUNCTION_NAME,
+            fun() ->
+                    %% This is only because we use family = inet
+                    %% in the test case.
+                    ?HAS_SUPPORT_IPV4()
+            end,
+            fun() -> do_otp_19560(inet) end).
+
+%% This is the most basic of tests.
+otp_19560_inet6(Config) when is_list(Config) ->
+    ?TC_TRY(?FUNCTION_NAME,
+            fun() ->
+                    %% This is only because we use family = inet
+                    %% in the test case.
+                    ?HAS_SUPPORT_IPV6()
+            end,
+            fun() -> do_otp_19560(inet6) end).
+
+do_otp_19560(Family) ->
+    ?P("create listen socket"),
+    {ok, L} = gen_tcp:listen(0, [{ip, loopback}]),
+    ?P("get sockname (port) for listen socket"),
+    {ok, {_, P} = LSA} = inet:sockname(L),
+    ?P("connect to listen socket using 'loopback' address"),
+    C = case gen_tcp:connect(#{family => Family,
+                               addr   => loopback,
+                               port   => P},
+                             [{ip, loopback}]) of
+            {ok, S} ->
+                S;
+            {error, eafnosupport = Reason} ->
+                ?P("~w not supported: ~w", [Family, Reason]),
+                exit({skip, Reason})
+        end,
+
+    ?P("accept connection"),
+    {ok, A} = gen_tcp:accept(L),
+
+    ?P("get sockname for connected socket"),
+    {ok, CSA} = inet:sockname(C),
+
+    ?P("get sockname for accepted socket"),
+    {ok, ASA} = inet:sockname(A),
+
+    ?P("connected:"
+       "~n   Listen SockAddr:  ~p"
+       "~n   Connect SockAddr: ~p"
+       "~n   Accept SockAddr:  ~p", [LSA, CSA, ASA]),
+    
+    ?P("cleanup"),
+    (catch gen_tcp:close(A)),
+    (catch gen_tcp:close(C)),
+    (catch gen_tcp:close(L)),
+
+    ?P("done"),
+    ok.
-- 
2.43.0

openSUSE Build Service is sponsored by