File 6901-megaco-test-examples-Tweaked-the-meas-tool.patch of Package erlang
From 0c0d43079ea4f95263e6b82fcef1c4422589dcfc Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Thu, 29 Sep 2022 18:50:13 +0200
Subject: [PATCH] [megaco|test|examples] Tweaked the meas tool
Tweaked the meas tool to be less verbose during a
test (suite) run.
OTP-18298
---
.../examples/meas/megaco_codec_meas.erl | 102 +++++++++++-------
lib/megaco/test/megaco_examples_SUITE.erl | 3 +-
2 files changed, 68 insertions(+), 37 deletions(-)
diff --git a/lib/megaco/examples/meas/megaco_codec_meas.erl b/lib/megaco/examples/meas/megaco_codec_meas.erl
index 06983e4dd5..d325dd706c 100644
--- a/lib/megaco/examples/meas/megaco_codec_meas.erl
+++ b/lib/megaco/examples/meas/megaco_codec_meas.erl
@@ -46,7 +46,7 @@
%% API
%% Avoid warning for local function error/2 clashing with autoimported BIF.
-compile({no_auto_import,[error/2]}).
--export([start/0, start/1]).
+-export([start/0, start/1, start/2]).
-export([start1/0]).
%% Internal exports
@@ -74,6 +74,8 @@
-define(DEFAULT_MESSAGE_PACKAGE, megaco_codec_transform:default_message_package()).
+-define(DEFAULT_OPTS, #{verbose => true}).
+
-define(FTS(), formated_timestamp()).
@@ -87,18 +89,22 @@ start1() ->
start().
start() ->
- meas_init(1, ?DEFAULT_MESSAGE_PACKAGE, ?MEASURE_CODECS).
+ meas_init(1, ?DEFAULT_OPTS, ?DEFAULT_MESSAGE_PACKAGE, ?MEASURE_CODECS).
start([MessagePackage]) ->
- do_start(1, MessagePackage, ?MEASURE_CODECS);
+ do_start(1, ?DEFAULT_OPTS, MessagePackage, ?MEASURE_CODECS);
start(Factor) when is_integer(Factor) andalso (Factor > 0) ->
- do_start(Factor, ?DEFAULT_MESSAGE_PACKAGE, ?MEASURE_CODECS);
+ do_start(Factor, ?DEFAULT_OPTS, ?DEFAULT_MESSAGE_PACKAGE, ?MEASURE_CODECS);
start(MessagePackage) ->
- do_start(1, MessagePackage, ?MEASURE_CODECS).
+ do_start(1, ?DEFAULT_OPTS, MessagePackage, ?MEASURE_CODECS).
+
+start(Factor, Opts) when is_integer(Factor) andalso (Factor > 0) andalso
+ is_map(Opts) ->
+ do_start(Factor, Opts, ?DEFAULT_MESSAGE_PACKAGE, ?MEASURE_CODECS).
-do_start(Factor, MessagePackageRaw, Codecs) ->
+do_start(Factor, Opts, MessagePackageRaw, Codecs) ->
MessagePackage = parse_message_package(MessagePackageRaw),
- meas_init(Factor, MessagePackage, Codecs).
+ meas_init(Factor, Opts, MessagePackage, Codecs).
parse_message_package(MessagePackageRaw) when is_list(MessagePackageRaw) ->
list_to_atom(MessagePackageRaw);
@@ -118,7 +124,7 @@ parse_message_package(BadMessagePackage) ->
%% pretty | compact | ber | per | erlang
%%
-meas_init(Factor, MessagePackage, Codecs) ->
+meas_init(Factor, Opts, MessagePackage, Codecs) ->
%% process_flag(trap_exit, true),
io:format("~nRun meas on message package: ~p~n~n", [MessagePackage]),
display_os_info(),
@@ -129,7 +135,7 @@ meas_init(Factor, MessagePackage, Codecs) ->
case megaco_codec_transform:messages(MessagePackage) of
Messages when is_list(Messages) ->
ExpandedMessages = expand_messages(Codecs, Messages),
- Results = t1(Factor, ExpandedMessages, []),
+ Results = t1(Factor, Opts, ExpandedMessages, []),
display_time(Started, os:timestamp()),
store_results(Results);
Error ->
@@ -236,26 +242,26 @@ format_diff(Start, Fin) ->
-t1(_Factor, [], Results) ->
+t1(_Factor, _Opts, [], Results) ->
lists:reverse(Results);
-t1(Factor, [{Id, Codec, Conf, _, _} = ECodec|EMsgs], Results) ->
- case (catch measure(Factor, ECodec)) of
+t1(Factor, Opts, [{Id, Codec, Conf, _, _} = ECodec|EMsgs], Results) ->
+ case (catch measure(Factor, Opts, ECodec)) of
{'EXIT', Reason} ->
error("measure of codec ~p exited: ~n~p", [Codec, Reason]),
- t1(Factor, EMsgs, Results);
+ t1(Factor, Opts, EMsgs, Results);
{error, Reason} ->
error("skipping codec ~p: ~n~p", [Codec, Reason]),
- t1(Factor, EMsgs, Results);
+ t1(Factor, Opts, EMsgs, Results);
{ok, Res} ->
- t1(Factor, EMsgs, [{Id, Conf, Res}| Results])
+ t1(Factor, Opts, EMsgs, [{Id, Conf, Res}| Results])
end.
-measure(Factor, {Id, Codec, Conf, Count, Msgs}) ->
+measure(Factor, Opts, {Id, Codec, Conf, Count, Msgs}) ->
io:format("[~s] measure using codec ~p ~p~n ", [?FTS(), Codec, Conf]),
{Init, Conf1} = measure_init(Conf),
Conf2 = [{version3,?V3}|Conf1],
- Res = measure(Factor, Id, Codec, Conf2, Msgs, [], Count),
+ Res = measure(Factor, Opts, Id, Codec, Conf2, Msgs, [], Count),
measure_fin(Init),
Res.
@@ -322,10 +328,10 @@ measure_fin(_) ->
ok.
-measure(_Factor, _Dir, _Codec, _Conf, [], [], _MCount) ->
+measure(_Factor, _Opts, _Dir, _Codec, _Conf, [], [], _MCount) ->
{error, no_messages};
-measure(_Factor, _Dir, _Codec, _Conf, [], Res, _MCount) ->
+measure(_Factor, _Opts, _Dir, _Codec, _Conf, [], Res, _MCount) ->
Eavg = avg([Etime/Ecnt || #stat{ecount = Ecnt, etime = Etime} <- Res]),
Davg = avg([Dtime/Dcnt || #stat{dcount = Dcnt, dtime = Dtime} <- Res]),
@@ -340,33 +346,41 @@ measure(_Factor, _Dir, _Codec, _Conf, [], Res, _MCount) ->
{ok, lists:reverse(Res)};
-measure(Factor, Dir, Codec, Conf, [{Name, Bin}|Msgs], Results, MCount) ->
- io:format(" ~p", [Name]),
- case (catch do_measure(Factor, Dir, Codec, Conf, Name, Bin, MCount)) of
+measure(Factor, #{verbose := Verbose} = Opts,
+ Dir, Codec, Conf, [{Name, Bin}|Msgs], Results, MCount) ->
+ vprint(Verbose, " ~p", [Name]),
+ case (catch do_measure(Factor, Opts,
+ Dir, Codec, Conf, Name, Bin, MCount)) of
{ok, Stat} ->
- measure(Factor, Dir, Codec, Conf, Msgs, [Stat | Results], MCount);
+ measure(Factor, Opts,
+ Dir, Codec, Conf, Msgs, [Stat | Results], MCount);
{error, S} ->
- io:format("~n[~s] ~s failed: ~n", [?FTS(), Name]),
+ if
+ (Verbose =:= true) ->
+ io:format("~n[~s] ~s failed: ~n", [?FTS(), Name]);
+ true ->
+ io:format("[~s] ~s failed: ~n", [?FTS(), Name])
+ end,
error(S,[]),
- measure(Factor, Dir, Codec, Conf, Msgs, Results, MCount);
+ measure(Factor, Opts, Dir, Codec, Conf, Msgs, Results, MCount);
{info, S} ->
- case get(verbose) of
+ vprint(Verbose, "~n"),
+ case Verbose orelse get(verbose) of
true ->
- io:format("~n", []),
info(S,[]);
_ ->
- io:format("~n~s skipped~n", [Name])
+ io:format("~s skipped~n", [Name])
end,
- measure(Factor, Dir, Codec, Conf, Msgs, Results, MCount)
+ measure(Factor, Opts, Dir, Codec, Conf, Msgs, Results, MCount)
end.
-do_measure(Factor, _Id, Codec, Conf, Name, BinMsg, MCount) ->
+do_measure(Factor, Opts, _Id, Codec, Conf, Name, BinMsg, MCount) ->
%% io:format("~n~s~n", [binary_to_list(BinMsg)]),
- {Version, NewBin} = detect_version(Codec, Conf, BinMsg),
+ {Version, NewBin} = detect_version(Opts, Codec, Conf, BinMsg),
{Msg, Dcnt, Dtime} =
measure_decode(Factor, Codec, Conf, Version, NewBin, MCount),
{_, Ecnt, Etime} =
@@ -377,16 +391,21 @@ do_measure(Factor, _Id, Codec, Conf, Name, BinMsg, MCount) ->
dcount = Dcnt, dtime = Dtime,
size = byte_size(NewBin)}}.
-detect_version(Codec, Conf, Bin) ->
+detect_version(#{verbose := Verbose} = _Opts, Codec, Conf, Bin) ->
case (catch Codec:version_of(Conf, Bin)) of
{ok, V} ->
- io:format("[~w]", [V]),
- {ok, M} = Codec:decode_message(Conf, V, Bin),
+ vprint(Verbose, "[~w]", [V]),
+ {ok, M} = Codec:decode_message(Conf, V, Bin),
{ok, NewBin} = Codec:encode_message(Conf, V, M),
- io:format("[~w]", [byte_size(NewBin)]),
+ vprint(Verbose, "[~w]", [byte_size(NewBin)]),
{V, NewBin};
Error ->
- io:format("~nversion detection failed:~n~p", [Error]),
+ if
+ (Verbose =:= true) ->
+ io:format("~nversion detection failed:~n~p", [Error]);
+ true ->
+ io:format("version detection failed:~n~p", [Error])
+ end,
Error
end.
@@ -665,6 +684,17 @@ flex_scanner_handler(Pid, PortOrPorts) ->
end.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+vprint(Verbose, F) ->
+ vprint(Verbose, F, []).
+
+vprint(true, F, A) ->
+ io:format(F, A);
+vprint(_, _, _) ->
+ ok.
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
info(F, A) ->
diff --git a/lib/megaco/test/megaco_examples_SUITE.erl b/lib/megaco/test/megaco_examples_SUITE.erl
index dad10a1f70..084749ce60 100644
--- a/lib/megaco/test/megaco_examples_SUITE.erl
+++ b/lib/megaco/test/megaco_examples_SUITE.erl
@@ -621,7 +621,7 @@ meas(Config) when is_list(Config) ->
"~n Factor: ~p", [Time, Factor]),
ct:timetrap(?MINS(Time)),
WorkerNode = ?config(worker_node, Config),
- do_meas(?FUNCTION_NAME, WorkerNode, megaco_codec_meas, start, [Factor]).
+ do_meas(?FUNCTION_NAME, WorkerNode, megaco_codec_meas, start, [Factor, #{verbose => false}]).
do_meas(SName, Node, Mod, Func, Args) ->
put(sname, SName),
--
2.35.3