From 92672b49aff04fb129bdf488448c074eeccfdb27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 20 Nov 2017 15:46:23 +0100 Subject: Queue HTTP/2 trailers when there's still data in the buffer --- test/handlers/resp_h.erl | 9 +++++++++ test/req_SUITE.erl | 8 ++++++++ 2 files changed, 17 insertions(+) (limited to 'test') diff --git a/test/handlers/resp_h.erl b/test/handlers/resp_h.erl index 9dae612..ba46213 100644 --- a/test/handlers/resp_h.erl +++ b/test/handlers/resp_h.erl @@ -212,6 +212,15 @@ do(<<"stream_body">>, Req0, Opts) -> end; do(<<"stream_trailers">>, Req0, Opts) -> case cowboy_req:binding(arg, Req0) of + <<"large">> -> + Req = cowboy_req:stream_reply(200, #{ + <<"trailer">> => <<"grpc-status">> + }, Req0), + cowboy_req:stream_body(<<0:800000>>, nofin, Req), + cowboy_req:stream_trailers(#{ + <<"grpc-status">> => <<"0">> + }, Req), + {ok, Req, Opts}; _ -> Req = cowboy_req:stream_reply(200, #{ <<"trailer">> => <<"grpc-status">> diff --git a/test/req_SUITE.erl b/test/req_SUITE.erl index f900067..9fa73e5 100644 --- a/test/req_SUITE.erl +++ b/test/req_SUITE.erl @@ -854,6 +854,14 @@ stream_trailers(Config) -> {_, <<"grpc-status">>} = lists:keyfind(<<"trailer">>, 1, RespHeaders), ok. +stream_trailers_large(Config) -> + doc("Stream large body followed by trailer headers."), + {200, RespHeaders, <<0:800000>>, [ + {<<"grpc-status">>, <<"0">>} + ]} = do_trailers("/resp/stream_trailers/large", Config), + {_, <<"grpc-status">>} = lists:keyfind(<<"trailer">>, 1, RespHeaders), + ok. + stream_trailers_no_te(Config) -> doc("Stream body followed by trailer headers without a te header in the request."), ConnPid = gun_open(Config), -- cgit v1.2.3