File 0392-add-separate_sessions-test.patch of Package erlang

From 9d415ed98f60a02ebeb3a8f3b9a0dbbe1b317ad0 Mon Sep 17 00:00:00 2001
From: ruslandoga <ruslandoga+gh@icloud.com>
Date: Wed, 26 Mar 2025 20:44:03 +0300
Subject: [PATCH 2/5] add separate_sessions test

---
 lib/tools/test/tprof_SUITE.erl | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/lib/tools/test/tprof_SUITE.erl b/lib/tools/test/tprof_SUITE.erl
index 873ce24a70..172559271f 100644
--- a/lib/tools/test/tprof_SUITE.erl
+++ b/lib/tools/test/tprof_SUITE.erl
@@ -33,6 +33,7 @@
     sort/0, sort/1,
     rootset/0, rootset/1,
     set_on_spawn/0, set_on_spawn/1, seq/1,
+    separate_sessions/0, separate_sessions/1,
     live_trace/0, live_trace/1,
     patterns/0, patterns/1, pattern_fun/1, pattern_fun/2, pattern_fun/3,
     processes/0, processes/1,
@@ -59,7 +60,7 @@ groups() ->
     [{all, parallel(),
       [call_time_ad_hoc, call_memory_ad_hoc,
        call_memory_total, sort, rootset, set_on_spawn,
-       code_load, code_reload,
+       code_load, code_reload, separate_sessions,
        {group, default_session},
        {group, custom_session}]},
      {default_session,[],session()},
@@ -301,6 +302,30 @@ seq(Max) ->
     {Pid, MRef} = spawn_monitor(fun () -> lists:seq(1, Max) end),
     receive {'DOWN', MRef, process, Pid, normal} -> done end.
 
+separate_sessions() ->
+    [{doc, "Tests separate tprof sessions"}].
+
+separate_sessions(Config) when is_list(Config) ->
+    %% Trace lists:reverse/1
+    {ok, Srv1} = tprof:start_link(#{session => session1, type => call_memory}),
+    tprof:set_pattern(Srv1, lists, reverse, 1),
+    tprof:enable_trace(Srv1, self(), #{}),
+
+    %% Trace lists:map/2
+    {ok, Srv2} = tprof:start_link(#{session => session2, type => call_memory}),
+    tprof:set_pattern(Srv2, lists, map, 2),
+    tprof:enable_trace(Srv2, self(), #{}),
+
+    lists:reverse([1, 2, 3, 4, 5]),
+    lists:map(fun(X) -> X * 2 end, [1, 2, 3, 4, 5]),
+
+    Profile1 = tprof:collect(Srv1),
+    Profile2 = tprof:collect(Srv2),
+    ProcInspected1 = tprof:inspect(Profile1),
+    ProcInspected2 = tprof:inspect(Profile2),
+
+    ?assertNotEqual(ProcInspected1, ProcInspected2).
+
 live_trace() ->
     [{doc, "Tests memory tracing for pre-existing processes"}].
 
-- 
2.43.0

openSUSE Build Service is sponsored by