aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2015-04-13 11:01:07 +0300
committerLoïc Hoguin <[email protected]>2015-04-13 11:01:07 +0300
commita6b364cccba37fb0492d817d0972980ad6ab3551 (patch)
tree58e955680e338f856139e29fc8b67910845bf654
parentd5038d46a7546ff6f37fddfa097e1b595bc13f82 (diff)
downloadgun-a6b364cccba37fb0492d817d0972980ad6ab3551.tar.gz
gun-a6b364cccba37fb0492d817d0972980ad6ab3551.tar.bz2
gun-a6b364cccba37fb0492d817d0972980ad6ab3551.zip
Add more SPDY tests
One of the test is incomplete due to a missing window_update building function in cowlib.
-rw-r--r--test/spdy_SUITE.erl26
-rw-r--r--test/spdy_server.erl3
2 files changed, 29 insertions, 0 deletions
diff --git a/test/spdy_SUITE.erl b/test/spdy_SUITE.erl
index c1ae1ba..3f2541f 100644
--- a/test/spdy_SUITE.erl
+++ b/test/spdy_SUITE.erl
@@ -203,3 +203,29 @@ no_sending_frames_after_flag_fin(_) ->
end,
wait(),
[{syn_stream, _, _, _, _, _, _, _, _, _, _, _}] = spdy_server:stop(ServerPid).
+
+allow_window_update_after_flag_fin(_) ->
+ doc("WINDOW_UPDATE is allowed when the stream is half-closed. (spdy-protocol-draft3-1 2.3.6)"),
+ {ok, ServerPid, Port} = spdy_server:start_link(),
+ {ok, ConnPid} = gun:open("localhost", Port, #{transport=>ssl}),
+ {ok, spdy} = gun:await_up(ConnPid),
+ _ = gun:get(ConnPid, "/"),
+ spdy_server:send(ServerPid, [
+ {window_update, 1, 1024}
+ ]),
+ wait(),
+ [{syn_stream, _, _, _, _, _, _, _, _, _, _, _}] = spdy_server:stop(ServerPid).
+
+reject_data_on_half_closed_stream(_) ->
+ doc("Data frames sent on a half-closed stream must be rejected "
+ "with a STREAM_ALREADY_CLOSED stream error. (spdy-protocol-draft3-1 2.3.6)"),
+ {ok, ServerPid, Port} = spdy_server:start_link(),
+ {ok, ConnPid} = gun:open("localhost", Port, #{transport=>ssl}),
+ {ok, spdy} = gun:await_up(ConnPid),
+ _ = gun:get(ConnPid, "/"),
+ spdy_server:send(ServerPid, [
+ {syn_reply, 1, true, <<"200">>, <<"HTTP/1.1">>, []},
+ {data, 1, true, <<"Hello world!">>}
+ ]),
+ wait(),
+ [_, {rst_stream, 1, stream_already_closed}] = spdy_server:stop(ServerPid).
diff --git a/test/spdy_server.erl b/test/spdy_server.erl
index 10ef067..2847d33 100644
--- a/test/spdy_server.erl
+++ b/test/spdy_server.erl
@@ -113,6 +113,9 @@ do_send([{syn_stream, StreamID, AssocToStreamID, IsFin, IsUnidirectional, Priori
do_send([{syn_reply, StreamID, IsFin, Status, Version, Headers}|Tail], Socket, Zdef) ->
ssl:send(Socket, cow_spdy:syn_reply(Zdef, StreamID, IsFin, Status, Version, Headers)),
do_send(Tail, Socket, Zdef);
+do_send([{window_update, StreamID, DeltaWindowSize}|Tail], Socket, Zdef) ->
+%% @todo ssl:send(Socket, cow_spdy:window_update(StreamID, DeltaWindowSize)),
+ do_send(Tail, Socket, Zdef);
do_send([{data, StreamID, IsFin, Data}|Tail], Socket, Zdef) ->
ssl:send(Socket, cow_spdy:data(StreamID, IsFin, Data)),
do_send(Tail, Socket, Zdef).