Skip to content

Commit

Permalink
add an example to test multiple connections over a proxy.
Browse files Browse the repository at this point in the history
  • Loading branch information
benoitc committed Apr 18, 2014
1 parent 3aba4c0 commit f0dc107
Showing 1 changed file with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions examples/test_multiple_proxy.erl
@@ -0,0 +1,52 @@
#!/usr/bin/env escript
%% -*- erlang -*-
%%! -pa ./ebin -pa ./deps/mimetypes/ebin
%%
%%
%%
%%
-define(MAX, 100).
-define(PROXY_OPTS, {"127.0.0.1", 8888}).

wait_request() ->
receive
start -> ok
end.

request(WaitPid) ->
wait_request(),
Method = get,
Url = <<"https://friendpaste.com">>,
Headers = [{<<"Connection">>, <<"keep-alive">>}],
Options = [{pool, default}, {proxy, ?PROXY_OPTS}],
{ok, _, _Headers, Ref} = hackney:request(Method, Url, Headers, <<>>, Options),
{ok, _} = hackney:body(Ref),
WaitPid ! ack.

wait(100) ->
io:format("~n", []),
ok;
wait(N) ->
receive
ack ->
io:format(".", []),
wait(N+1)
after 15000 ->
PoolSize = hackney_pool:count(default),
io:format("~ntimeout ~p/~p done. ~p in the pool.~n",
[N, ?MAX, PoolSize])
end.


main(_) ->
hackney:start(),
hackney_pool:start_pool(default, []),
io:format("processing ", []),
Self = self(),
Pids = lists:foldr(fun(_, Acc) ->
Pid = spawn(fun() -> timer:sleep(100), request(Self) end),
[Pid | Acc]
end, [], lists:seq(1, ?MAX)),

[Pid ! start || Pid <- Pids],
wait(0).

0 comments on commit f0dc107

Please sign in to comment.