Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
7752-kernel-test-Add-simple-test-case-for-UDP-o...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 7752-kernel-test-Add-simple-test-case-for-UDP-options-pro.patch of Package erlang
From daeb6283ede55594ac0719a6c8427ad48888faeb Mon Sep 17 00:00:00 2001 From: Micael Karlberg <bmk@erlang.org> Date: Wed, 16 Nov 2022 16:29:38 +0100 Subject: [PATCH 2/5] [kernel|test] Add simple test case for UDP options processing Add simple test case for UDP options processing verification. Testing that options do not get "eaten" by add_membership and drop_membership. OTP-18323 --- lib/kernel/test/gen_udp_SUITE.erl | 51 +++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/lib/kernel/test/gen_udp_SUITE.erl b/lib/kernel/test/gen_udp_SUITE.erl index 075dd84b64..80b5a7ec26 100644 --- a/lib/kernel/test/gen_udp_SUITE.erl +++ b/lib/kernel/test/gen_udp_SUITE.erl @@ -58,9 +58,13 @@ t_simple_local_sockaddr_in_send_recv/1, t_simple_link_local_sockaddr_in_send_recv/1, t_simple_local_sockaddr_in6_send_recv/1, - t_simple_link_local_sockaddr_in6_send_recv/1 + t_simple_link_local_sockaddr_in6_send_recv/1, + + otp_18323/1 + ]). +-include_lib("kernel/src/inet_int.hrl"). -define(TRY_TC(F), try_tc(F)). @@ -128,7 +128,8 @@ all_cases() -> recv_close, {group, socket_monitor}, otp_17492, - {group, sockaddr} + {group, sockaddr}, + otp_18323 ]. recv_and_send_opts_cases() -> @@ -2782,6 +2787,48 @@ do_simple_sockaddr_send_recv(#{family := _Fam} = SockAddr, _) -> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Verify that the options [add|drop]_membership do not mess up +%% the "previous" options. +otp_18323(Config) when is_list(Config) -> + ct:timetrap(?MINS(1)), + ?TC_TRY(?FUNCTION_NAME, fun() -> do_otp_18323(Config) end). + +do_otp_18323(_Config) -> + ?P("begin"), + + do_otp_18323_verify({add_membership, {{239,1,2,3},{0,0,0,0}}}), + do_otp_18323_verify({drop_membership, {{239,1,2,3},{0,0,0,0}}}), + + ?P("done"), + ok. + +do_otp_18323_verify(MembershipOpt) -> + Port = 4321, + RecBuf = 123456, + Active = 10, + Opts = [binary, MembershipOpt, {active, Active}], + + case inet:udp_options([{port, Port}, {recbuf, RecBuf} | Opts], inet_udp) of + {ok, #udp_opts{port = Port, + opts = SockOpts}} -> + ?P("Processed Socket Options: " + "~n Port: ~p" + "~n Sock Opts: ~p", [Port, SockOpts]), + %% Check that the recbuf and mode options are as expected + %% The option 'binary' is shorthand for {mode, binary} + {value, {recbuf, RecBuf}} = lists:keysearch(recbuf, 1, SockOpts), + {value, {mode, binary}} = lists:keysearch(mode, 1, SockOpts), + {value, {active, Active}} = lists:keysearch(active, 1, SockOpts), + ok; + {error, Reason} -> + exit(?F("Failed processing options: ~p", [Reason])) + end. + + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ok({ok,V}) -> V; -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor