You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2019/04/05 21:25:17 UTC

[couchdb-ibrowse] 11/20: add erlang 19, 20 for test

This is an automated email from the ASF dual-hosted git repository.

jaydoane pushed a commit to branch handle-dead-ibrowse_lb-pids
in repository https://gitbox.apache.org/repos/asf/couchdb-ibrowse.git

commit 02be390f668175f8d4e0cbc218e97c55bbb3caa3
Author: getong <ge...@users.noreply.github.com>
AuthorDate: Fri Sep 1 17:15:04 2017 +0800

    add erlang 19, 20 for test
---
 .travis.yml                  |  2 ++
 rebar.config                 | 10 +++++++++-
 src/ibrowse.erl              | 16 ++++++++++++++++
 test/ibrowse_load_test.erl   | 34 +++++++++++++++++++++++++++++++---
 test/ibrowse_test_server.erl |  8 +++++++-
 test/ibrowse_tests.erl       |  2 +-
 6 files changed, 66 insertions(+), 6 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 2dd9ad6..3993bf2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,6 +7,8 @@ otp_release:
    - 18.0
    - 18.1
    - 18.2.1
+   - 19.3
+   - 20.0
 before_script:
   - "./bootstrap_travis.sh"
 script: "./rebar3 eunit"
diff --git a/rebar.config b/rebar.config
index 4485a22..eaa892c 100644
--- a/rebar.config
+++ b/rebar.config
@@ -1,3 +1,11 @@
-{erl_opts, [debug_info, warnings_as_errors, warn_unused_vars, nowarn_shadow_vars, warn_unused_import]}.
+{erl_opts, [
+	   debug_info,
+	   warnings_as_errors,
+	   warn_unused_vars,
+	   nowarn_shadow_vars,
+	   warn_unused_import,
+	   {platform_define, "18|19|^2", new_rand},
+	   {platform_define, "^2", ets_ref}
+	   ]}.
 {xref_checks, [undefined_function_calls, deprecated_function_calls]}.
 {eunit_opts, [verbose]}.
diff --git a/src/ibrowse.erl b/src/ibrowse.erl
index 648c698..2066799 100644
--- a/src/ibrowse.erl
+++ b/src/ibrowse.erl
@@ -679,6 +679,21 @@ all_trace_off() ->
 %% @doc Shows some internal information about load balancing. Info
 %% about workers spawned using spawn_worker_process/2 or
 %% spawn_link_worker_process/2 is not included.
+-ifdef(ets_ref).
+show_dest_status() ->
+    io:format("~-40.40s | ~-5.5s | ~-10.10s | ~s~n",
+              ["Server:port", "ETS", "Num conns", "LB Pid"]),
+    io:format("~80.80.=s~n", [""]),
+    Metrics = get_metrics(),
+    lists:foreach(
+      fun({Host, Port, {Lb_pid, _, Tid, Size, _}}) ->
+              io:format("~40.40s | ~-5.5s | ~-5.5s | ~p~n",
+                        [Host ++ ":" ++ integer_to_list(Port),
+                         ref_to_list(Tid),
+                         integer_to_list(Size), 
+                         Lb_pid])
+      end, Metrics).
+-else.
 show_dest_status() ->
     io:format("~-40.40s | ~-5.5s | ~-10.10s | ~s~n",
               ["Server:port", "ETS", "Num conns", "LB Pid"]),
@@ -692,6 +707,7 @@ show_dest_status() ->
                          integer_to_list(Size), 
                          Lb_pid])
       end, Metrics).
+-endif.
 
 show_dest_status(Url) ->                                          
     #url{host = Host, port = Port} = ibrowse_lib:parse_url(Url),
diff --git a/test/ibrowse_load_test.erl b/test/ibrowse_load_test.erl
index eef0aaf..076c46b 100644
--- a/test/ibrowse_load_test.erl
+++ b/test/ibrowse_load_test.erl
@@ -1,5 +1,33 @@
 -module(ibrowse_load_test).
--compile(export_all).
+%%-compile(export_all).
+-export([
+         random_seed/0,
+         start/3,
+         query_state/0,
+         shutdown/0,
+         start_1/3,
+         calculate_timings/0,
+         get_mmv/2,
+         spawn_workers/2,
+         spawn_workers/4,
+         wait_for_workers/1,
+         worker_loop/2,
+         update_unknown_counter/2
+        ]).
+
+-ifdef(new_rand).
+
+-define(RAND, rand).
+random_seed() ->
+	ok.
+
+-else.
+
+-define(RAND, random).
+random_seed() ->
+	random:seed(os:timestamp()).
+
+-endif.
 
 -define(ibrowse_load_test_counters, ibrowse_load_test_counters).
 
@@ -95,7 +123,7 @@ spawn_workers(0, _Num_requests, _Parent, Acc) ->
     lists:reverse(Acc);
 spawn_workers(Num_workers, Num_requests, Parent, Acc) ->
     Pid_ref = spawn_monitor(fun() ->
-                                    random:seed(os:timestamp()),
+                                    random_seed(),
                                     case catch worker_loop(Parent, Num_requests) of
                                         {'EXIT', Rsn} ->
                                             io:format("Worker crashed with reason: ~p~n", [Rsn]);
@@ -135,7 +163,7 @@ wait_for_workers([{Pid, Pid_ref} | T] = Pids) ->
 worker_loop(Parent, 0) ->
     Parent ! {done, self()};
 worker_loop(Parent, N) ->
-    Delay = random:uniform(100),
+    Delay = ?RAND:uniform(100),
     Url = case Delay rem 10 of
               %% Change 10 to some number between 0-9 depending on how
               %% much chaos you want to introduce into the server
diff --git a/test/ibrowse_test_server.erl b/test/ibrowse_test_server.erl
index f30e895..3ba7c67 100644
--- a/test/ibrowse_test_server.erl
+++ b/test/ibrowse_test_server.erl
@@ -11,6 +11,12 @@
          get_conn_pipeline_depth/0
         ]).
 
+-ifdef(new_rand).
+-define(RAND, rand).
+-else.
+-define(RAND, random).
+-endif.
+
 -record(request, {method, uri, version, headers = [], body = [], state}).
 
 -define(dec2hex(X), erlang:integer_to_list(X, 16)).
@@ -290,7 +296,7 @@ process_request(Sock, Sock_type, Req) ->
     do_trace("Recvd req: ~p~n", [Req]),
     Resp = <<"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n">>,
     do_send(Sock, Sock_type, Resp),
-    timer:sleep(random:uniform(100)).
+    timer:sleep(?RAND:uniform(100)).
 
 do_send(Sock, tcp, Resp) ->
     gen_tcp:send(Sock, Resp);
diff --git a/test/ibrowse_tests.erl b/test/ibrowse_tests.erl
index d3b07b1..594b8ed 100644
--- a/test/ibrowse_tests.erl
+++ b/test/ibrowse_tests.erl
@@ -17,7 +17,7 @@
 -define(LONG_TIMEOUT_MS, 30000).
 -define(PAUSE_FOR_CONNECTIONS_MS, 2000).
 
--compile(export_all).
+%%-compile(export_all).
 
 setup() ->
     application:start(crypto),