aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2013-04-12 14:16:59 +0200
committerLoïc Hoguin <[email protected]>2013-04-12 14:32:37 +0200
commit2aabc73045daa1c06d73c76ffc442ee7ebe38d14 (patch)
tree507f2cef335e141227a02a36c933d6567c87b95d /test
parent1eb2bda3041ccc87690d74087011074db6699147 (diff)
downloadcowboy-2aabc73045daa1c06d73c76ffc442ee7ebe38d14.tar.gz
cowboy-2aabc73045daa1c06d73c76ffc442ee7ebe38d14.tar.bz2
cowboy-2aabc73045daa1c06d73c76ffc442ee7ebe38d14.zip
Ensure we can fetch the body in the info/3 function of loop handlers
Diffstat (limited to 'test')
-rw-r--r--test/http_SUITE.erl3
-rw-r--r--test/http_handler_loop_recv.erl18
2 files changed, 21 insertions, 0 deletions
diff --git a/test/http_SUITE.erl b/test/http_SUITE.erl
index 14bba9c..34a7be1 100644
--- a/test/http_SUITE.erl
+++ b/test/http_SUITE.erl
@@ -367,6 +367,7 @@ init_dispatch(Config) ->
{"/patch", rest_patch_resource, []},
{"/resetags", rest_resource_etags, []},
{"/rest_expires", rest_expires, []},
+ {"/loop_recv", http_handler_loop_recv, []},
{"/loop_timeout", http_handler_loop_timeout, []},
{"/", http_handler, []}
]}
@@ -466,6 +467,8 @@ The document has moved
"Set-Cookie: ", HugeCookie, "\r\n\r\n"]},
{200, "\r\n\r\n\r\n\r\n\r\nGET / HTTP/1.1\r\nHost: localhost\r\n\r\n"},
{200, "GET http://proxy/ HTTP/1.1\r\nHost: localhost\r\n\r\n"},
+ {200, <<"POST /loop_recv HTTP/1.1\r\nHost: localhost\r\n"
+ "Content-Length: 100000\r\n\r\n", 0:100000/unit:8 >>},
{400, "\n"},
{400, "Garbage\r\n\r\n"},
{400, "\r\n\r\n\r\n\r\n\r\n\r\n"},
diff --git a/test/http_handler_loop_recv.erl b/test/http_handler_loop_recv.erl
new file mode 100644
index 0000000..4d0a321
--- /dev/null
+++ b/test/http_handler_loop_recv.erl
@@ -0,0 +1,18 @@
+%% Feel free to use, reuse and abuse the code in this file.
+
+-module(http_handler_loop_recv).
+-behaviour(cowboy_loop_handler).
+-export([init/3, info/3, terminate/3]).
+
+init({_, http}, Req, _) ->
+ self() ! recv_timeout,
+ {loop, Req, undefined, 500, hibernate}.
+
+info(recv_timeout, Req, State) ->
+ {ok, Body, Req1} = cowboy_req:body(Req),
+ 100000 = byte_size(Body),
+ {ok, Req2} = cowboy_req:reply(200, Req1),
+ {ok, Req2, State}.
+
+terminate({normal, shutdown}, _, _) ->
+ ok.