Skip to content

Commit

Permalink
squash: move conn tcs
Browse files Browse the repository at this point in the history
  • Loading branch information
qzhuyan committed Sep 6, 2023
1 parent ca8ea6f commit 09edc32
Show file tree
Hide file tree
Showing 2 changed files with 250 additions and 148 deletions.
148 changes: 0 additions & 148 deletions test/quicer_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,6 @@
, tc_lib_registration_neg/1
, tc_open_listener_inval_reg/1


, tc_conn_controlling_process/1
, tc_conn_controlling_process_demon/1

, tc_conn_opt_ideal_processor/1
, tc_conn_opt_share_udp_binding/1
, tc_conn_opt_local_uni_stream_count/1
, tc_conn_opt_local_bidi_stream_count/1

, tc_stream_client_init/1
, tc_stream_client_send_binary/1
, tc_stream_client_send_iolist/1
Expand Down Expand Up @@ -320,73 +311,6 @@ tc_open_listener_inval_reg(Config) ->
quicer:reg_open(),
ok.

tc_conn_opt_ideal_processor(Config) ->
Port = select_port(),
Owner = self(),
{_SPid, _Ref} = spawn_monitor(fun() -> echo_server(Owner, Config, Port) end),
receive
listener_ready ->
{ok, Conn} = quicer:connect("127.0.0.1", Port, default_conn_opts(), 5000),
{ok, Stm} = quicer:start_stream(Conn, []),
{ok, 4} = quicer:send(Stm, <<"ping">>),
{ok, Processor} = quicer:getopt(Conn, param_conn_ideal_processor),
?assert(is_integer(Processor)),
ok = quicer:close_connection(Conn)
after 5000 ->
ct:fail("listener_timeout")
end.

tc_conn_opt_share_udp_binding(Config) ->
Port = select_port(),
Owner = self(),
{_SPid, _Ref} = spawn_monitor(fun() -> echo_server(Owner, Config, Port) end),
receive
listener_ready ->
{ok, Conn} = quicer:connect("127.0.0.1", Port, default_conn_opts(), 5000),
{ok, Stm} = quicer:start_stream(Conn, []),
{ok, 4} = quicer:send(Stm, <<"ping">>),
{ok, IsShared} = quicer:getopt(Conn, param_conn_share_udp_binding),
?assert(is_boolean(IsShared)),
{error, invalid_state} = quicer:setopt(Conn, param_conn_share_udp_binding, not IsShared),
{ok, IsShared} = quicer:getopt(Conn, param_conn_share_udp_binding),
ok = quicer:close_connection(Conn)
after 5000 ->
ct:fail("listener_timeout")
end.

tc_conn_opt_local_bidi_stream_count(Config) ->
Port = select_port(),
Owner = self(),
{_SPid, _Ref} = spawn_monitor(fun() -> echo_server(Owner, Config, Port) end),
receive
listener_ready ->
{ok, Conn} = quicer:connect("127.0.0.1", Port, default_conn_opts(), 5000),
{ok, Stm} = quicer:start_stream(Conn, []),
{ok, 4} = quicer:send(Stm, <<"ping">>),
{ok, Cnt} = quicer:getopt(Conn, param_conn_local_bidi_stream_count),
?assert(is_integer(Cnt)),
{error, invalid_parameter} = quicer:setopt(Conn, param_conn_local_bidi_stream_count, Cnt + 2),
ok = quicer:close_connection(Conn)
after 5000 ->
ct:fail("listener_timeout")
end.

tc_conn_opt_local_uni_stream_count(Config) ->
Port = select_port(),
Owner = self(),
{_SPid, _Ref} = spawn_monitor(fun() -> echo_server(Owner, Config, Port) end),
receive
listener_ready ->
{ok, Conn} = quicer:connect("127.0.0.1", Port, default_conn_opts(), 5000),
{ok, Stm} = quicer:start_stream(Conn, []),
{ok, 4} = quicer:send(Stm, <<"ping">>),
{ok, Cnt} = quicer:getopt(Conn, param_conn_local_unidi_stream_count),
?assert(is_integer(Cnt)),
{error, invalid_parameter} = quicer:setopt(Conn, param_conn_local_unidi_stream_count, Cnt + 2),
ok = quicer:close_connection(Conn)
after 5000 ->
ct:fail("listener_timeout")
end.

tc_stream_client_init(Config) ->
Port = select_port(),
Expand Down Expand Up @@ -894,79 +818,7 @@ dgram_client_recv_loop(Conn, ReceivedOnStream, ReceivedViaDgram) ->
ct:fail("Unexpected Msg ~p", [Other])
end.

tc_conn_controlling_process(Config) ->
Port = select_port(),
Owner = self(),
{SPid, Ref} = spawn_monitor(fun() -> echo_server(Owner, Config, Port) end),
receive
listener_ready ->
{ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000),
{ok, Stm} = quicer:start_stream(Conn, [{active, false}]),
ok = quicer:controlling_process(Conn, self()),
{ok, 11} = quicer:send(Stm, <<"ping_active">>),
{ok, _} = quicer:recv(Stm, 11),
{NewOwner, MonRef} = spawn_monitor(
fun() ->
receive
{quic, closed, Conn, _Flags} ->
ok
end
end),
ok = quicer:controlling_process(Conn, NewOwner),
%% Trigger *async* connection shutdown since I am not the conn owner
quicer:async_shutdown_connection(Conn, ?QUIC_CONNECTION_SHUTDOWN_FLAG_NONE, 0),
receive
{'DOWN', MonRef, process, NewOwner, normal} ->
SPid ! done
end,
ensure_server_exit_normal(Ref)
after 6000 ->
ct:fail("timeout")
end.

%% @doc check old owner is demonitored.
tc_conn_controlling_process_demon(Config) ->
Port = select_port(),
Owner = self(),
{SPid, Ref} = spawn_monitor(fun() -> echo_server(Owner, Config, Port) end),
receive
listener_ready ->
Parent = self(),
{OldOwner, MonRef} = spawn_monitor(
fun() ->
{ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000),
Res = quicer:controlling_process(Conn, Parent),
exit({Res, Conn})
end),
Conn = receive
{'DOWN', MonRef, process, OldOwner, {Res, TheConn}} ->
ct:pal("Old Owner is down, mon res: ~p", [Res]),
TheConn
end,
%% Try set owner back to dead previous owner, should fail
?assertEqual({error, owner_dead}, quicer:controlling_process(Conn, OldOwner)),
%% rollback to this owner.

{ok, Stm} = quicer:start_stream(Conn, [{active, false}]),
{ok, 11} = quicer:send(Stm, <<"ping_active">>),
{ok, _} = quicer:recv(Stm, 11),
SPid ! done,

{NewOwner2, MonRef2} = spawn_monitor(fun() ->
receive stop -> ok end
end),
ok = quicer:controlling_process(Conn, NewOwner2),
NewOwner2 ! stop,
receive
{'DOWN', MonRef2, process, NewOwner2, normal} -> ok
end,
?assertNotMatch({ok, _}, quicer:send(Stm, <<"ping_active">>)),
quicer:async_shutdown_connection(Conn, ?QUIC_CONNECTION_SHUTDOWN_FLAG_NONE, 0),
SPid ! done,
ensure_server_exit_normal(Ref)
after 6000 ->
ct:fail("timeout")
end.

%% @doc test conn and stream share the same owner.
tc_conn_and_stream_shared_owner(Config) ->
Expand Down
Loading

0 comments on commit 09edc32

Please sign in to comment.