summaryrefslogtreecommitdiff
path: root/lib/kernel/test/gen_udp_SUITE.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel/test/gen_udp_SUITE.erl')
-rw-r--r--lib/kernel/test/gen_udp_SUITE.erl51
1 files changed, 41 insertions, 10 deletions
diff --git a/lib/kernel/test/gen_udp_SUITE.erl b/lib/kernel/test/gen_udp_SUITE.erl
index 4419999036..4aefee8a79 100644
--- a/lib/kernel/test/gen_udp_SUITE.erl
+++ b/lib/kernel/test/gen_udp_SUITE.erl
@@ -1,8 +1,8 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1998-2022. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1998-2023. 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.
%% You may obtain a copy of the License at
@@ -14,7 +14,7 @@
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -37,7 +37,7 @@
init_per_testcase/2, end_per_testcase/2]).
-export([
- send_to_closed/1, active_n/1,
+ send_to_closed/1, send_to_empty/1, active_n/1,
buffer_size/1, binary_passive_recv/1, max_buffer_size/1, bad_address/1,
read_packets/1, recv_poll_after_active_once/1,
open_fd/1, connect/1, reconnect/1, implicit_inet6/1,
@@ -118,6 +118,7 @@ inet_backend_socket_cases() ->
all_cases() ->
[
send_to_closed,
+ send_to_empty,
buffer_size,
binary_passive_recv,
max_buffer_size,
@@ -340,6 +341,23 @@ do_send_to_closed(Config) ->
%%-------------------------------------------------------------
+%% Send to the empty host name
+
+send_to_empty(Config) when is_list(Config) ->
+ ?TC_TRY(?FUNCTION_NAME, fun() -> do_send_to_empty(Config) end).
+
+do_send_to_empty(Config) ->
+ {ok, Sock} = ?OPEN(Config, 0),
+ element(1, os:type()) =:= unix andalso
+ begin
+ {error, nxdomain} = gen_udp:send(Sock, "", ?CLOSED_PORT, "xXx"),
+ {error, nxdomain} = gen_udp:send(Sock, '', ?CLOSED_PORT, "xXx")
+ end,
+ {error, nxdomain} = gen_udp:send(Sock, ".", ?CLOSED_PORT, "xXx"),
+ {error, nxdomain} = gen_udp:send(Sock, '.', ?CLOSED_PORT, "xXx"),
+ ok.
+
+%%-------------------------------------------------------------
%% Test that the UDP socket buffer sizes are settable
%% Test UDP buffer size setting.
@@ -410,7 +428,7 @@ buffer_size_client(Server, IP, Port,
Socket, Cnt, [{B,Replies}|T]=Opts) when is_binary(B) ->
?P("buffer_size_client -> Cnt=~w send size ~w expecting ~p when"
"~n Info: ~p",
- [Cnt, size(B), Replies, inet:info(Socket)]),
+ [Cnt, byte_size(B), Replies, inet:info(Socket)]),
case gen_udp:send(Socket, IP, Port, <<Cnt,B/binary>>) of
ok ->
receive
@@ -446,7 +464,7 @@ buffer_size_client(Server, IP, Port,
?P("<ERROR> Client failed sending ~w bytes of data: "
"~n SndBuf: ~p"
"~n Reason: ~p",
- [size(B), inet:getopts(Socket, [sndbuf]), Reason]),
+ [byte_size(B), inet:getopts(Socket, [sndbuf]), Reason]),
ct:fail(Reason)
end.
@@ -465,7 +483,7 @@ buffer_size_server(Client, IP, Port,
buffer_size_server(Client, IP, Port,
Socket, Cnt, [{B,_}|T]) when is_binary(B) ->
?P("buffer_size_server -> try receive: Cnt=~w and ~w bytes of data",
- [Cnt, size(B)]),
+ [Cnt, byte_size(B)]),
Reply = case buffer_size_server_recv(Socket, IP, Port, Cnt) of
D when is_binary(D) ->
SizeD = byte_size(D),
@@ -496,11 +514,11 @@ buffer_size_server_recv(Socket, IP, Port, Cnt) ->
"~n Cnt: ~p", [Socket, IP, Port, Cnt]),
receive
{udp, Socket, IP, Port, <<Cnt, B/binary>>} ->
- ?P("buffer_size_server -> received (~w) ~w bytes", [Cnt, size(B)]),
+ ?P("buffer_size_server -> received (~w) ~w bytes", [Cnt, byte_size(B)]),
B;
{udp, Socket, IP, Port, <<_B/binary>>} ->
?P("buffer_size_server -> received unexpected ~w bytes",
- [size(_B)]),
+ [byte_size(_B)]),
buffer_size_server_recv(Socket, IP, Port, Cnt);
{udp, Socket, IP, Port, _CRAP} ->
@@ -1744,6 +1762,11 @@ do_connect(Config) when is_list(Config) ->
?P("sleep some"),
ct:sleep({seconds, 5}),
+ ?P("try some doomed connect targets: ~p", [P1]),
+ {error, nxdomain} = gen_udp:connect(S2, "", ?CLOSED_PORT),
+ {error, nxdomain} = gen_udp:connect(S2, '', ?CLOSED_PORT),
+ {error, nxdomain} = gen_udp:connect(S2, ".", ?CLOSED_PORT),
+ {error, nxdomain} = gen_udp:connect(S2, '.', ?CLOSED_PORT),
?P("try connect second socket to: ~p, ~p", [Addr, P1]),
ok = gen_udp:connect(S2, Addr, P1),
?P("try send on second socket"),
@@ -2616,6 +2639,10 @@ do_simple_sockaddr_send_recv(#{family := _Fam} = SockAddr, _) ->
?P("[server] send failed: ~p",
[Reason1]),
exit({skip, Reason1});
+ {error, enetunreach = Reason1} ->
+ ?P("[server] send failed: ~p",
+ [Reason1]),
+ exit({skip, Reason1});
{error, Reason1} ->
exit({send_failed, Reason1})
end
@@ -2641,6 +2668,10 @@ do_simple_sockaddr_send_recv(#{family := _Fam} = SockAddr, _) ->
?P("[server] send failed: ~p",
[Reason2]),
exit({skip, Reason2});
+ {error, enetunreach = Reason2} ->
+ ?P("[server] send failed: ~p",
+ [Reason2]),
+ exit({skip, Reason2});
{error, Reason2} ->
exit({send_failed, Reason2})
end