From 1062b83bf10ea0b62f590c6ff06ec7ee398cfdb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 6 May 2019 12:51:22 +0200 Subject: Initial havoc test suite --- test/havoc_SUITE.erl | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 test/havoc_SUITE.erl (limited to 'test/havoc_SUITE.erl') 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 +%% +%% 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). -- cgit v1.2.3