6a1c7a6c182a590a2a6b849641fda9975fd47cd5
[dbsrgits/DBM-Deep.git] / t / 43_transaction_maximum.t
1 use strict;
2 use warnings FATAL => 'all';
3
4 use Test::More;
5 use Test::Deep;
6 use Test::Exception;
7 use t::common qw( new_dbm );
8
9 use_ok( 'DBM::Deep' );
10
11 my $max_txns = 255;
12
13 my $dbm_factory = new_dbm(
14     num_txns  => $max_txns,
15 );
16 while ( my $dbm_maker = $dbm_factory->() ) {
17     my @dbs = grep { $_ } map {
18         eval { $dbm_maker->() }
19     } 1 .. $max_txns;
20
21
22     cmp_ok( scalar(@dbs), '==', $max_txns, "We could open enough DB handles" );
23
24     my %trans_ids;
25     for my $n (0 .. $#dbs) {
26         lives_ok {
27             $dbs[$n]->begin_work
28         } "DB $n can begin_work";
29
30         my $trans_id = $dbs[$n]->_engine->trans_id;
31         ok( !exists $trans_ids{ $trans_id }, "DB $n has a unique transaction ID ($trans_id)" );
32         $trans_ids{ $trans_id } = $n;
33     }
34 }
35
36 done_testing;