diff options
author | Loïc Hoguin <[email protected]> | 2019-05-06 12:51:22 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2019-05-06 12:51:22 +0200 |
commit | 1062b83bf10ea0b62f590c6ff06ec7ee398cfdb8 (patch) | |
tree | 9af5b2ccda58f47410d0ea37f40b372acd9a1698 | |
parent | ea7b1bbf9ae26f0dc77d04565f67293776a65f56 (diff) | |
download | ranch-1062b83bf10ea0b62f590c6ff06ec7ee398cfdb8.tar.gz ranch-1062b83bf10ea0b62f590c6ff06ec7ee398cfdb8.tar.bz2 ranch-1062b83bf10ea0b62f590c6ff06ec7ee398cfdb8.zip |
Initial havoc test suite
-rw-r--r-- | Makefile | 9 | ||||
-rw-r--r-- | test/havoc_SUITE.erl | 66 |
2 files changed, 74 insertions, 1 deletions
@@ -16,8 +16,9 @@ LOCAL_DEPS = ssl DOC_DEPS = asciideck -TEST_DEPS = $(if $(CI_ERLANG_MK),ci.erlang.mk) ct_helper +TEST_DEPS = $(if $(CI_ERLANG_MK),ci.erlang.mk) ct_helper havoc dep_ct_helper = git https://github.com/ninenines/ct_helper master +dep_havoc = git https://github.com/ankhers/havoc master # CI configuration. @@ -33,6 +34,12 @@ AUTO_CI_WINDOWS ?= OTP-19+ include erlang.mk +# Don't run the havoc test suite by default. + +ifndef FULL +CT_SUITES := $(filter-out havoc,$(CT_SUITES)) +endif + # Compile options. TEST_ERLC_OPTS += +'{parse_transform, eunit_autoexport}' diff --git a/test/havoc_SUITE.erl b/test/havoc_SUITE.erl new file mode 100644 index 0000000..d47267a --- /dev/null +++ b/test/havoc_SUITE.erl @@ -0,0 +1,66 @@ +%% Copyright (c) 2019, Loïc Hoguin <[email protected]> +%% +%% Permission to use, copy, modify, and/or distribute this software for any +%% purpose with or without fee is hereby granted, provided that the above +%% copyright notice and this permission notice appear in all copies. +%% +%% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +%% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +%% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +%% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +%% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +%% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +-module(havoc_SUITE). +-compile(export_all). +-compile(nowarn_export_all). + +-import(ct_helper, [doc/1]). +-import(ct_helper, [name/0]). + +%% ct. + +all() -> + ct_helper:all(?MODULE). + +init_per_suite(Config) -> + {ok, _} = application:ensure_all_started(ranch), + ok = application:start(havoc), + %% Comment to hide progress reports in the terminal. + application:set_env(kernel, logger_sasl_compatible, true), + ok = application:start(sasl), + %% Enable logging of progress reports. + %% They will only be available in the HTML reports by default. + ok = logger:set_primary_config(level, info), + Config. + +end_per_suite(_) -> + ok = application:stop(sasl), + ok = application:stop(havoc), + ok = application:stop(ranch). + +%% Tests. + +havoc_tcp(_) -> + doc("Start a TCP listener, establish a hundred connections, " + "run havoc, confirm we can still connect."), + %% Start a TCP listener. + Name = name(), + {ok, _} = ranch:start_listener(Name, + ranch_tcp, #{}, + echo_protocol, []), + Port = ranch:get_port(Name), + %% Establish a hundred connections. + _ = [begin + {ok, Socket} = gen_tcp:connect("localhost", Port, [{active, false}]), + Socket + end || _ <- lists:seq(1, 100)], + %% Run Havoc. + havoc:on([{applications, [ranch]}]), + timer:sleep(60000), + havoc:off(), + timer:sleep(1000), + %% Confirm we can still connect. + {ok, _} = gen_tcp:connect("localhost", Port, [{active, false}]), + ok = ranch:stop_listener(Name). |