diff options
Diffstat (limited to 'lib/kernel/test/gen_udp_SUITE.erl')
-rw-r--r-- | lib/kernel/test/gen_udp_SUITE.erl | 51 |
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 |