0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00

Add test to let flow window over limit.

This commit is contained in:
Cola Cheng 2019-04-15 00:14:35 +08:00
parent 34786b2c9e
commit 9ee73930af

View file

@ -261,3 +261,45 @@ settings_timeout_infinity(Config) ->
after after
cowboy:stop_listener(?FUNCTION_NAME) cowboy:stop_listener(?FUNCTION_NAME)
end. end.
flow_window_over_limit(Config) ->
doc("Keep using the same connection to let "
"flow window is greater than 2^31-1."),
ProtoOpts = #{
env => #{dispatch => init_dispatch(Config)},
initial_connection_window_size => 16#7fffffff
},
{ok, _} = cowboy:start_clear(?FUNCTION_NAME, [{port, 0}], ProtoOpts),
Port = ranch:get_port(?FUNCTION_NAME),
try
ConnPid = gun_open([{type, tcp}, {protocol, http2}, {port, Port}|Config]),
Shot = fun(Conn) ->
Ref = gun:post(Conn, "/echo/read_body", [
{<<"content-type">>, <<"text/plain">>}
], <<"hello world">>),
case gun:await(Conn, Ref) of
{response, nofin, 200, _} ->
{ok, <<"hello world">>} = gun:await_body(Conn, Ref),
ok;
Error ->
Error
end
end,
Loop = fun
(_Loop, _ShotF, _Conn, 0) ->
ok;
(Loop, ShotF, Conn, Count) ->
case ShotF(Conn) of
ok ->
Loop(Loop, ShotF, Conn, Count - 1);
Error ->
Error
end
end,
FlowControlError = Loop(Loop, Shot, ConnPid, 1000),
{error, {connection_error, flow_control_error,
'The flow control window must not be greater than 2^31-1. (RFC7540 6.9.1)'}} = FlowControlError,
gun:close(ConnPid)
after
cowboy:stop_listener(?FUNCTION_NAME)
end.