Просмотр исходного кода

Add a test for HTTP handlers loop timeouts

Loïc Hoguin 13 лет назад
Родитель
Сommit
dab6648290
2 измененных файлов с 17 добавлено и 0 удалено
  1. 2 0
      test/http_SUITE.erl
  2. 15 0
      test/http_handler_loop_timeout.erl

+ 2 - 0
test/http_SUITE.erl

@@ -228,6 +228,7 @@ init_dispatch(Config) ->
 			{[<<"simple_post">>], rest_forbidden_resource, [false]},
 			{[<<"nodelete">>], rest_nodelete_resource, []},
 			{[<<"resetags">>], rest_resource_etags, []},
+			{[<<"loop_timeout">>], http_handler_loop_timeout, []},
 			{[], http_handler, []}
 		]}
 	].
@@ -352,6 +353,7 @@ check_status(Config) ->
 		{102, "/long_polling"},
 		{200, "/"},
 		{200, "/simple"},
+		{204, "/loop_timeout"},
 		{400, "/static/%2f"},
 		{400, "/static/%2e"},
 		{400, "/static/%2e%2e"},

+ 15 - 0
test/http_handler_loop_timeout.erl

@@ -0,0 +1,15 @@
+%% Feel free to use, reuse and abuse the code in this file.
+
+-module(http_handler_loop_timeout).
+-export([init/3, info/3, terminate/2]).
+
+init({_, http}, Req, _) ->
+	erlang:send_after(1000, self(), error_timeout),
+	{loop, Req, undefined, 500, hibernate}.
+
+info(error_timeout, Req, State) ->
+	{ok, Req2} = cowboy_http_req:reply(500, Req),
+	{ok, Req2, State}.
+
+terminate(_, _) ->
+	ok.