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