File 5785-kernel-net-test-Add-simple-test-cases.patch of Package erlang

From afd189ec97b6c49060bef9277c5666f92a2f8383 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Tue, 16 Apr 2024 11:04:02 +0200
Subject: [PATCH 05/18] [kernel|net|test] Add simple test cases

Add a couple of simple getservby[name|port] test cases.
---
 lib/kernel/test/net_SUITE.erl | 115 ++++++++++++++++++++++++++++++++--
 1 file changed, 111 insertions(+), 4 deletions(-)

diff --git a/lib/kernel/test/net_SUITE.erl b/lib/kernel/test/net_SUITE.erl
index 9c18b3f261..bef17f0476 100644
--- a/lib/kernel/test/net_SUITE.erl
+++ b/lib/kernel/test/net_SUITE.erl
@@ -1,7 +1,7 @@
 %%
 %% %CopyrightBegin%
 %% 
-%% Copyright Ericsson AB 2019-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2019-2024. All Rights Reserved.
 %% 
 %% Licensed under the Apache License, Version 2.0 (the "License");
 %% you may not use this file except in compliance with the License.
@@ -50,8 +50,9 @@
          %% *** API Basic ***
          api_b_gethostname/1,
          api_b_getifaddrs/1,
+         api_b_getservbyname/1,
+         api_b_getservbyport/1,
          api_b_name_and_addr_info/1,
-         
          api_b_name_and_index/1,
 
          %% *** API Misc ***
@@ -63,7 +64,9 @@
          api_m_getnameinfo_v4/0,
          api_m_getnameinfo_v4/1,
          api_m_getnameinfo_v6/0,
-         api_m_getnameinfo_v6/1
+         api_m_getnameinfo_v6/1,
+
+         api_m_getservbyname_overflow/1
 
          %% Tickets
         ]).
@@ -121,6 +124,8 @@ api_basic_cases() ->
     [
      api_b_gethostname,
      api_b_getifaddrs,
+     api_b_getservbyname,
+     api_b_getservbyport,
      api_b_name_and_addr_info,
      api_b_name_and_index
     ].
@@ -130,7 +135,8 @@ api_misc_cases() ->
      api_m_getaddrinfo_v4,
      api_m_getaddrinfo_v6,
      api_m_getnameinfo_v4,
-     api_m_getnameinfo_v6
+     api_m_getnameinfo_v6,
+     api_m_getservbyname_overflow
     ].
 
 %% ticket_cases() ->
@@ -330,6 +336,78 @@ merge([H|T], L) ->
     end.
 
             
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% This is a *very* basic test. It simply calls the function with 
+%% a a couple of diifferent arguments...
+api_b_getservbyname(suite) ->
+    [];
+api_b_getservbyname(doc) ->
+    [];
+api_b_getservbyname(_Config) when is_list(_Config) ->
+    ?TT(?SECS(5)),
+    tc_try(?FUNCTION_NAME,
+           fun() ->
+                   ok = api_b_getservbyname()
+           end).
+
+
+api_b_getservbyname() ->
+    ?P("A couple of (expected) successes"),
+    {ok, 80}   = net:getservbyname("http"),
+    {ok, 80}   = net:getservbyname("http", any),
+    {ok, 80}   = net:getservbyname("http", tcp),
+    {ok, 80}   = net:getservbyname("www",  udp),
+    {ok, 161}  = net:getservbyname("snmp", udp),
+    {ok, 161}  = net:getservbyname("snmp", tcp),
+    {ok, 4369} = net:getservbyname("epmd", tcp),
+    {ok, 5672} = net:getservbyname("amqp", tcp),
+    {ok, 5672} = net:getservbyname("amqp", sctp),
+
+    ?P("A couple of (expected) failures"),
+    {error, einval} = net:getservbyname("gurka", tcp),
+    {error, einval} = net:getservbyname("http",  gurka),
+
+    ?P("done"),
+    ok.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% This is a *very* basic test. It simply calls the function and expect
+%% it to succeed...
+api_b_getservbyport(suite) ->
+    [];
+api_b_getservbyport(doc) ->
+    [];
+api_b_getservbyport(_Config) when is_list(_Config) ->
+    ?TT(?SECS(5)),
+    tc_try(?FUNCTION_NAME,
+           fun() ->
+                   ok = api_b_getservbyport()
+           end).
+
+
+api_b_getservbyport() ->
+    ?P("A couple of (expected) successes"),
+    {ok, "http"} = net:getservbyport(80),
+    {ok, "http"} = net:getservbyport(80,   any),
+    {ok, "http"} = net:getservbyport(80,   tcp),
+    {ok, "www"}  = net:getservbyport(80,   udp),
+    {ok, "snmp"} = net:getservbyport(161,  udp),
+    {ok, "snmp"} = net:getservbyport(161,  tcp),
+    {ok, "epmd"} = net:getservbyport(4369, tcp),
+    {ok, "amqp"} = net:getservbyport(5672, tcp),
+    {ok, "amqp"} = net:getservbyport(5672, sctp),
+
+    ?P("A couple of (expected) failures"),
+    {error, einval} = net:getservbyport(11111, tcp),
+    {error, einval} = net:getservbyport(80,    gurka),
+
+    ?P("done"),
+    ok.
+
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %% Get name and address info.
@@ -720,6 +798,35 @@ api_m_getnameinfo_verify(NameInfo, Name, FName, _IP) ->
     ?FAIL({not_found, NameInfo, Name, FName}).
 
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+api_m_getservbyname_overflow(suite) ->
+    [];
+api_m_getservbyname_overflow(doc) ->
+    [];
+api_m_getservbyname_overflow(Config) when is_list(Config) ->
+    ?TT(?SECS(5)),
+    Pre  = fun() ->
+                   #{}
+           end,
+    Case = fun(_Info) ->
+                   ?P("try name as large atom"),
+                   {error, einval} =
+                       net:getservbyname(
+                         list_to_atom(lists:flatten(lists:duplicate(128, "x"))),
+                         tcp),
+                   ?P("try name as too large string"),
+                   {error, einval} =
+                       net:getservbyname(
+                         lists:flatten(lists:duplicate(257, "x")),
+                         tcp),
+                   ok
+           end,
+    Post = fun(_) -> ok end,
+    tc_try(?FUNCTION_NAME,
+           Pre, Case, Post).
+
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %% This gets the local address (not 127.0...)
-- 
2.35.3

openSUSE Build Service is sponsored by