Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

74 linhas
2.9 KiB

  1. %%% File : ibrowse_test.erl
  2. %%% Author : Chandrashekhar Mullaparthi <chandrashekhar.mullaparthi@t-mobile.co.uk>
  3. %%% Description : Test ibrowse
  4. %%% Created : 14 Oct 2003 by Chandrashekhar Mullaparthi <chandrashekhar.mullaparthi@t-mobile.co.uk>
  5. -module(ibrowse_test).
  6. -vsn('$Id: ibrowse_test.erl,v 1.1 2005/05/05 22:28:28 chandrusf Exp $ ').
  7. -compile(export_all).
  8. -import(ibrowse_http_client, [printable_date/0]).
  9. send_reqs(Url, NumWorkers, NumReqsPerWorker) ->
  10. proc_lib:spawn(?MODULE, send_reqs_1, [Url, NumWorkers, NumReqsPerWorker]).
  11. send_reqs_1(Url, NumWorkers, NumReqsPerWorker) ->
  12. process_flag(trap_exit, true),
  13. Pids = lists:map(fun(_X) ->
  14. proc_lib:spawn_link(?MODULE, do_send_req, [Url, NumReqsPerWorker, self()])
  15. end, lists:seq(1,NumWorkers)),
  16. put(num_reqs_per_worker, NumReqsPerWorker),
  17. do_wait(Pids, now(), printable_date(), 0, 0).
  18. do_wait([], _StartNow, StartTime, NumSucc, NumErrs) ->
  19. io:format("~n~nDone...~nStartTime -> ~s~n", [StartTime]),
  20. io:format("EndTime -> ~s~n", [printable_date()]),
  21. io:format("NumSucc -> ~p~n", [NumSucc]),
  22. io:format("NumErrs -> ~p~n", [NumErrs]);
  23. do_wait(Pids, StartNow, StartTime, NumSucc, NumErrs) ->
  24. receive
  25. {done, From, _Time, {ChildNumSucc, ChildNumFail}} ->
  26. do_wait(Pids--[From], StartNow, StartTime, NumSucc+ChildNumSucc, NumErrs+ChildNumFail);
  27. {'EXIT',_, normal} ->
  28. do_wait(Pids, StartNow, StartTime, NumSucc, NumErrs);
  29. {'EXIT', From, _Reason} ->
  30. do_wait(Pids--[From], StartNow, StartTime, NumSucc, NumErrs + get(num_reqs_per_worker))
  31. end.
  32. do_send_req(Url, NumReqs, Parent) ->
  33. StartTime = now(),
  34. Res = do_send_req_1(Url, NumReqs, {0, 0}),
  35. Parent ! {done, self(), StartTime, Res}.
  36. do_send_req_1(_Url, 0, {NumSucc, NumFail}) ->
  37. {NumSucc, NumFail};
  38. do_send_req_1(Url, NumReqs, {NumSucc, NumFail}) ->
  39. case ibrowse:send_req(Url, [], get, [], [], 10000) of
  40. {ok, _Status, _Headers, _Body} ->
  41. do_send_req_1(Url, NumReqs-1, {NumSucc+1, NumFail});
  42. _Err ->
  43. do_send_req_1(Url, NumReqs-1, {NumSucc, NumFail+1})
  44. end.
  45. drv_ue_test() ->
  46. drv_ue_test(lists:duplicate(1024, 127)).
  47. drv_ue_test(Data) ->
  48. [{port, Port}| _] = ets:lookup(ibrowse_table, port),
  49. % erl_ddll:unload_driver("ibrowse_drv"),
  50. % timer:sleep(1000),
  51. % erl_ddll:load_driver("../priv", "ibrowse_drv"),
  52. % Port = open_port({spawn, "ibrowse_drv"}, []),
  53. {Time, Res} = timer:tc(ibrowse_lib, drv_ue, [Data, Port]),
  54. io:format("Time -> ~p~n", [Time]),
  55. io:format("Data Length -> ~p~n", [length(Data)]),
  56. io:format("Res Length -> ~p~n", [length(Res)]).
  57. % io:format("Result -> ~s~n", [Res]).
  58. ue_test() ->
  59. ue_test(lists:duplicate(1024, $?)).
  60. ue_test(Data) ->
  61. {Time, Res} = timer:tc(ibrowse_lib, url_encode, [Data]),
  62. io:format("Time -> ~p~n", [Time]),
  63. io:format("Data Length -> ~p~n", [length(Data)]),
  64. io:format("Res Length -> ~p~n", [length(Res)]).
  65. % io:format("Result -> ~s~n", [Res]).