File 4182-Added-a-simple-test-for-obtaining-active-transaction.patch of Package erlang

From f96063e39a41800d896ebb65843b3e4efdf6fbc0 Mon Sep 17 00:00:00 2001
From: piotr <p.skonieczka@simplito.com>
Date: Tue, 25 Oct 2022 12:17:04 +0200
Subject: [PATCH 2/2] Added a simple test for obtaining active transaction
 counters. `mnesia_tm:get_transactions()` and
 `mnesia_tm:get_transactions_count()` are invoked within a transaction context
 to make sure at least this one transaction is still in progress.

---
 lib/mnesia/test/mnesia_trans_access_test.erl | 26 ++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/lib/mnesia/test/mnesia_trans_access_test.erl b/lib/mnesia/test/mnesia_trans_access_test.erl
index b33b807bfc..d5bbaf9729 100644
--- a/lib/mnesia/test/mnesia_trans_access_test.erl
+++ b/lib/mnesia/test/mnesia_trans_access_test.erl
@@ -65,7 +65,7 @@ end_per_testcase(Func, Conf) ->
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 all() ->
     [write, read, wread, delete, delete_object_bag, delete_object_set,
-     match_object, select, select14, all_keys, transaction,
+     match_object, select, select14, all_keys, transaction, transaction_counters,
      {group, nested_activities}, {group, index_tabs},
      {group, index_lifecycle}].
 
@@ -546,6 +546,28 @@ transaction(Config) when is_list(Config) ->
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+transaction_counters(suite) -> [];
+transaction_counters(Config) ->
+    Nodes = ?acquire_nodes(1, Config),
+
+    {atomic, {{Participants1, Coordinators1}, {Participants2, Coordinators2}}} =
+        mnesia:transaction(fun get_transactions_counters/0),
+
+    ?match(Coordinators1, Coordinators2),
+    ?match(Coordinators1, 1),
+    ?match(Participants1, Participants2),
+    ?match(Participants1, 0),
+
+    ?verify_mnesia(Nodes, []).
+
+get_transactions_counters() ->
+    {count_sides(mnesia_tm:get_transactions()), mnesia_tm:get_transactions_count()}.
+
+count_sides(TransactionsList) ->
+    lists:foldl(
+        fun({_Tid, _Pid, participant}, {Participants, Coordinators}) -> {Participants + 1, Coordinators};
+            ({_Tid, _Pid, coordinator}, {Participants, Coordinators}) -> {Participants, Coordinators + 1}
+        end, {0, 0}, TransactionsList).
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-- 
2.35.3

openSUSE Build Service is sponsored by