diff options
Diffstat (limited to 'test/rfc7230_SUITE.erl')
-rw-r--r-- | test/rfc7230_SUITE.erl | 77 |
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, |