diff options
author | Adam Kocoloski <adam@cloudant.com> | 2011-10-04 12:22:45 -0400 |
---|---|---|
committer | Adam Kocoloski <adam@cloudant.com> | 2011-10-04 12:22:45 -0400 |
commit | 4e19639a64d3033e1cc7c22a0b7404d277643c78 (patch) | |
tree | 8056ed80809c30ec4c63c616b285852e048aebc1 /apps/couch/src/test_util.erl | |
parent | 33b60bad036c5268120b0d96f6a4abed6e35b7dc (diff) | |
parent | e77949221f63a011787118637cb549abfbd8e5e8 (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.erl | 28 |
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. |