You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

74 lines
2.9 KiB

%%% File : ibrowse_test.erl
%%% Author : Chandrashekhar Mullaparthi <chandrashekhar.mullaparthi@t-mobile.co.uk>
%%% Description : Test ibrowse
%%% Created : 14 Oct 2003 by Chandrashekhar Mullaparthi <chandrashekhar.mullaparthi@t-mobile.co.uk>
-module(ibrowse_test).
-vsn('$Id: ibrowse_test.erl,v 1.1 2005/05/05 22:28:28 chandrusf Exp $ ').
-compile(export_all).
-import(ibrowse_http_client, [printable_date/0]).
send_reqs(Url, NumWorkers, NumReqsPerWorker) ->
proc_lib:spawn(?MODULE, send_reqs_1, [Url, NumWorkers, NumReqsPerWorker]).
send_reqs_1(Url, NumWorkers, NumReqsPerWorker) ->
process_flag(trap_exit, true),
Pids = lists:map(fun(_X) ->
proc_lib:spawn_link(?MODULE, do_send_req, [Url, NumReqsPerWorker, self()])
end, lists:seq(1,NumWorkers)),
put(num_reqs_per_worker, NumReqsPerWorker),
do_wait(Pids, now(), printable_date(), 0, 0).
do_wait([], _StartNow, StartTime, NumSucc, NumErrs) ->
io:format("~n~nDone...~nStartTime -> ~s~n", [StartTime]),
io:format("EndTime -> ~s~n", [printable_date()]),
io:format("NumSucc -> ~p~n", [NumSucc]),
io:format("NumErrs -> ~p~n", [NumErrs]);
do_wait(Pids, StartNow, StartTime, NumSucc, NumErrs) ->
receive
{done, From, _Time, {ChildNumSucc, ChildNumFail}} ->
do_wait(Pids--[From], StartNow, StartTime, NumSucc+ChildNumSucc, NumErrs+ChildNumFail);
{'EXIT',_, normal} ->
do_wait(Pids, StartNow, StartTime, NumSucc, NumErrs);
{'EXIT', From, _Reason} ->
do_wait(Pids--[From], StartNow, StartTime, NumSucc, NumErrs + get(num_reqs_per_worker))
end.
do_send_req(Url, NumReqs, Parent) ->
StartTime = now(),
Res = do_send_req_1(Url, NumReqs, {0, 0}),
Parent ! {done, self(), StartTime, Res}.
do_send_req_1(_Url, 0, {NumSucc, NumFail}) ->
{NumSucc, NumFail};
do_send_req_1(Url, NumReqs, {NumSucc, NumFail}) ->
case ibrowse:send_req(Url, [], get, [], [], 10000) of
{ok, _Status, _Headers, _Body} ->
do_send_req_1(Url, NumReqs-1, {NumSucc+1, NumFail});
_Err ->
do_send_req_1(Url, NumReqs-1, {NumSucc, NumFail+1})
end.
drv_ue_test() ->
drv_ue_test(lists:duplicate(1024, 127)).
drv_ue_test(Data) ->
[{port, Port}| _] = ets:lookup(ibrowse_table, port),
% erl_ddll:unload_driver("ibrowse_drv"),
% timer:sleep(1000),
% erl_ddll:load_driver("../priv", "ibrowse_drv"),
% Port = open_port({spawn, "ibrowse_drv"}, []),
{Time, Res} = timer:tc(ibrowse_lib, drv_ue, [Data, Port]),
io:format("Time -> ~p~n", [Time]),
io:format("Data Length -> ~p~n", [length(Data)]),
io:format("Res Length -> ~p~n", [length(Res)]).
% io:format("Result -> ~s~n", [Res]).
ue_test() ->
ue_test(lists:duplicate(1024, $?)).
ue_test(Data) ->
{Time, Res} = timer:tc(ibrowse_lib, url_encode, [Data]),
io:format("Time -> ~p~n", [Time]),
io:format("Data Length -> ~p~n", [length(Data)]),
io:format("Res Length -> ~p~n", [length(Res)]).
% io:format("Result -> ~s~n", [Res]).