File 1806-megaco-Add-the-mstone2-test-case-to-the-bench-group.patch of Package erlang

From 533485194e5945df796f257e336ba1f0e2b154d1 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Mon, 7 Apr 2025 19:01:42 +0200
Subject: [PATCH 6/7] [megaco] Add the mstone2 test case to the bench group

---
 .../examples/meas/megaco_codec_mstone2.erl    | 104 +++++++++++++-----
 lib/megaco/test/megaco_examples_SUITE.erl     |  39 ++++---
 2 files changed, 100 insertions(+), 43 deletions(-)

diff --git a/lib/megaco/examples/meas/megaco_codec_mstone2.erl b/lib/megaco/examples/meas/megaco_codec_mstone2.erl
index 2fd32c98e3..478d042885 100644
--- a/lib/megaco/examples/meas/megaco_codec_mstone2.erl
+++ b/lib/megaco/examples/meas/megaco_codec_mstone2.erl
@@ -65,7 +65,7 @@ application.
 
 %% Exports
 -export([
-	 start/0, start/1, start/2, start/3, start/4
+	 start/0, start/1, start/2, start/3, start/4, start/5
 	]).
 
 
@@ -116,7 +116,8 @@ application.
 
 -doc(#{equiv => start/1}).
 start() ->
-    do_start(?DEFAULT_FACTOR,
+    do_start(#{},
+             ?DEFAULT_FACTOR,
              ?DEFAULT_RUN_TIME, ?DEFAULT_MODE, ?DEFAULT_MESSAGE_PACKAGE).
 
 -doc """
@@ -140,13 +141,16 @@ start([RunTimeAtom, Mode, MessagePackage])
   when is_atom(RunTimeAtom) andalso
        is_atom(Mode) andalso
        is_atom(MessagePackage) ->
-    do_start(?DEFAULT_FACTOR,
+    do_start(#{},
+             ?DEFAULT_FACTOR,
              ?LIB:parse_runtime(RunTimeAtom), Mode, MessagePackage);
 start(RunTime) when is_integer(RunTime) andalso (RunTime > 0) ->
-    do_start(?DEFAULT_FACTOR,
+    do_start(#{},
+             ?DEFAULT_FACTOR,
              timer:minutes(RunTime), ?DEFAULT_MODE, ?DEFAULT_MESSAGE_PACKAGE);
 start(MessagePackage) ->
-    do_start(?DEFAULT_FACTOR,
+    do_start(#{},
+             ?DEFAULT_FACTOR,
              ?DEFAULT_RUN_TIME, ?DEFAULT_MODE, MessagePackage).
 
 -doc false.
@@ -157,24 +161,28 @@ start(RunTime, Mode)
         (Mode =:= flex) orelse
         (Mode =:= no_drv) orelse
         (Mode =:= only_drv)) ->
-    do_start(?DEFAULT_FACTOR,
+    do_start(#{},
+             ?DEFAULT_FACTOR,
              timer:minutes(RunTime), Mode, ?DEFAULT_MESSAGE_PACKAGE);
 start(Factor, RunTime)
   when is_integer(Factor) andalso
        (Factor > 0) andalso
        is_integer(RunTime) andalso
        (RunTime > 0) ->
-    do_start(Factor, timer:minutes(RunTime),
+    do_start(#{},
+             Factor, timer:minutes(RunTime),
              ?DEFAULT_MODE, ?DEFAULT_MESSAGE_PACKAGE);
 start(RunTime, MessagePackage) when is_integer(RunTime) andalso (RunTime > 0) ->
-    do_start(?DEFAULT_FACTOR,
+    do_start(#{},
+             ?DEFAULT_FACTOR,
              timer:minutes(RunTime), ?DEFAULT_MODE, MessagePackage);
 start(Mode, MessagePackage)
   when (Mode =:= standard) orelse
        (Mode =:= flex) orelse
        (Mode =:= no_drv) orelse
        (Mode =:= only_drv) ->
-    do_start(?DEFAULT_FACTOR,
+    do_start(#{},
+             ?DEFAULT_FACTOR,
              ?DEFAULT_RUN_TIME, Mode, MessagePackage).
 
 -doc false.
@@ -185,7 +193,8 @@ start(RunTime, Mode, MessagePackage)
         (Mode =:= flex) orelse
         (Mode =:= no_drv) orelse
         (Mode =:= only_drv)) ->
-    do_start(?DEFAULT_FACTOR,
+    do_start(#{},
+             ?DEFAULT_FACTOR,
              timer:minutes(RunTime), Mode, MessagePackage);
 start(Factor, RunTime, Mode)
   when is_integer(Factor) andalso
@@ -196,7 +205,8 @@ start(Factor, RunTime, Mode)
         (Mode =:= flex) orelse
         (Mode =:= no_drv) orelse
         (Mode =:= only_drv)) ->
-    do_start(Factor,
+    do_start(#{},
+             Factor,
              timer:minutes(RunTime), Mode, ?DEFAULT_MESSAGE_PACKAGE).
 
 
@@ -210,11 +220,43 @@ start(Factor, RunTime, Mode, MessagePackage)
         (Mode =:= flex) orelse
         (Mode =:= no_drv) orelse
         (Mode =:= only_drv)) ->
-    do_start(Factor, timer:minutes(RunTime), Mode, MessagePackage).
+    start(#{},
+          Factor, RunTime, Mode, MessagePackage);
+start(Opts, Factor, RunTime, Mode) when is_map(Opts) ->
+    start(Opts,
+          Factor, RunTime, Mode, ?DEFAULT_MESSAGE_PACKAGE).
 
-do_start(Factor, RunTime, Mode, MessagePackageRaw) ->
+-doc false.
+start(#{bench := Bench},
+      Factor, RunTime, Mode, MessagePackage)
+  when is_boolean(Bench) andalso
+       is_integer(Factor) andalso
+       (Factor > 0) andalso
+       is_integer(RunTime) andalso
+       (RunTime > 0) andalso
+       ((Mode =:= standard) orelse
+        (Mode =:= flex) orelse
+        (Mode =:= no_drv) orelse
+        (Mode =:= only_drv)) ->
+    do_start(Bench,
+             Factor, timer:minutes(RunTime), Mode, MessagePackage);
+start(_,
+      Factor, RunTime, Mode, MessagePackage)
+  when is_integer(Factor) andalso
+       (Factor > 0) andalso
+       is_integer(RunTime) andalso
+       (RunTime > 0) andalso
+       ((Mode =:= standard) orelse
+        (Mode =:= flex) orelse
+        (Mode =:= no_drv) orelse
+        (Mode =:= only_drv)) ->
+    do_start(false,
+             Factor, timer:minutes(RunTime), Mode, MessagePackage).
+
+
+do_start(Bench, Factor, RunTime, Mode, MessagePackageRaw) ->
     MessagePackage = parse_message_package(MessagePackageRaw),
-    mstone_init(Factor, RunTime, Mode, MessagePackage).
+    mstone_init(Bench, Factor, RunTime, Mode, MessagePackage).
     
 parse_message_package(MessagePackageRaw) when is_list(MessagePackageRaw) ->
     list_to_atom(MessagePackageRaw);
@@ -224,7 +266,8 @@ parse_message_package(BadMessagePackage) ->
     throw({error, {bad_message_package, BadMessagePackage}}).
 
 
-mstone_init(Factor, RunTime, Mode, MessagePackage) ->
+mstone_init(Bench,
+            Factor, RunTime, Mode, MessagePackage) ->
     io:format("~n", []),
     %% io:format("MStone init with"
     %%           "~n   Run Time:        ~p ms"
@@ -241,8 +284,7 @@ mstone_init(Factor, RunTime, Mode, MessagePackage) ->
 			       end)),
     receive
 	{'DOWN', Ref, process, _Pid, {done, Result}} ->
-	    display_result(Result),
-            ok;
+	    display_result(Bench, Result);
 
 	{'DOWN', Ref, process, _Pid, Result} ->
 	    io:format("Unexpected result:"
@@ -252,11 +294,17 @@ mstone_init(Factor, RunTime, Mode, MessagePackage) ->
     end.
 
 
+mstone_maybe_bench(true, MStone) ->
+    {bench, MStone};
+mstone_maybe_bench(false, _) ->
+    ok.
+
+
 %%%----------------------------------------------------------------------
 %%% Internal functions
 %%%----------------------------------------------------------------------
 
-display_result(Result) ->
+display_result(Bench, Result) ->
     {value, {worker_cnt, WC}} = lists:keysearch(worker_cnt, 1, Result),
     CodecStat = 
 	[{Mod, Conf, Cnt} || {{codec_cnt, Mod, Conf}, Cnt} <- Result],
@@ -265,7 +313,7 @@ display_result(Result) ->
 	      "MStone:                  ~w~n"
 	      "~n", [WC, MStone]),
     display_worker_result(lists:keysort(3, CodecStat)),
-    ok.
+    mstone_maybe_bench(Bench, MStone).
     
 display_worker_result([]) ->
     io:format("~n", []);
@@ -400,34 +448,40 @@ loader_loop(finishing, #state{flex_handler = Pid, running = []}) ->
 loader_loop(finishing, State) ->
     receive
 	{'DOWN', Ref, process, _Pid, {mstone_done, Codec, Conf, Cnt}} ->
-            %% io:format("[loader:finishing] worker done~n", []),
+            %% io:format("[~s] [loader:finishing] worker done~n",
+            %%           [megaco:formated_timestamp()]),
 	    loader_loop(finishing, done_worker(Ref, Codec, Conf, Cnt, State))
     end;
 
 loader_loop(running, #state{idle = []} = State) ->	    
     receive
 	mstone_finished ->
-            %% io:format("[loader:running,idle] -> finish~n", []),
+            %% io:format("[~s] [loader:running,idle] -> finish~n",
+            %%           [megaco:formated_timestamp()]),
 	    loader_loop(finishing, State);
 
 	{'DOWN', Ref, process, _Pid, {mstone_done, Codec, Conf, Cnt}} ->
-            %% io:format("[loader:running] worker done~n", []),
+            %% io:format("[~s] [loader:running] worker done~n",
+            %%           [megaco:formated_timestam()]),
 	    loader_loop(running, done_worker(Ref, Codec, Conf, Cnt, State))
     end;
 
 loader_loop(running, State) ->	
     receive
 	mstone_finished ->
-            %% io:format("[loader:running] -> finish~n", []),
+            %% io:format("[~s] [loader:running] -> finish~n",
+            %%           [megaco:formated_timestamp()]),
 	    loader_loop(finishing, State);
 
 	{'DOWN', Ref, process, _Pid, {mstone_done, Codec, Conf, Cnt}} ->
-            %% io:format("[loader:running] worker done~n", []),
+            %% io:format("[~s] [loader:running] worker done~n",
+            %%           [megaco:formated_timestamp()]),
 	    State2 = done_worker(Ref, Codec, Conf, Cnt, State),
 	    loader_loop(running, State2)
 
     after 0 ->
-            %% io:format("[loader:running] start worker~n", []),
+            %% io:format("[~s] [loader:running] start worker~n",
+            %%           [megaco:formated_timestamp()]),
 	    loader_loop(running, start_worker(State))
     end.
 
diff --git a/lib/megaco/test/megaco_examples_SUITE.erl b/lib/megaco/test/megaco_examples_SUITE.erl
index 04d03be09f..148258a6d3 100644
--- a/lib/megaco/test/megaco_examples_SUITE.erl
+++ b/lib/megaco/test/megaco_examples_SUITE.erl
@@ -37,7 +37,7 @@
          
          meas/1,    bench_meas/1,
          mstone1/1, bench_mstone1/1,
-         mstone2/1
+         mstone2/1, bench_mstone2/1
 
         ]).
 
@@ -84,8 +84,8 @@ meas_cases() ->
 bench_cases() ->
     [
      bench_meas,
-     bench_mstone1 %%,
-     %% bench_mstone2
+     bench_mstone1,
+     bench_mstone2
     ].
 
 
@@ -198,8 +198,9 @@ init_per_testcase(Case, Config) when (Case =:= mstone1) orelse
             ?SKIP(flex_scanner_not_enabled)
     end;
 
-init_per_testcase(mstone2 = Case, Config) ->
-
+init_per_testcase(Case, Config) when (Case =:= mstone2) orelse
+                                     (Case =:= bench_mstone2) ->
+    
     p("init_per_testcase -> entry with"
       "~n   Config: ~p"
       "~n   Nodes:  ~p", [Config, erlang:nodes()]),
@@ -267,7 +268,8 @@ end_per_testcase(Case, Config) when (Case =:= mstone1) orelse
 
     end_per_testcase_meas(Case, example_meas_mstone1_modules(), Config);
 
-end_per_testcase(mstone2 = Case, Config) ->
+end_per_testcase(Case, Config) when (Case =:= mstone2) orelse
+                                    (Case =:= bench_mstone2) ->
 
     p("end_per_testcase -> entry with"
       "~n   Config: ~p"
@@ -660,11 +662,9 @@ common_meas(TC, Opts0, Config) when is_map(Opts0) ->
            end,
     Opts = Opts0#{verbose => false},
     Case = fun({Factor, WorkerNode}) ->
-                   CRes = do_meas(WorkerNode,
-                                  meas,
-                                  megaco_codec_meas, start, [Factor, Opts]),
-                   p("~w:~w -> CRes: ~p", [?MODULE, ?FUNCTION_NAME, CRes]),
-                   CRes
+                   do_meas(WorkerNode,
+                           meas,
+                           megaco_codec_meas, start, [Factor, Opts])
            end,
     Post = fun(_) -> ok end,
     try_tc(TC, Pre, Case, Post).
@@ -682,10 +682,7 @@ do_meas(Node,
         {'DOWN', MRef, process, Pid, {bench, Results}} ->
             p("worker process terminated with bench results: "
               "~n      ~p", [Results]),
-            Res = publish_bench_results(BenchName, Results),
-            p("publication: "
-              "~n      ~p", [Res]),
-            Res;
+            publish_bench_results(BenchName, Results);
 
         {'DOWN', MRef, process, Pid,
          {error, {failed_loading_flex_scanner_driver, Reason}}} ->
@@ -791,6 +788,9 @@ common_mstone1(TC, Opts, Config) when is_list(Config) ->
 mstone2(suite) ->
     [];
 mstone2(Config) when is_list(Config) ->
+    common_mstone2(?FUNCTION_NAME, #{}, Config).
+
+common_mstone2(TC, Opts, Config) when is_list(Config) ->
     Pre  = fun() ->
                    RunTime  = 1, % Minutes
                    NumSched =
@@ -805,7 +805,7 @@ mstone2(Config) when is_list(Config) ->
                    Mode = standard,
                    Mod  = megaco_codec_mstone2,
                    Func = start,
-                   Args = [Factor, RunTime, Mode],
+                   Args = [Opts, Factor, RunTime, Mode],
                    p("Run with: "
                      "~n      Factor:   ~p"
                      "~n      Run Time: ~p min(s)"
@@ -815,7 +815,7 @@ mstone2(Config) when is_list(Config) ->
                            Mod, Func, Args)
            end,
     Post = fun(_) -> ok end,
-    try_tc(?FUNCTION_NAME, Pre, Case, Post).
+    try_tc(TC, Pre, Case, Post).
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -838,7 +838,10 @@ bench_mstone1(Config) when is_list(Config) ->
 
 %% ------------------ bench:mstone2 ---------------------
 
-
+bench_mstone2(suite) ->
+    [];
+bench_mstone2(Config) when is_list(Config) ->
+    common_mstone2(?FUNCTION_NAME, #{bench => true}, Config).
 
 
 
-- 
2.43.0

openSUSE Build Service is sponsored by