File 2425-kernel-enet-test-Add-simple-test-case-for-get-if-ent.patch of Package erlang

From dacfb780ce2f75b78fb09a9f0b15ca7fdb0857bc Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Mon, 2 Jun 2025 18:51:34 +0200
Subject: [PATCH 05/14] [kernel|enet|test] Add simple test case for
 get-if-entry

OTP-19674
---
 lib/kernel/test/prim_net_SUITE.erl | 67 ++++++++++++++++++++++++++++--
 1 file changed, 63 insertions(+), 4 deletions(-)

diff --git a/lib/kernel/test/prim_net_SUITE.erl b/lib/kernel/test/prim_net_SUITE.erl
index 9fd3a20432..2efb05afbd 100644
--- a/lib/kernel/test/prim_net_SUITE.erl
+++ b/lib/kernel/test/prim_net_SUITE.erl
@@ -71,7 +71,8 @@
 
 %% Test cases
 -export([
-         get_adapters_addresses/1
+         get_adapters_addresses/1,
+         get_if_entry/1
         ]).
 
 
@@ -103,7 +104,8 @@ groups() ->
 
 misc_cases() ->
     [
-     get_adapters_addresses
+     get_adapters_addresses,
+     get_if_entry
     ].
 
 
@@ -474,6 +476,63 @@ gaa_verify_addr(Addr, FilterFam) ->
     
 
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% There is no way we can test every possible combination of args,
+%% so we just test a new simple examples.
+
+get_if_entry(_Config) when is_list(_Config) ->
+    ?TT(?SECS(10)),
+    tc_try(?FUNCTION_NAME,
+	   fun() -> ok end,
+           fun() ->
+                   ok = do_get_if_entry()
+           end).
+
+do_get_if_entry() ->
+    %% Just ensure we get an entry for every if
+    ?P("try validate known interfaces"),
+    {ok, IfNames} = net:if_names(),
+    Idxs =
+	case [Idx || {Idx, _} <- IfNames] of
+	    [] ->
+		exit({skip, no_ifs});
+	    L ->
+		L
+	end,
+    ok = do_get_if_entry(Idxs),
+
+    %% Ask for an index that we know does not exit
+    ?P("try validate *not* known interface"),
+    [MaxIdx | _] = lists:reverse(lists:sort(Idxs)),
+    InvalidIdx = MaxIdx + 99,
+    case prim_net:get_if_entry(#{index => InvalidIdx}) of
+	{error, Reason} ->
+	    ?P("expected failure get if entry for index ~w:"
+	       "~n   ~p", [InvalidIdx, Reason]),
+	    ok;
+	{ok, Entry} ->
+	    ?P("unexpected success requesting non-existing if entry ~w:"
+	       "~n   ~p", [InvalidIdx, Entry]),
+	    exit(unexpected_success)
+    end.
+
+
+do_get_if_entry([]) ->
+    ok;
+do_get_if_entry([Idx|Idxs]) ->
+    case prim_net:get_if_entry(#{index => Idx}) of
+	{ok, Entry} ->
+	    ?P("expected success retreiving if entry ~w: "
+	       "~n   ~p", [Idx, Entry]),
+	    do_get_if_entry(Idxs);
+	{error, Reason} ->
+	    ?P("unexpected failure retreiving if entry ~w: "
+	       "~n   ~p", [Idx, Reason]),
+	    exit({unexpected_failure, Idx, Reason})
+    end.
+
+   
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %% local_host() ->
@@ -528,8 +587,8 @@ skip(Reason) ->
 %%            For instance, the test case may only work in specific
 %%            conditions.
 %% FCFun:     The test case fun
-tc_try(Case, TCFun) ->
-    ?TC_TRY(Case, TCFun).
+%% tc_try(Case, TCFun) ->
+%%     ?TC_TRY(Case, TCFun).
 
 tc_try(Case, TCCondFun, TCFun) ->
     ?TC_TRY(Case, TCCondFun, TCFun).
-- 
2.43.0

openSUSE Build Service is sponsored by