From 7a213b6a95357c5304e9d9a2a52930882bf8305e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Sun, 30 Apr 2017 17:09:21 +0200 Subject: Add missing gun_SUITE test suite Forgot to commit it earlier. My bad! --- test/gun_SUITE.erl | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 test/gun_SUITE.erl diff --git a/test/gun_SUITE.erl b/test/gun_SUITE.erl new file mode 100644 index 0000000..c62c600 --- /dev/null +++ b/test/gun_SUITE.erl @@ -0,0 +1,93 @@ +%% Copyright (c) 2017, 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(gun_SUITE). +-compile(export_all). + +-import(ct_helper, [doc/1]). + +all() -> + ct_helper:all(?MODULE). + +connect_timeout(_) -> + doc("Ensure an integer value for connect_timeout is accepted."), + {ok, Pid} = gun:open("localhost", 12345, #{connect_timeout => 1000, retry => 0}), + Ref = monitor(process, Pid), + receive + {'DOWN', Ref, process, Pid, {gone, _}} -> + ok + after 5000 -> + error(timeout) + end. + +connect_timeout_infinity(_) -> + doc("Ensure infinity for connect_timeout is accepted."), + {ok, Pid} = gun:open("localhost", 12345, #{connect_timeout => infinity, retry => 0}), + Ref = monitor(process, Pid), + receive + {'DOWN', Ref, process, Pid, {gone, _}} -> + ok + after 5000 -> + error(timeout) + end. + +gone_reason(_) -> + doc("The last connection failure must be propagated."), + {ok, Pid} = gun:open("localhost", 12345, #{retry => 0}), + Ref = monitor(process, Pid), + receive + {'DOWN', Ref, process, Pid, {gone, econnrefused}} -> + ok + after 200 -> + error(timeout) + end. + +retry_0(_) -> + doc("Ensure Gun gives up immediately with retry=0."), + {ok, Pid} = gun:open("localhost", 12345, #{retry => 0, retry_timeout => 500}), + Ref = monitor(process, Pid), + receive + {'DOWN', Ref, process, Pid, {gone, _}} -> + ok + after 200 -> + error(timeout) + end. + +retry_1(_) -> + doc("Ensure Gun gives up with retry=1."), + {ok, Pid} = gun:open("localhost", 12345, #{retry => 1, retry_timeout => 500}), + Ref = monitor(process, Pid), + receive + {'DOWN', Ref, process, Pid, {gone, _}} -> + ok + after 700 -> + error(timeout) + end. + +retry_timeout(_) -> + doc("Ensure the retry_timeout value is enforced."), + {ok, Pid} = gun:open("localhost", 12345, #{retry => 1, retry_timeout => 1000}), + Ref = monitor(process, Pid), + receive + {'DOWN', Ref, process, Pid, {gone, _}} -> + error(gone_too_early) + after 800 -> + ok + end, + receive + {'DOWN', Ref, process, Pid, {gone, _}} -> + ok + after 400 -> + error(gone_too_late) + end. -- cgit v1.2.3