File 3303-kernel-test-Tweaked-udp-read_packets-test-case.patch of Package erlang

From edb4e64db23d27f75754fbf8fccd6f016dcac6e2 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Tue, 6 Aug 2024 12:17:57 +0200
Subject: [PATCH 3/6] [kernel|test] Tweaked (udp) read_packets test case

---
 lib/kernel/test/gen_udp_SUITE.erl   | 46 ++++++++++++++++++++++++-----
 lib/kernel/test/kernel_test_lib.hrl |  5 ++++
 2 files changed, 43 insertions(+), 8 deletions(-)

diff --git a/lib/kernel/test/gen_udp_SUITE.erl b/lib/kernel/test/gen_udp_SUITE.erl
index 10f925dd6f..33188cbd73 100644
--- a/lib/kernel/test/gen_udp_SUITE.erl
+++ b/lib/kernel/test/gen_udp_SUITE.erl
@@ -808,20 +808,43 @@ read_packets(Config) when is_list(Config) ->
 		       true ->
                            %% We have not (yet) implemented support for 
                            %% this option. We accept it but do not use it.
+                           ?P("~w:cond -> skip", [?FUNCTION_NAME]),
 			   {skip, "Not compliant with socket"};
 		       false ->
+                           ?P("~w:cond -> run", [?FUNCTION_NAME]),
 			   ok
 		   end
 	   end,
-    TC   = fun() ->
+    Pre  = fun() ->
+                   %% Try start/create a worker node
+                   NName = ?UNIQ_NODE_NAME,
+                   ?P("~w:pre -> try create node ~p", [?FUNCTION_NAME, NName]),
+                   case start_node(NName) of
+                       {ok, Node} ->
+                           ?P("~w:pre -> node ~p started",
+                              [?FUNCTION_NAME, Node]),
+                           #{node => Node,
+                             conf => Config};
+                       {error, Reason} ->
+                           ?P("~w:pre -> Failed start node ~p"
+                              "~n   ~p", [?FUNCTION_NAME, NName, Reason]),
+                           {skip, Reason}
+                   end
+           end,
+    TC   = fun(State) ->
                    ?P("~w:tc -> begin", [?FUNCTION_NAME]),
-                   Res = do_read_packets(Config),
+                   Res = do_read_packets(State),
                    ?P("~w:tc -> done", [?FUNCTION_NAME]),
                    Res
            end,
-    ?TC_TRY(?FUNCTION_NAME, Cond, TC).
+    Post = fun(#{node := Node}) ->
+                   ?P("~w:post -> stop node", [?FUNCTION_NAME]),
+                   stop_node(Node)
+           end,
+    ?TC_TRY(?FUNCTION_NAME, Cond, Pre, TC, Post).
 
-do_read_packets(Config) when is_list(Config) ->
+do_read_packets(#{node := Node,
+                  conf := Config}) when is_list(Config) ->
     N1   = 5,
     N2   = 1,
     Msgs = 30000,
@@ -833,8 +856,6 @@ do_read_packets(Config) when is_list(Config) ->
        "~n   Addr: ~p"
        "~n   Port: ~p", [RA, RP]),
 
-    ?P("create slave node"),
-    {ok,Peer,Node} = ?CT_PEER(),
     %%
     ?P("perform read-packets test"),
     {V1, Trace1} = read_packets_test(Config, R, RA, RP, Msgs, Node),
@@ -848,8 +869,6 @@ do_read_packets(Config) when is_list(Config) ->
     ?P("verify read-packets (to ~w)", [N2]),
     {ok, [{read_packets,N2}]} = inet:getopts(R, [read_packets]),
     %%
-    ?P("stop slave node"),
-    peer:stop(Peer),
     ?P("dump trace 1"),
     dump_terms(Config, "trace1.terms", Trace1),
     ?P("dump trace 2"),
@@ -3321,6 +3340,17 @@ pi(Item) ->
     Val.
     
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+start_node(Name) ->
+    Pa = filename:dirname(code:which(?MODULE)),
+    ?START_NODE(Name, "-pa " ++ Pa).
+
+
+stop_node(Node) ->
+    ?STOP_NODE(Node).
+
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %%
diff --git a/lib/kernel/test/kernel_test_lib.hrl b/lib/kernel/test/kernel_test_lib.hrl
index b3b8a6ba0a..7177e67706 100644
--- a/lib/kernel/test/kernel_test_lib.hrl
+++ b/lib/kernel/test/kernel_test_lib.hrl
@@ -60,6 +60,11 @@
 
 -define(SZ(X),                   ?LIB:sz((X))).
 
+-define(UNIQ_NODE_NAME,
+  list_to_atom(?MODULE_STRING ++ "__" ++
+               atom_to_list(?FUNCTION_NAME) ++ "_" ++
+               integer_to_list(erlang:unique_integer([positive])))).
+
 -define(START_NODE(__N__, __A__),
         ?LIB:start_node(__N__, __A__)).
 -define(START_NODE(__N__, __A__, __O__),
-- 
2.43.0

openSUSE Build Service is sponsored by