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

openSUSE Build Service is sponsored by