summaryrefslogtreecommitdiff
path: root/apps/couch/src/test_util.erl
diff options
context:
space:
mode:
authorAdam Kocoloski <adam@cloudant.com>2011-10-04 12:22:45 -0400
committerAdam Kocoloski <adam@cloudant.com>2011-10-04 12:22:45 -0400
commit4e19639a64d3033e1cc7c22a0b7404d277643c78 (patch)
tree8056ed80809c30ec4c63c616b285852e048aebc1 /apps/couch/src/test_util.erl
parent33b60bad036c5268120b0d96f6a4abed6e35b7dc (diff)
parente77949221f63a011787118637cb549abfbd8e5e8 (diff)
Merge remote branch 'apache/1.1.x'
Diffstat (limited to 'apps/couch/src/test_util.erl')
-rw-r--r--apps/couch/src/test_util.erl28
1 files changed, 28 insertions, 0 deletions
diff --git a/apps/couch/src/test_util.erl b/apps/couch/src/test_util.erl
index 55b95139..f086bf94 100644
--- a/apps/couch/src/test_util.erl
+++ b/apps/couch/src/test_util.erl
@@ -14,6 +14,7 @@
-export([init_code_path/0]).
-export([source_file/1, build_file/1, config_files/0]).
+-export([request/3, request/4]).
init_code_path() ->
code:load_abs("apps/couch/test/etap/etap").
@@ -31,3 +32,30 @@ config_files() ->
source_file("test/etap/random_port.ini")
].
+request(Url, Headers, Method) ->
+ request(Url, Headers, Method, []).
+
+request(Url, Headers, Method, Body) ->
+ request(Url, Headers, Method, Body, 3).
+
+request(_Url, _Headers, _Method, _Body, 0) ->
+ {error, request_failed};
+request(Url, Headers, Method, Body, N) ->
+ case code:is_loaded(ibrowse) of
+ false ->
+ {ok, _} = ibrowse:start();
+ _ ->
+ ok
+ end,
+ case ibrowse:send_req(Url, Headers, Method, Body) of
+ {ok, Code0, RespHeaders, RespBody0} ->
+ Code = list_to_integer(Code0),
+ RespBody = iolist_to_binary(RespBody0),
+ {ok, Code, RespHeaders, RespBody};
+ {error, {'EXIT', {normal, _}}} ->
+ % Connection closed right after a successful request that
+ % used the same connection.
+ request(Url, Headers, Method, Body, N - 1);
+ Error ->
+ Error
+ end.