File 2429-kernel-enet-test-Add-ip-address-table-test-case.patch of Package erlang

From 1f891dba54724bfddb14fa926512247cab409fa8 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Thu, 12 Jun 2025 07:58:38 +0200
Subject: [PATCH 09/14] [kernel{enet{test] Add ip-address-table test case

OTP-19674
---
 lib/kernel/test/prim_net_SUITE.erl | 52 ++++++++++++++++++++++++++++--
 1 file changed, 50 insertions(+), 2 deletions(-)

diff --git a/lib/kernel/test/prim_net_SUITE.erl b/lib/kernel/test/prim_net_SUITE.erl
index 16b7b2d917..d7f9d886d5 100644
--- a/lib/kernel/test/prim_net_SUITE.erl
+++ b/lib/kernel/test/prim_net_SUITE.erl
@@ -73,7 +73,8 @@
 -export([
          get_adapters_addresses/1,
          get_if_entry/1,
-	 get_interface_info/1
+	 get_interface_info/1,
+	 get_ip_address_table/1
         ]).
 
 
@@ -107,7 +108,8 @@ misc_cases() ->
     [
      get_adapters_addresses,
      get_if_entry,
-     get_interface_info
+     get_interface_info,
+     get_ip_address_table
     ].
 
 
@@ -582,6 +584,52 @@ gii_verify_result([IF | IFs]) ->
     end.
 
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% This function retrieves the interface-to-IPv4 address mapping table.
+%% The only option is if we want the table sorted in ascending order by
+%% IPv4 address. 
+
+get_ip_address_table(_Config) when is_list(_Config) ->
+    ?TT(?SECS(10)),
+    tc_try(?FUNCTION_NAME,
+	   fun() -> ?HAS_SUPPORT_IPV4() end,
+	   fun() ->
+		   try
+		       ok = do_get_ip_addr_table()
+                   catch
+                       error:notsup = NOTSUP ->
+                           skip(NOTSUP)
+                   end
+	   end).
+
+do_get_ip_addr_table() ->
+    {ok, _} = prim_net:get_ip_address_table(#{}), % Default: sort = false
+    {ok, _} = prim_net:get_ip_address_table(#{sort => false}), % Default
+    {ok, Sorted} = prim_net:get_ip_address_table(#{sort => true}),
+    ok = giat_verify_result(Sorted),
+    {ok, _} = prim_net:get_ip_address_table(#{sort => tomat}), % Default
+    ok.
+
+
+giat_verify_result(Sorted) ->
+    giat_verify_result(Sorted, undefined).
+
+giat_verify_result([], _Addr0) ->
+    ?P("all entries verified"),
+    ok;
+giat_verify_result([#{index := Idx, addr := Addr} | Tab], undefined) ->
+    ?P("first entry: "
+       "~n   Index: ~p"
+       "~n   Addr:  ~p", [Idx, Addr]),
+    giat_verify_result(Tab, Addr);
+giat_verify_result([#{index := Idx, addr := Addr} | Tab], Addr0)
+  when (Addr > Addr0) ->
+    ?P("entry verified: "
+       "~n   Index: ~p"
+       "~n   Addr:  ~p (> ~p)", [Idx, Addr, Addr0]),
+    giat_verify_result(Tab, Addr).
+
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %% not_supported(What) ->
-- 
2.43.0

openSUSE Build Service is sponsored by