diff options
Diffstat (limited to 'test/http_SUITE_data')
-rw-r--r-- | test/http_SUITE_data/http_errors.erl | 12 | ||||
-rw-r--r-- | test/http_SUITE_data/http_long_polling.erl | 24 | ||||
-rw-r--r-- | test/http_SUITE_data/http_loop_recv.erl | 18 | ||||
-rw-r--r-- | test/http_SUITE_data/http_loop_stream_recv.erl | 41 | ||||
-rw-r--r-- | test/http_SUITE_data/http_loop_timeout.erl | 16 | ||||
-rw-r--r-- | test/http_SUITE_data/http_multipart.erl | 22 | ||||
-rw-r--r-- | test/http_SUITE_data/http_multipart_stream.erl | 34 | ||||
-rw-r--r-- | test/http_SUITE_data/rest_missing_callbacks.erl | 2 | ||||
-rw-r--r-- | test/http_SUITE_data/rest_resource_etags.erl | 2 |
9 files changed, 69 insertions, 102 deletions
diff --git a/test/http_SUITE_data/http_errors.erl b/test/http_SUITE_data/http_errors.erl index 8831362..35ac3bd 100644 --- a/test/http_SUITE_data/http_errors.erl +++ b/test/http_SUITE_data/http_errors.erl @@ -9,30 +9,28 @@ init({_Transport, http}, Req, _Opts) -> case_init(Case, Req1). case_init(<<"init_before_reply">> = Case, _Req) -> + cowboy_error_h:ignore(?MODULE, case_init, 2), erlang:error(Case); - case_init(<<"init_after_reply">> = Case, Req) -> + cowboy_error_h:ignore(?MODULE, case_init, 2), {ok, _Req1} = cowboy_req:reply(200, [], "http_handler_crashes", Req), erlang:error(Case); - case_init(<<"init_reply_handle_error">> = Case, Req) -> {ok, Req1} = cowboy_req:reply(200, [], "http_handler_crashes", Req), {ok, Req1, Case}; - case_init(<<"handle_before_reply">> = Case, Req) -> {ok, Req, Case}; - case_init(<<"handle_after_reply">> = Case, Req) -> {ok, Req, Case}. - handle(_Req, <<"init_reply_handle_error">> = Case) -> + cowboy_error_h:ignore(?MODULE, handle, 2), erlang:error(Case); - handle(_Req, <<"handle_before_reply">> = Case) -> + cowboy_error_h:ignore(?MODULE, handle, 2), erlang:error(Case); - handle(Req, <<"handle_after_reply">> = Case) -> + cowboy_error_h:ignore(?MODULE, handle, 2), {ok, _Req1} = cowboy_req:reply(200, [], "http_handler_crashes", Req), erlang:error(Case). diff --git a/test/http_SUITE_data/http_long_polling.erl b/test/http_SUITE_data/http_long_polling.erl deleted file mode 100644 index ad4e66e..0000000 --- a/test/http_SUITE_data/http_long_polling.erl +++ /dev/null @@ -1,24 +0,0 @@ -%% Feel free to use, reuse and abuse the code in this file. - --module(http_long_polling). --behaviour(cowboy_http_handler). --export([init/3, handle/2, info/3, terminate/3]). - -init({_Transport, http}, Req, _Opts) -> - erlang:send_after(500, self(), timeout), - {loop, Req, 5, 5000, hibernate}. - -handle(_Req, _State) -> - exit(badarg). - -info(timeout, Req, 0) -> - {ok, Req2} = cowboy_req:reply(102, Req), - {ok, Req2, 0}; -info(timeout, Req, State) -> - erlang:send_after(500, self(), timeout), - {loop, Req, State - 1, hibernate}. - -terminate({normal, shutdown}, _, _) -> - ok; -terminate({error, overflow}, _, _) -> - ok. diff --git a/test/http_SUITE_data/http_loop_recv.erl b/test/http_SUITE_data/http_loop_recv.erl deleted file mode 100644 index d0577f0..0000000 --- a/test/http_SUITE_data/http_loop_recv.erl +++ /dev/null @@ -1,18 +0,0 @@ -%% Feel free to use, reuse and abuse the code in this file. - --module(http_loop_recv). --behaviour(cowboy_loop_handler). --export([init/3, info/3, terminate/3]). - -init({_, http}, Req, _) -> - self() ! recv_timeout, - {loop, Req, undefined, 500, hibernate}. - -info(recv_timeout, Req, State) -> - {ok, Body, Req1} = cowboy_req:body(Req), - 100000 = byte_size(Body), - {ok, Req2} = cowboy_req:reply(200, Req1), - {ok, Req2, State}. - -terminate({normal, shutdown}, _, _) -> - ok. diff --git a/test/http_SUITE_data/http_loop_stream_recv.erl b/test/http_SUITE_data/http_loop_stream_recv.erl index 87113c6..9f7646a 100644 --- a/test/http_SUITE_data/http_loop_stream_recv.erl +++ b/test/http_SUITE_data/http_loop_stream_recv.erl @@ -8,34 +8,27 @@ init({_, http}, Req, _) -> receive after 100 -> ok end, self() ! stream, - {loop, Req, 1, 100}. + {loop, Req, undefined, 100}. -info(stream, Req, Id) -> - case stream_next(Req) of - {ok, Id, Req2} -> - info(stream, Req2, Id+1); +info(stream, Req, undefined) -> + stream(Req, 1, <<>>). + +stream(Req, ID, Acc) -> + case cowboy_req:stream_body(Req) of + {ok, Data, Req2} -> + parse_id(Req2, ID, << Acc/binary, Data/binary >>); {done, Req2} -> {ok, Req3} = cowboy_req:reply(200, Req2), - {ok, Req3, Id} + {ok, Req3, undefined} + end. + +parse_id(Req, ID, Data) -> + case Data of + << ID:32, Rest/bits >> -> + parse_id(Req, ID + 1, Rest); + _ -> + stream(Req, ID, Data) end. terminate({normal, shutdown}, _, _) -> ok. - -stream_next(Req) -> - stream_next(<<>>, Req). - -stream_next(Buffer, Req) -> - case cowboy_req:stream_body(Req) of - {ok, Packet, Req2} -> - case <<Buffer/binary, Packet/binary>> of - <<Id:32>> -> - {ok, Id, Req2}; - Buffer2 when byte_size(Buffer2) < 4 -> - stream_next(Buffer2, Req2); - _InvalidBuffer -> - {error, invalid_chunk} - end; - Other -> - Other - end. diff --git a/test/http_SUITE_data/http_loop_timeout.erl b/test/http_SUITE_data/http_loop_timeout.erl deleted file mode 100644 index dd3472c..0000000 --- a/test/http_SUITE_data/http_loop_timeout.erl +++ /dev/null @@ -1,16 +0,0 @@ -%% Feel free to use, reuse and abuse the code in this file. - --module(http_loop_timeout). --behaviour(cowboy_loop_handler). --export([init/3, info/3, terminate/3]). - -init({_, http}, Req, _) -> - erlang:send_after(1000, self(), error_timeout), - {loop, Req, undefined, 500, hibernate}. - -info(error_timeout, Req, State) -> - {ok, Req2} = cowboy_req:reply(500, Req), - {ok, Req2, State}. - -terminate({normal, timeout}, _, _) -> - ok. diff --git a/test/http_SUITE_data/http_multipart.erl b/test/http_SUITE_data/http_multipart.erl index c94739f..79bfeb8 100644 --- a/test/http_SUITE_data/http_multipart.erl +++ b/test/http_SUITE_data/http_multipart.erl @@ -8,22 +8,18 @@ init({_Transport, http}, Req, []) -> {ok, Req, {}}. handle(Req, State) -> - {Result, Req2} = acc_multipart(Req), + {Result, Req2} = acc_multipart(Req, []), {ok, Req3} = cowboy_req:reply(200, [], term_to_binary(Result), Req2), {ok, Req3, State}. terminate(_, _, _) -> ok. -acc_multipart(Req) -> - acc_multipart(cowboy_req:multipart_data(Req), []). - -acc_multipart({headers, Headers, Req}, Acc) -> - acc_multipart(cowboy_req:multipart_data(Req), [{Headers, []}|Acc]); -acc_multipart({body, Data, Req}, [{Headers, BodyAcc}|Acc]) -> - acc_multipart(cowboy_req:multipart_data(Req), [{Headers, [Data|BodyAcc]}|Acc]); -acc_multipart({end_of_part, Req}, [{Headers, BodyAcc}|Acc]) -> - acc_multipart(cowboy_req:multipart_data(Req), - [{Headers, list_to_binary(lists:reverse(BodyAcc))}|Acc]); -acc_multipart({eof, Req}, Acc) -> - {lists:reverse(Acc), Req}. +acc_multipart(Req, Acc) -> + case cowboy_req:part(Req) of + {ok, Headers, Req2} -> + {ok, Body, Req3} = cowboy_req:part_body(Req2), + acc_multipart(Req3, [{Headers, Body}|Acc]); + {done, Req2} -> + {lists:reverse(Acc), Req2} + end. diff --git a/test/http_SUITE_data/http_multipart_stream.erl b/test/http_SUITE_data/http_multipart_stream.erl new file mode 100644 index 0000000..926d150 --- /dev/null +++ b/test/http_SUITE_data/http_multipart_stream.erl @@ -0,0 +1,34 @@ +%% Feel free to use, reuse and abuse the code in this file. + +-module(http_multipart_stream). +-behaviour(cowboy_http_handler). +-export([init/3, handle/2, terminate/3]). + +init(_, Req, []) -> + {ok, Req, undefined}. + +handle(Req, State) -> + Req2 = multipart(Req), + {ok, Req3} = cowboy_req:reply(200, Req2), + {ok, Req3, State}. + +terminate(_, _, _) -> + ok. + +multipart(Req) -> + case cowboy_req:part(Req) of + {ok, [{<<"content-length">>, BinLength}], Req2} -> + Length = list_to_integer(binary_to_list(BinLength)), + {Length, Req3} = stream_body(Req2, 0), + multipart(Req3); + {done, Req2} -> + Req2 + end. + +stream_body(Req, N) -> + case cowboy_req:part_body(Req) of + {ok, Data, Req2} -> + {N + byte_size(Data), Req2}; + {more, Data, Req2} -> + stream_body(Req2, N + byte_size(Data)) + end. diff --git a/test/http_SUITE_data/rest_missing_callbacks.erl b/test/http_SUITE_data/rest_missing_callbacks.erl index 171c856..94bfbbd 100644 --- a/test/http_SUITE_data/rest_missing_callbacks.erl +++ b/test/http_SUITE_data/rest_missing_callbacks.erl @@ -11,11 +11,13 @@ allowed_methods(Req, State) -> {[<<"GET">>, <<"PUT">>], Req, State}. content_types_accepted(Req, State) -> + cowboy_error_h:ignore(cowboy_rest, process_content_type, 3), {[ {<<"application/json">>, put_application_json} ], Req, State}. content_types_provided(Req, State) -> + cowboy_error_h:ignore(cowboy_rest, set_resp_body, 2), {[ {<<"text/plain">>, get_text_plain} ], Req, State}. diff --git a/test/http_SUITE_data/rest_resource_etags.erl b/test/http_SUITE_data/rest_resource_etags.erl index 43f1e05..2652f57 100644 --- a/test/http_SUITE_data/rest_resource_etags.erl +++ b/test/http_SUITE_data/rest_resource_etags.erl @@ -18,8 +18,10 @@ generate_etag(Req, State) -> {<<"\"etag-header-value\"">>, Req2, State}; %% Invalid return values from generate_etag/2. {<<"binary-strong-unquoted">>, Req2} -> + cowboy_error_h:ignore(cowboy_http, quoted_string, 2), {<<"etag-header-value">>, Req2, State}; {<<"binary-weak-unquoted">>, Req2} -> + cowboy_error_h:ignore(cowboy_http, quoted_string, 2), {<<"W/etag-header-value">>, Req2, State} end. |