aboutsummaryrefslogtreecommitdiffstats
path: root/test/rfc7230_SUITE.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2019-01-03 22:12:42 +0100
committerLoïc Hoguin <[email protected]>2019-01-03 22:12:42 +0100
commitfbe58ec837cc3c84b08d701c82b95222738c775f (patch)
treed0c34202fefe8c7aa8edf12128f03c360c320bc1 /test/rfc7230_SUITE.erl
parent8a30f96cf19f9104e3ae8df5f85df33b66b5bfc2 (diff)
downloadgun-fbe58ec837cc3c84b08d701c82b95222738c775f.tar.gz
gun-fbe58ec837cc3c84b08d701c82b95222738c775f.tar.bz2
gun-fbe58ec837cc3c84b08d701c82b95222738c775f.zip
Consolidate origin server test helpers
Also fixes an issue with switch_transport introduced when converting the Gun process to gen_statem.
Diffstat (limited to 'test/rfc7230_SUITE.erl')
-rw-r--r--test/rfc7230_SUITE.erl77
1 files changed, 4 insertions, 73 deletions
diff --git a/test/rfc7230_SUITE.erl b/test/rfc7230_SUITE.erl
index f6e077b..c7aa63d 100644
--- a/test/rfc7230_SUITE.erl
+++ b/test/rfc7230_SUITE.erl
@@ -16,82 +16,13 @@
-compile(export_all).
-compile(nowarn_export_all).
--ifdef(OTP_RELEASE).
--compile({nowarn_deprecated_function, [{ssl, ssl_accept, 2}]}).
--endif.
-
-import(ct_helper, [doc/1]).
+-import(gun_test, [init_origin/2]).
+-import(gun_test, [receive_from/1]).
all() ->
ct_helper:all(?MODULE).
-%% Server helpers. (Taken from rfc7231_SUITE.)
-
-do_origin_start(Transport) ->
- do_origin_start(Transport, http).
-
-do_origin_start(Transport, Protocol) ->
- Self = self(),
- Pid = spawn_link(fun() ->
- case Transport of
- tcp ->
- do_origin_init_tcp(Self);
- tls when Protocol =:= http ->
- do_origin_init_tls(Self);
- tls when Protocol =:= http2 ->
- do_origin_init_tls_h2(Self)
- end
- end),
- Port = do_receive(Pid),
- {ok, Pid, Port}.
-
-do_origin_init_tcp(Parent) ->
- {ok, ListenSocket} = gen_tcp:listen(0, [binary, {active, false}]),
- {ok, {_, Port}} = inet:sockname(ListenSocket),
- Parent ! {self(), Port},
- {ok, ClientSocket} = gen_tcp:accept(ListenSocket, 5000),
- do_origin_loop(Parent, ClientSocket, gen_tcp).
-
-do_origin_init_tls(Parent) ->
- Opts = ct_helper:get_certs_from_ets(),
- {ok, ListenSocket} = ssl:listen(0, [binary, {active, false}|Opts]),
- {ok, {_, Port}} = ssl:sockname(ListenSocket),
- Parent ! {self(), Port},
- {ok, ClientSocket} = ssl:transport_accept(ListenSocket, 5000),
- ok = ssl:ssl_accept(ClientSocket, 5000),
- do_origin_loop(Parent, ClientSocket, ssl).
-
-do_origin_init_tls_h2(Parent) ->
- Opts = ct_helper:get_certs_from_ets(),
- {ok, ListenSocket} = ssl:listen(0, [binary, {active, false},
- {alpn_preferred_protocols, [<<"h2">>]}|Opts]),
- {ok, {_, Port}} = ssl:sockname(ListenSocket),
- Parent ! {self(), Port},
- {ok, ClientSocket} = ssl:transport_accept(ListenSocket, 5000),
- ok = ssl:ssl_accept(ClientSocket, 5000),
- {ok, <<"h2">>} = ssl:negotiated_protocol(ClientSocket),
- do_origin_loop(Parent, ClientSocket, ssl).
-
-do_origin_loop(Parent, ClientSocket, ClientTransport) ->
- case ClientTransport:recv(ClientSocket, 0, 1000) of
- {ok, Data} ->
- Parent ! {self(), Data},
- do_origin_loop(Parent, ClientSocket, ClientTransport);
- {error, closed} ->
- ok
- end.
-
-do_receive(Pid) ->
- do_receive(Pid, 1000).
-
-do_receive(Pid, Timeout) ->
- receive
- {Pid, Msg} ->
- Msg
- after Timeout ->
- error(timeout)
- end.
-
%% Tests.
host_default_port_http(_) ->
@@ -111,7 +42,7 @@ host_other_port_https(_) ->
do_host_port(tls, 80, <<":80">>).
do_host_port(Transport, DefaultPort, HostHeaderPort) ->
- {ok, OriginPid, OriginPort} = do_origin_start(Transport, http),
+ {ok, OriginPid, OriginPort} = init_origin(Transport, http),
{ok, ConnPid} = gun:open("localhost", OriginPort, #{transport => Transport}),
{ok, http} = gun:await_up(ConnPid),
%% Change the origin's port in the state to trigger the default port behavior.
@@ -120,7 +51,7 @@ do_host_port(Transport, DefaultPort, HostHeaderPort) ->
end, 5000),
%% Confirm the default port is not sent in the request.
_ = gun:get(ConnPid, "/"),
- Data = do_receive(OriginPid),
+ Data = receive_from(OriginPid),
Lines = binary:split(Data, <<"\r\n">>, [global]),
[<<"host: localhost", Rest/bits>>] = [L || <<"host: ", _/bits>> = L <- Lines],
HostHeaderPort = Rest,