Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
0521-megaco-test-Tweaked-load-suite.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0521-megaco-test-Tweaked-load-suite.patch of Package erlang
From 918165d00a81170bcf17ec26eaaaded42db42aae Mon Sep 17 00:00:00 2001 From: Micael Karlberg <bmk@erlang.org> Date: Tue, 16 Mar 2021 12:19:50 +0100 Subject: [PATCH 1/4] [megaco|test] Tweaked load suite Actually what was tweaked was the start of the utility mgc and mg used by "all" megaco test suites. Instead of using spawn_link, use spawn_monitor. A problem detected in one of the load test cases eaddrinuse was supposed to be catched (and converted to a skip) in the mgc start (there was code for it) but was not. Instead it was catched at the top level, as an error. --- lib/megaco/test/megaco_load_SUITE.erl | 4 +- lib/megaco/test/megaco_test_mg.erl | 36 ++++++++--------- lib/megaco/test/megaco_test_mgc.erl | 57 ++++++++++++++++++++++----- 3 files changed, 65 insertions(+), 32 deletions(-) diff --git a/lib/megaco/test/megaco_load_SUITE.erl b/lib/megaco/test/megaco_load_SUITE.erl index 876e16ecfb..d033e137ec 100644 --- a/lib/megaco/test/megaco_load_SUITE.erl +++ b/lib/megaco/test/megaco_load_SUITE.erl @@ -60,8 +60,8 @@ -define(SINGLE_USER_LOAD_NUM_REQUESTS, 1000). -define(MULTI_USER_LOAD_NUM_REQUESTS, 1000). --define(MGC_START(Pid, Mid, ET, Conf, Verb), - megaco_test_mgc:start(Pid, Mid, ET, +-define(MGC_START(Node, Mid, ET, Conf, Verb), + megaco_test_mgc:start(Node, Mid, ET, [{megaco_trace, false}] ++ Conf, Verb)). -define(MGC_STOP(Pid), megaco_test_mgc:stop(Pid)). -define(MGC_USER_INFO(Pid,Tag), megaco_test_mgc:user_info(Pid,Tag)). diff --git a/lib/megaco/test/megaco_test_mg.erl b/lib/megaco/test/megaco_test_mg.erl index 5979466785..e84adc7de6 100644 --- a/lib/megaco/test/megaco_test_mg.erl +++ b/lib/megaco/test/megaco_test_mg.erl @@ -110,32 +110,28 @@ start(Node, Mid, Encoding, Transport, Conf, Verbosity) -> case (catch mg(Self, Verbosity, Config)) of {'EXIT', Reason} -> e("LOADER(~p,~p) terminating with exit" - "~n ~p", [self(), node(), Reason]), + "~n ~p", [Self, node(), Reason]), exit(Reason); Else -> i("LOADER(~p,~p) terminating with" - "~n ~p", [self(), node(), Else]), + "~n ~p", [Self, node(), Else]), Else end end, - true = erlang:monitor_node(Node, true), - Pid = spawn_link(Node, Fun), - %% Pid = spawn_link(Node, ?MODULE, mg, [self(), Verbosity, Config]), - MonRef = (catch erlang:monitor(process, Pid)), - NodePing = net_adm:ping(Node), - ProcInfo = (catch proc_info(Pid)), - i("start -> " - "~n self(): ~p" - "~n node(): ~p" - "~n net_adm:ping(~p): ~p" - "~n Loader: ~p" - "~n Monitor ref: ~p" - "~n Process info: ~p", - [self(), node(), - Node, NodePing, - Pid, - MonRef, ProcInfo]), - await_started(Node, MonRef, Pid). + true = erlang:monitor_node(Node, true), + {Pid, MRef} = spawn_monitor(Node, Fun), + NodePing = net_adm:ping(Node), + ProcInfo = (catch proc_info(Pid)), + i("start mg[~p] -> ~p" + "~n self(): ~p" + "~n node(): ~p" + "~n Node ping: ~p" + "~n Loader: ~p" + "~n Monitor ref: ~p" + "~n Process info: ~p", + [Node, Pid, + Self, node(), NodePing, Pid, MRef, ProcInfo]), + await_started(Node, MRef, Pid). proc_info(Pid) -> rpc:call(node(Pid), erlang, process_info, [Pid]). diff --git a/lib/megaco/test/megaco_test_mgc.erl b/lib/megaco/test/megaco_test_mgc.erl index 1204dbba07..a7d0731b0f 100644 --- a/lib/megaco/test/megaco_test_mgc.erl +++ b/lib/megaco/test/megaco_test_mgc.erl @@ -93,10 +93,27 @@ start(Node, Mid, ET, Conf, Verbosity) -> d("start mgc[~p]: ~p" "~n ET: ~p" "~n Conf: ~p", [Node, Mid, ET, Conf]), - RI = {receive_info, mk_recv_info(ET)}, - Config = [{local_mid, Mid}, RI] ++ Conf, - Pid = spawn_link(Node, ?MODULE, mgc, [self(), Verbosity, Config]), - await_started(Pid). + RI = {receive_info, mk_recv_info(ET)}, + Config = [{local_mid, Mid}, RI] ++ Conf, + Self = self(), + true = erlang:monitor_node(Node, true), + MGC = fun() -> mgc(Self, Verbosity, Config) end, + {Pid, MRef} = spawn_monitor(Node, MGC), + NodePing = net_adm:ping(Node), + ProcInfo = (catch proc_info(Pid)), + i("start mgc[~p] -> ~p" + "~n self(): ~p" + "~n node(): ~p" + "~n Node ping: ~p" + "~n Loader: ~p" + "~n Monitor ref: ~p" + "~n Process info: ~p", + [Node, Pid, + Self, node(), NodePing, Pid, MRef, ProcInfo]), + await_started(Node, Pid, MRef). + +proc_info(Pid) -> + rpc:call(node(Pid), erlang, process_info, [Pid]). mk_recv_info(ET) -> mk_recv_info(ET, []). @@ -155,20 +172,40 @@ select_transport(Transport) -> throw({error, {invalid_transport, Transport}}). -await_started(Pid) -> +await_started(Node, Pid, MRef) -> receive {started, Pid} -> - d("await_started ~p: ok", [Pid]), + i("await_started ~p: ok", [Pid]), + true = erlang:monitor_node(Node, false), + erlang:demonitor(MRef), {ok, Pid}; - {'EXIT', Pid, - {failed_starting_tcp_listen, {could_not_start_listener, {gen_tcp_listen, eaddrinuse}}}} -> + + {nodedown, Node} -> + i("await_started ~p - received node down", [Pid]), + exit({node_down, Node}); + + {'DOWN', MRef, process, Pid, + {failed_starting_tcp_listen, + {could_not_start_listener, {gen_tcp_listen, eaddrinuse}}}} -> e("await_started ~p: address already in use", [Pid]), + true = erlang:monitor_node(Node, false), ?SKIP(eaddrinuse); - {'EXIT', Pid, Reason} -> + + {'DOWN', MRef, process, Pid, Reason} -> e("await_started ~p: received exit signal: ~p", [Pid, Reason]), + true = erlang:monitor_node(Node, false), exit({failed_starting, Pid, Reason}) + after 10000 -> - e("await_started ~p: timeout", [Pid]), + NodePing = net_adm:ping(Node), + ProcInfo = (catch proc_info(Pid)), + FlushQ = megaco_test_lib:flush(), + e("await_started ~p - timeout: " + "~n net_adm:ping(~p): ~p" + "~n Process info: ~p" + "~n Messages in my queue: ~p", + [Pid, Node, NodePing, ProcInfo, FlushQ]), + true = erlang:monitor_node(Node, false), exit({error, timeout}) end. -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor