From 767da623f1f7329cb0b0d86c3c1876ccf098d60a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Fri, 2 Jun 2017 12:31:00 +0200 Subject: Fix terminate not being called on connection close in HTTP/1.1 Introduces the new stream_handler_SUITE test suite. More cases will be added later on. --- test/handlers/stream_handler_h.erl | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 test/handlers/stream_handler_h.erl (limited to 'test/handlers/stream_handler_h.erl') diff --git a/test/handlers/stream_handler_h.erl b/test/handlers/stream_handler_h.erl new file mode 100644 index 0000000..bb4a6da --- /dev/null +++ b/test/handlers/stream_handler_h.erl @@ -0,0 +1,34 @@ +%% This module behaves differently depending on a specific header. + +-module(stream_handler_h). +-behavior(cowboy_stream). + +-export([init/3]). +-export([data/4]). +-export([info/3]). +-export([terminate/3]). +-export([early_error/5]). + +init(StreamID, Req, Opts) -> + %% @todo Vary behavior depending on x-test-case. + Pid = list_to_pid(binary_to_list(cowboy_req:header(<<"x-test-pid">>, Req))), + Pid ! {Pid, self(), init, StreamID, Req, Opts}, + {[{headers, 200, #{}}], Pid}. + +data(StreamID, IsFin, Data, State=Pid) -> + Pid ! {Pid, self(), data, StreamID, IsFin, Data, State}, + {[], State}. + +info(StreamID, Info, State=Pid) -> + Pid ! {Pid, self(), info, StreamID, Info, State}, + {[], State}. + +terminate(StreamID, Reason, State=Pid) -> + Pid ! {Pid, self(), terminate, StreamID, Reason, State}, + ok. + +%% This clause can only test for early errors that reached the required header. +early_error(StreamID, Reason, PartialReq, Resp, Opts) -> + Pid = list_to_pid(binary_to_list(cowboy_req:header(<<"x-test-pid">>, PartialReq))), + Pid ! {Pid, self(), early_error, StreamID, Reason, PartialReq, Resp, Opts}, + Resp. -- cgit v1.2.3