diff options
author | Loïc Hoguin <[email protected]> | 2015-04-13 11:01:07 +0300 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2015-04-13 11:01:07 +0300 |
commit | a6b364cccba37fb0492d817d0972980ad6ab3551 (patch) | |
tree | 58e955680e338f856139e29fc8b67910845bf654 | |
parent | d5038d46a7546ff6f37fddfa097e1b595bc13f82 (diff) | |
download | gun-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.erl | 26 | ||||
-rw-r--r-- | test/spdy_server.erl | 3 |
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). |