aboutsummaryrefslogtreecommitdiffstats
path: root/test/spdy_SUITE.erl
diff options
context:
space:
mode:
Diffstat (limited to 'test/spdy_SUITE.erl')
-rw-r--r--test/spdy_SUITE.erl147
1 files changed, 0 insertions, 147 deletions
diff --git a/test/spdy_SUITE.erl b/test/spdy_SUITE.erl
deleted file mode 100644
index c097e53..0000000
--- a/test/spdy_SUITE.erl
+++ /dev/null
@@ -1,147 +0,0 @@
-%% Copyright (c) 2013-2014, 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(spdy_SUITE).
--compile(export_all).
-
--import(ct_helper, [config/2]).
--import(cowboy_test, [gun_open/1]).
--import(cowboy_test, [raw_open/1]).
--import(cowboy_test, [raw_send/2]).
-
-%% ct.
-
-all() ->
- [{group, spdy}].
-
-groups() ->
- [{spdy, [], ct_helper:all(?MODULE)}].
-
-init_per_suite(Config) ->
- case proplists:get_value(ssl_app, ssl:versions()) of
- Version when Version < "5.2.1" ->
- {skip, "No NPN support in SSL application."};
- _ ->
- Dir = config(priv_dir, Config) ++ "/static",
- ct_helper:create_static_dir(Dir),
- [{static_dir, Dir}|Config]
- end.
-
-end_per_suite(Config) ->
- ct_helper:delete_static_dir(config(static_dir, Config)).
-
-init_per_group(Name, Config) ->
- cowboy_test:init_spdy(Name, [
- {env, [{dispatch, init_dispatch(Config)}]}
- ], Config).
-
-end_per_group(Name, _) ->
- cowboy:stop_listener(Name).
-
-%% Dispatch configuration.
-
-init_dispatch(Config) ->
- cowboy_router:compile([
- {"localhost", [
- {"/static/[...]", cowboy_static,
- {dir, config(static_dir, Config)}},
- {"/echo/body", http_echo_body, []},
- {"/chunked", http_chunked, []},
- {"/", http_handler, []}
- ]}
- ]).
-
-%% Convenience functions.
-
-do_get(ConnPid, Host, Path) ->
- StreamRef = gun:get(ConnPid, Path, [{<<"host">>, Host}]),
- {response, IsFin, Status, _} = gun:await(ConnPid, StreamRef),
- {IsFin, Status}.
-
-%% Tests.
-
-check_status(Config) ->
- Tests = [
- {200, nofin, "localhost", "/"},
- {200, nofin, "localhost", "/chunked"},
- {200, nofin, "localhost", "/static/style.css"},
- {400, fin, "bad-host", "/"},
- {400, fin, "localhost", "bad-path"},
- {404, fin, "localhost", "/this/path/does/not/exist"}
- ],
- ConnPid = gun_open(Config),
- _ = [{Status, Fin, Host, Path} = begin
- {IsFin, Ret} = do_get(ConnPid, Host, Path),
- {Ret, IsFin, Host, Path}
- end || {Status, Fin, Host, Path} <- Tests],
- gun:close(ConnPid).
-
-echo_body(Config) ->
- ConnPid = gun_open(Config),
- Body = << 0:800000 >>,
- StreamRef = gun:post(ConnPid, "/echo/body", [
- {<<"content-type">>, "application/octet-stream"}
- ], Body),
- {response, nofin, 200, _} = gun:await(ConnPid, StreamRef),
- {ok, Body} = gun:await_body(ConnPid, StreamRef),
- gun:close(ConnPid).
-
-echo_body_multi(Config) ->
- ConnPid = gun_open(Config),
- BodyChunk = << 0:80000 >>,
- StreamRef = gun:post(ConnPid, "/echo/body", [
- %% @todo I'm still unhappy with this. It shouldn't be required...
- {<<"content-length">>, integer_to_list(byte_size(BodyChunk) * 10)},
- {<<"content-type">>, "application/octet-stream"}
- ]),
- _ = [gun:data(ConnPid, StreamRef, nofin, BodyChunk) || _ <- lists:seq(1, 9)],
- gun:data(ConnPid, StreamRef, fin, BodyChunk),
- {response, nofin, 200, _} = gun:await(ConnPid, StreamRef),
- {ok, << 0:800000 >>} = gun:await_body(ConnPid, StreamRef),
- gun:close(ConnPid).
-
-two_frames_one_packet(Config) ->
- {raw_client, Socket, Transport} = Client = raw_open([
- {opts, [{client_preferred_next_protocols,
- {client, [<<"spdy/3">>], <<"spdy/3">>}}]}
- |Config]),
- Zdef = cow_spdy:deflate_init(),
- Zinf = cow_spdy:inflate_init(),
- ok = raw_send(Client, iolist_to_binary([
- cow_spdy:syn_stream(Zdef, 1, 0, true, false,
- 0, <<"GET">>, <<"https">>, <<"localhost">>,
- <<"/">>, <<"HTTP/1.1">>, []),
- cow_spdy:syn_stream(Zdef, 3, 0, true, false,
- 0, <<"GET">>, <<"https">>, <<"localhost">>,
- <<"/">>, <<"HTTP/1.1">>, [])
- ])),
- {Frame1, Rest1} = spdy_recv(Socket, Transport, <<>>),
- {syn_reply, _, false, <<"200 OK">>, _, _} = cow_spdy:parse(Frame1, Zinf),
- {Frame2, Rest2} = spdy_recv(Socket, Transport, Rest1),
- {data, 1, true, _} = cow_spdy:parse(Frame2, Zinf),
- {Frame3, Rest3} = spdy_recv(Socket, Transport, Rest2),
- {syn_reply, _, false, <<"200 OK">>, _, _} = cow_spdy:parse(Frame3, Zinf),
- {Frame4, <<>>} = spdy_recv(Socket, Transport, Rest3),
- {data, 3, true, _} = cow_spdy:parse(Frame4, Zinf),
- ok.
-
-spdy_recv(Socket, Transport, Acc) ->
- {ok, Data} = Transport:recv(Socket, 0, 5000),
- Data2 = << Acc/binary, Data/bits >>,
- case cow_spdy:split(Data2) of
- false ->
- spdy_recv(Socket, Transport, Data2);
- {true, Frame, Rest} ->
- {Frame, Rest}
- end.