From 2e916777233d8d82b93cbca9b754a023a6ca63c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 22 Apr 2013 15:55:22 +0200 Subject: Reorganize the websocket test suite We now have the suite specific modules in the data folder. Compilation is performed by the Makefile instead of ct_run. --- test/autobahn_SUITE.erl | 2 +- test/autobahn_SUITE_data/autobahn_echo.erl | 26 ++++++++++++++++++++++++ test/websocket_echo_handler.erl | 27 ------------------------- test/websocket_handler.erl | 31 ----------------------------- test/websocket_handler_init_shutdown.erl | 23 --------------------- test/ws_SUITE.erl | 28 +++++++++++++------------- test/ws_SUITE_data/ws_echo.erl | 27 +++++++++++++++++++++++++ test/ws_SUITE_data/ws_echo_timer.erl | 31 +++++++++++++++++++++++++++++ test/ws_SUITE_data/ws_init_shutdown.erl | 23 +++++++++++++++++++++ test/ws_SUITE_data/ws_send_many.erl | 27 +++++++++++++++++++++++++ test/ws_SUITE_data/ws_timeout_cancel.erl | 26 ++++++++++++++++++++++++ test/ws_SUITE_data/ws_timeout_hibernate.erl | 22 ++++++++++++++++++++ test/ws_SUITE_data/ws_upgrade_with_opts.erl | 28 ++++++++++++++++++++++++++ test/ws_send_many_handler.erl | 27 ------------------------- test/ws_timeout_cancel_handler.erl | 26 ------------------------ test/ws_timeout_hibernate_handler.erl | 22 -------------------- test/ws_upgrade_with_opts_handler.erl | 28 -------------------------- 17 files changed, 225 insertions(+), 199 deletions(-) create mode 100644 test/autobahn_SUITE_data/autobahn_echo.erl delete mode 100644 test/websocket_echo_handler.erl delete mode 100644 test/websocket_handler.erl delete mode 100644 test/websocket_handler_init_shutdown.erl create mode 100644 test/ws_SUITE_data/ws_echo.erl create mode 100644 test/ws_SUITE_data/ws_echo_timer.erl create mode 100644 test/ws_SUITE_data/ws_init_shutdown.erl create mode 100644 test/ws_SUITE_data/ws_send_many.erl create mode 100644 test/ws_SUITE_data/ws_timeout_cancel.erl create mode 100644 test/ws_SUITE_data/ws_timeout_hibernate.erl create mode 100644 test/ws_SUITE_data/ws_upgrade_with_opts.erl delete mode 100644 test/ws_send_many_handler.erl delete mode 100644 test/ws_timeout_cancel_handler.erl delete mode 100644 test/ws_timeout_hibernate_handler.erl delete mode 100644 test/ws_upgrade_with_opts_handler.erl (limited to 'test') diff --git a/test/autobahn_SUITE.erl b/test/autobahn_SUITE.erl index 61cf631..68a9221 100644 --- a/test/autobahn_SUITE.erl +++ b/test/autobahn_SUITE.erl @@ -76,7 +76,7 @@ end_per_group(Listener, _Config) -> init_dispatch() -> cowboy_router:compile([{"localhost", [ - {"/echo", websocket_echo_handler, []}]}]). + {"/echo", autobahn_echo, []}]}]). %% autobahn cases diff --git a/test/autobahn_SUITE_data/autobahn_echo.erl b/test/autobahn_SUITE_data/autobahn_echo.erl new file mode 100644 index 0000000..07f7fd9 --- /dev/null +++ b/test/autobahn_SUITE_data/autobahn_echo.erl @@ -0,0 +1,26 @@ +%% Feel free to use, reuse and abuse the code in this file. + +-module(autobahn_echo). +-behaviour(cowboy_websocket_handler). +-export([init/3]). +-export([websocket_init/3, websocket_handle/3, + websocket_info/3, websocket_terminate/3]). + +init(_Any, _Req, _Opts) -> + {upgrade, protocol, cowboy_websocket}. + +websocket_init(_TransportName, Req, _Opts) -> + {ok, Req, undefined}. + +websocket_handle({text, Data}, Req, State) -> + {reply, {text, Data}, Req, State}; +websocket_handle({binary, Data}, Req, State) -> + {reply, {binary, Data}, Req, State}; +websocket_handle(_Frame, Req, State) -> + {ok, Req, State}. + +websocket_info(_Info, Req, State) -> + {ok, Req, State}. + +websocket_terminate(_Reason, _Req, _State) -> + ok. diff --git a/test/websocket_echo_handler.erl b/test/websocket_echo_handler.erl deleted file mode 100644 index 21b0116..0000000 --- a/test/websocket_echo_handler.erl +++ /dev/null @@ -1,27 +0,0 @@ -%% Feel free to use, reuse and abuse the code in this file. - --module(websocket_echo_handler). --behaviour(cowboy_websocket_handler). --export([init/3]). --export([websocket_init/3, websocket_handle/3, - websocket_info/3, websocket_terminate/3]). - -init(_Any, _Req, _Opts) -> - {upgrade, protocol, cowboy_websocket}. - -websocket_init(_TransportName, Req, _Opts) -> - Req2 = cowboy_req:compact(Req), - {ok, Req2, undefined}. - -websocket_handle({text, Data}, Req, State) -> - {reply, {text, Data}, Req, State}; -websocket_handle({binary, Data}, Req, State) -> - {reply, {binary, Data}, Req, State}; -websocket_handle(_Frame, Req, State) -> - {ok, Req, State}. - -websocket_info(_Info, Req, State) -> - {ok, Req, State}. - -websocket_terminate(_Reason, _Req, _State) -> - ok. diff --git a/test/websocket_handler.erl b/test/websocket_handler.erl deleted file mode 100644 index a9863ae..0000000 --- a/test/websocket_handler.erl +++ /dev/null @@ -1,31 +0,0 @@ -%% Feel free to use, reuse and abuse the code in this file. - --module(websocket_handler). --behaviour(cowboy_websocket_handler). --export([init/3]). --export([websocket_init/3, websocket_handle/3, - websocket_info/3, websocket_terminate/3]). - -init(_Any, _Req, _Opts) -> - {upgrade, protocol, cowboy_websocket}. - -websocket_init(_TransportName, Req, _Opts) -> - erlang:start_timer(1000, self(), <<"websocket_init">>), - Req2 = cowboy_req:compact(Req), - {ok, Req2, undefined}. - -websocket_handle({text, Data}, Req, State) -> - {reply, {text, Data}, Req, State}; -websocket_handle({binary, Data}, Req, State) -> - {reply, {binary, Data}, Req, State}; -websocket_handle(_Frame, Req, State) -> - {ok, Req, State}. - -websocket_info({timeout, _Ref, Msg}, Req, State) -> - erlang:start_timer(1000, self(), <<"websocket_handle">>), - {reply, {text, Msg}, Req, State}; -websocket_info(_Info, Req, State) -> - {ok, Req, State}. - -websocket_terminate(_Reason, _Req, _State) -> - ok. diff --git a/test/websocket_handler_init_shutdown.erl b/test/websocket_handler_init_shutdown.erl deleted file mode 100644 index 7ccea05..0000000 --- a/test/websocket_handler_init_shutdown.erl +++ /dev/null @@ -1,23 +0,0 @@ -%% Feel free to use, reuse and abuse the code in this file. - --module(websocket_handler_init_shutdown). --behaviour(cowboy_websocket_handler). --export([init/3]). --export([websocket_init/3, websocket_handle/3, - websocket_info/3, websocket_terminate/3]). - -init(_Any, _Req, _Opts) -> - {upgrade, protocol, cowboy_websocket}. - -websocket_init(_TransportName, Req, _Opts) -> - {ok, Req2} = cowboy_req:reply(403, Req), - {shutdown, Req2}. - -websocket_handle(_Frame, _Req, _State) -> - exit(badarg). - -websocket_info(_Info, _Req, _State) -> - exit(badarg). - -websocket_terminate(_Reason, _Req, _State) -> - exit(badarg). diff --git a/test/ws_SUITE.erl b/test/ws_SUITE.erl index b6709ca..fbef41a 100644 --- a/test/ws_SUITE.erl +++ b/test/ws_SUITE.erl @@ -90,30 +90,30 @@ end_per_group(Listener, _Config) -> init_dispatch() -> cowboy_router:compile([ {"localhost", [ - {"/websocket", websocket_handler, []}, - {"/ws_echo_handler", websocket_echo_handler, []}, - {"/ws_init_shutdown", websocket_handler_init_shutdown, []}, - {"/ws_send_many", ws_send_many_handler, [ + {"/ws_echo_timer", ws_echo_timer, []}, + {"/ws_echo", ws_echo, []}, + {"/ws_init_shutdown", ws_init_shutdown, []}, + {"/ws_send_many", ws_send_many, [ {sequence, [ {text, <<"one">>}, {text, <<"two">>}, {text, <<"seven!">>}]} ]}, - {"/ws_send_close", ws_send_many_handler, [ + {"/ws_send_close", ws_send_many, [ {sequence, [ {text, <<"send">>}, close, {text, <<"won't be received">>}]} ]}, - {"/ws_send_close_payload", ws_send_many_handler, [ + {"/ws_send_close_payload", ws_send_many, [ {sequence, [ {text, <<"send">>}, {close, 1001, <<"some text!">>}, {text, <<"won't be received">>}]} ]}, - {"/ws_timeout_hibernate", ws_timeout_hibernate_handler, []}, - {"/ws_timeout_cancel", ws_timeout_cancel_handler, []}, - {"/ws_upgrade_with_opts", ws_upgrade_with_opts_handler, + {"/ws_timeout_hibernate", ws_timeout_hibernate, []}, + {"/ws_timeout_cancel", ws_timeout_cancel, []}, + {"/ws_upgrade_with_opts", ws_upgrade_with_opts, <<"failure">>} ]} ]). @@ -126,7 +126,7 @@ ws0(Config) -> {ok, Socket} = gen_tcp:connect("localhost", Port, [binary, {active, false}, {packet, raw}]), ok = gen_tcp:send(Socket, - "GET /websocket HTTP/1.1\r\n" + "GET /ws_echo_timer HTTP/1.1\r\n" "Host: localhost\r\n" "Connection: Upgrade\r\n" "Upgrade: WebSocket\r\n" @@ -143,7 +143,7 @@ ws8(Config) -> {ok, Socket} = gen_tcp:connect("localhost", Port, [binary, {active, false}, {packet, raw}]), ok = gen_tcp:send(Socket, [ - "GET /websocket HTTP/1.1\r\n" + "GET /ws_echo_timer HTTP/1.1\r\n" "Host: localhost\r\n" "Connection: Upgrade\r\n" "Upgrade: websocket\r\n" @@ -203,7 +203,7 @@ ws8_single_bytes(Config) -> {ok, Socket} = gen_tcp:connect("localhost", Port, [binary, {active, false}, {packet, raw}]), ok = gen_tcp:send(Socket, [ - "GET /websocket HTTP/1.1\r\n" + "GET /ws_echo_timer HTTP/1.1\r\n" "Host: localhost\r\n" "Connection: Upgrade\r\n" "Upgrade: websocket\r\n" @@ -263,7 +263,7 @@ ws13(Config) -> {ok, Socket} = gen_tcp:connect("localhost", Port, [binary, {active, false}, {packet, raw}]), ok = gen_tcp:send(Socket, [ - "GET /websocket HTTP/1.1\r\n" + "GET /ws_echo_timer HTTP/1.1\r\n" "Host: localhost\r\n" "Connection: Upgrade\r\n" "Origin: http://localhost\r\n" @@ -404,7 +404,7 @@ ws_text_fragments(Config) -> {ok, Socket} = gen_tcp:connect("localhost", Port, [binary, {active, false}, {packet, raw}]), ok = gen_tcp:send(Socket, [ - "GET /ws_echo_handler HTTP/1.1\r\n" + "GET /ws_echo HTTP/1.1\r\n" "Host: localhost\r\n" "Connection: Upgrade\r\n" "Upgrade: websocket\r\n" diff --git a/test/ws_SUITE_data/ws_echo.erl b/test/ws_SUITE_data/ws_echo.erl new file mode 100644 index 0000000..d4a5f07 --- /dev/null +++ b/test/ws_SUITE_data/ws_echo.erl @@ -0,0 +1,27 @@ +%% Feel free to use, reuse and abuse the code in this file. + +-module(ws_echo). +-behaviour(cowboy_websocket_handler). +-export([init/3]). +-export([websocket_init/3, websocket_handle/3, + websocket_info/3, websocket_terminate/3]). + +init(_Any, _Req, _Opts) -> + {upgrade, protocol, cowboy_websocket}. + +websocket_init(_TransportName, Req, _Opts) -> + Req2 = cowboy_req:compact(Req), + {ok, Req2, undefined}. + +websocket_handle({text, Data}, Req, State) -> + {reply, {text, Data}, Req, State}; +websocket_handle({binary, Data}, Req, State) -> + {reply, {binary, Data}, Req, State}; +websocket_handle(_Frame, Req, State) -> + {ok, Req, State}. + +websocket_info(_Info, Req, State) -> + {ok, Req, State}. + +websocket_terminate(_Reason, _Req, _State) -> + ok. diff --git a/test/ws_SUITE_data/ws_echo_timer.erl b/test/ws_SUITE_data/ws_echo_timer.erl new file mode 100644 index 0000000..666a26d --- /dev/null +++ b/test/ws_SUITE_data/ws_echo_timer.erl @@ -0,0 +1,31 @@ +%% Feel free to use, reuse and abuse the code in this file. + +-module(ws_echo_timer). +-behaviour(cowboy_websocket_handler). +-export([init/3]). +-export([websocket_init/3, websocket_handle/3, + websocket_info/3, websocket_terminate/3]). + +init(_Any, _Req, _Opts) -> + {upgrade, protocol, cowboy_websocket}. + +websocket_init(_TransportName, Req, _Opts) -> + erlang:start_timer(1000, self(), <<"websocket_init">>), + Req2 = cowboy_req:compact(Req), + {ok, Req2, undefined}. + +websocket_handle({text, Data}, Req, State) -> + {reply, {text, Data}, Req, State}; +websocket_handle({binary, Data}, Req, State) -> + {reply, {binary, Data}, Req, State}; +websocket_handle(_Frame, Req, State) -> + {ok, Req, State}. + +websocket_info({timeout, _Ref, Msg}, Req, State) -> + erlang:start_timer(1000, self(), <<"websocket_handle">>), + {reply, {text, Msg}, Req, State}; +websocket_info(_Info, Req, State) -> + {ok, Req, State}. + +websocket_terminate(_Reason, _Req, _State) -> + ok. diff --git a/test/ws_SUITE_data/ws_init_shutdown.erl b/test/ws_SUITE_data/ws_init_shutdown.erl new file mode 100644 index 0000000..2b1dd99 --- /dev/null +++ b/test/ws_SUITE_data/ws_init_shutdown.erl @@ -0,0 +1,23 @@ +%% Feel free to use, reuse and abuse the code in this file. + +-module(ws_init_shutdown). +-behaviour(cowboy_websocket_handler). +-export([init/3]). +-export([websocket_init/3, websocket_handle/3, + websocket_info/3, websocket_terminate/3]). + +init(_Any, _Req, _Opts) -> + {upgrade, protocol, cowboy_websocket}. + +websocket_init(_TransportName, Req, _Opts) -> + {ok, Req2} = cowboy_req:reply(403, Req), + {shutdown, Req2}. + +websocket_handle(_Frame, _Req, _State) -> + exit(badarg). + +websocket_info(_Info, _Req, _State) -> + exit(badarg). + +websocket_terminate(_Reason, _Req, _State) -> + exit(badarg). diff --git a/test/ws_SUITE_data/ws_send_many.erl b/test/ws_SUITE_data/ws_send_many.erl new file mode 100644 index 0000000..2ed4772 --- /dev/null +++ b/test/ws_SUITE_data/ws_send_many.erl @@ -0,0 +1,27 @@ +%% Feel free to use, reuse and abuse the code in this file. + +-module(ws_send_many). +-behaviour(cowboy_websocket_handler). + +-export([init/3]). +-export([websocket_init/3]). +-export([websocket_handle/3]). +-export([websocket_info/3]). +-export([websocket_terminate/3]). + +init(_Any, _Req, _Opts) -> + {upgrade, protocol, cowboy_websocket}. + +websocket_init(_TransportName, Req, Sequence) -> + Req2 = cowboy_req:compact(Req), + erlang:send_after(10, self(), send_many), + {ok, Req2, Sequence}. + +websocket_handle(_Frame, Req, State) -> + {ok, Req, State}. + +websocket_info(send_many, Req, State = [{sequence, Sequence}]) -> + {reply, Sequence, Req, State}. + +websocket_terminate(_Reason, _Req, _State) -> + ok. diff --git a/test/ws_SUITE_data/ws_timeout_cancel.erl b/test/ws_SUITE_data/ws_timeout_cancel.erl new file mode 100644 index 0000000..9c7b72b --- /dev/null +++ b/test/ws_SUITE_data/ws_timeout_cancel.erl @@ -0,0 +1,26 @@ +%% Feel free to use, reuse and abuse the code in this file. + +-module(ws_timeout_cancel). +-behaviour(cowboy_websocket_handler). +-export([init/3]). +-export([websocket_init/3, websocket_handle/3, + websocket_info/3, websocket_terminate/3]). + +init(_Any, _Req, _Opts) -> + {upgrade, protocol, cowboy_websocket}. + +websocket_init(_TransportName, Req, _Opts) -> + erlang:start_timer(500, self(), should_not_cancel_timer), + {ok, Req, undefined, 1000}. + +websocket_handle({text, Data}, Req, State) -> + {reply, {text, Data}, Req, State}; +websocket_handle({binary, Data}, Req, State) -> + {reply, {binary, Data}, Req, State}. + +websocket_info(_Info, Req, State) -> + erlang:start_timer(500, self(), should_not_cancel_timer), + {ok, Req, State}. + +websocket_terminate(_Reason, _Req, _State) -> + ok. diff --git a/test/ws_SUITE_data/ws_timeout_hibernate.erl b/test/ws_SUITE_data/ws_timeout_hibernate.erl new file mode 100644 index 0000000..cc91e26 --- /dev/null +++ b/test/ws_SUITE_data/ws_timeout_hibernate.erl @@ -0,0 +1,22 @@ +%% Feel free to use, reuse and abuse the code in this file. + +-module(ws_timeout_hibernate). +-behaviour(cowboy_websocket_handler). +-export([init/3]). +-export([websocket_init/3, websocket_handle/3, + websocket_info/3, websocket_terminate/3]). + +init(_Any, _Req, _Opts) -> + {upgrade, protocol, cowboy_websocket}. + +websocket_init(_TransportName, Req, _Opts) -> + {ok, Req, undefined, 1000, hibernate}. + +websocket_handle(_Frame, Req, State) -> + {ok, Req, State, hibernate}. + +websocket_info(_Info, Req, State) -> + {ok, Req, State, hibernate}. + +websocket_terminate(_Reason, _Req, _State) -> + ok. diff --git a/test/ws_SUITE_data/ws_upgrade_with_opts.erl b/test/ws_SUITE_data/ws_upgrade_with_opts.erl new file mode 100644 index 0000000..b4f82fa --- /dev/null +++ b/test/ws_SUITE_data/ws_upgrade_with_opts.erl @@ -0,0 +1,28 @@ +%% Feel free to use, reuse and abuse the code in this file. + +-module(ws_upgrade_with_opts). +-behaviour(cowboy_websocket_handler). + +-export([init/3]). +-export([websocket_init/3]). +-export([websocket_handle/3]). +-export([websocket_info/3]). +-export([websocket_terminate/3]). + +init(_Any, Req, _Opts) -> + {upgrade, protocol, cowboy_websocket, Req, <<"success">>}. + +websocket_init(_TransportName, Req, Response) -> + Req2 = cowboy_req:compact(Req), + erlang:send_after(10, self(), send_response), + {ok, Req2, Response}. + +websocket_handle(_Frame, Req, State) -> + {ok, Req, State}. + +websocket_info(send_response, Req, State = Response) + when is_binary(Response) -> + {reply, {text, Response}, Req, State}. + +websocket_terminate(_Reason, _Req, _State) -> + ok. diff --git a/test/ws_send_many_handler.erl b/test/ws_send_many_handler.erl deleted file mode 100644 index bd67814..0000000 --- a/test/ws_send_many_handler.erl +++ /dev/null @@ -1,27 +0,0 @@ -%% Feel free to use, reuse and abuse the code in this file. - --module(ws_send_many_handler). --behaviour(cowboy_websocket_handler). - --export([init/3]). --export([websocket_init/3]). --export([websocket_handle/3]). --export([websocket_info/3]). --export([websocket_terminate/3]). - -init(_Any, _Req, _Opts) -> - {upgrade, protocol, cowboy_websocket}. - -websocket_init(_TransportName, Req, Sequence) -> - Req2 = cowboy_req:compact(Req), - erlang:send_after(10, self(), send_many), - {ok, Req2, Sequence}. - -websocket_handle(_Frame, Req, State) -> - {ok, Req, State}. - -websocket_info(send_many, Req, State = [{sequence, Sequence}]) -> - {reply, Sequence, Req, State}. - -websocket_terminate(_Reason, _Req, _State) -> - ok. diff --git a/test/ws_timeout_cancel_handler.erl b/test/ws_timeout_cancel_handler.erl deleted file mode 100644 index 68b0468..0000000 --- a/test/ws_timeout_cancel_handler.erl +++ /dev/null @@ -1,26 +0,0 @@ -%% Feel free to use, reuse and abuse the code in this file. - --module(ws_timeout_cancel_handler). --behaviour(cowboy_websocket_handler). --export([init/3]). --export([websocket_init/3, websocket_handle/3, - websocket_info/3, websocket_terminate/3]). - -init(_Any, _Req, _Opts) -> - {upgrade, protocol, cowboy_websocket}. - -websocket_init(_TransportName, Req, _Opts) -> - erlang:start_timer(500, self(), should_not_cancel_timer), - {ok, Req, undefined, 1000}. - -websocket_handle({text, Data}, Req, State) -> - {reply, {text, Data}, Req, State}; -websocket_handle({binary, Data}, Req, State) -> - {reply, {binary, Data}, Req, State}. - -websocket_info(_Info, Req, State) -> - erlang:start_timer(500, self(), should_not_cancel_timer), - {ok, Req, State}. - -websocket_terminate(_Reason, _Req, _State) -> - ok. diff --git a/test/ws_timeout_hibernate_handler.erl b/test/ws_timeout_hibernate_handler.erl deleted file mode 100644 index 41b9edd..0000000 --- a/test/ws_timeout_hibernate_handler.erl +++ /dev/null @@ -1,22 +0,0 @@ -%% Feel free to use, reuse and abuse the code in this file. - --module(ws_timeout_hibernate_handler). --behaviour(cowboy_websocket_handler). --export([init/3]). --export([websocket_init/3, websocket_handle/3, - websocket_info/3, websocket_terminate/3]). - -init(_Any, _Req, _Opts) -> - {upgrade, protocol, cowboy_websocket}. - -websocket_init(_TransportName, Req, _Opts) -> - {ok, Req, undefined, 1000, hibernate}. - -websocket_handle(_Frame, Req, State) -> - {ok, Req, State, hibernate}. - -websocket_info(_Info, Req, State) -> - {ok, Req, State, hibernate}. - -websocket_terminate(_Reason, _Req, _State) -> - ok. diff --git a/test/ws_upgrade_with_opts_handler.erl b/test/ws_upgrade_with_opts_handler.erl deleted file mode 100644 index 02d755e..0000000 --- a/test/ws_upgrade_with_opts_handler.erl +++ /dev/null @@ -1,28 +0,0 @@ -%% Feel free to use, reuse and abuse the code in this file. - --module(ws_upgrade_with_opts_handler). --behaviour(cowboy_websocket_handler). - --export([init/3]). --export([websocket_init/3]). --export([websocket_handle/3]). --export([websocket_info/3]). --export([websocket_terminate/3]). - -init(_Any, Req, _Opts) -> - {upgrade, protocol, cowboy_websocket, Req, <<"success">>}. - -websocket_init(_TransportName, Req, Response) -> - Req2 = cowboy_req:compact(Req), - erlang:send_after(10, self(), send_response), - {ok, Req2, Response}. - -websocket_handle(_Frame, Req, State) -> - {ok, Req, State}. - -websocket_info(send_response, Req, State = Response) - when is_binary(Response) -> - {reply, {text, Response}, Req, State}. - -websocket_terminate(_Reason, _Req, _State) -> - ok. -- cgit v1.2.3