make _determine_driver more reentrant
[dbsrgits/DBIx-Class.git] / t / 92storage_ping_count.t
1 use strict;
2 use warnings;  
3
4 use Test::More;
5 use lib qw(t/lib);
6 use DBICTest;
7 use Data::Dumper;
8 use DBIC::SqlMakerTest;
9
10 my $ping_count = 0;
11
12 {
13   local $SIG{__WARN__} = sub {};
14   require DBIx::Class::Storage::DBI;
15
16   my $ping = \&DBIx::Class::Storage::DBI::_ping;
17
18   *DBIx::Class::Storage::DBI::_ping = sub {
19     $ping_count++;
20     goto &$ping;
21   };
22 }
23
24
25 # We do not count pings during deploy() because of the flux
26 # around sqlt. Eventually there should be no pings at all
27 my $schema = DBICTest->init_schema( sqlite_use_file => 1, no_populate => 1 );
28
29 TODO: {
30   local $TODO = 'Unable to fix before proper deploy() error handling';
31   is ($ping_count, 0, 'no _ping() calls during deploy');
32   $ping_count = 0;
33 }
34
35 DBICTest->populate_schema ($schema);
36
37 # perform some operations and make sure they don't ping
38
39 $schema->resultset('CD')->create({
40   cdid => 6, artist => 3, title => 'mtfnpy', year => 2009
41 });
42
43 $schema->resultset('CD')->create({
44   cdid => 7, artist => 3, title => 'mtfnpy2', year => 2009
45 });
46
47 $schema->storage->_dbh->disconnect;
48
49 $schema->resultset('CD')->create({
50   cdid => 8, artist => 3, title => 'mtfnpy3', year => 2009
51 });
52
53 $schema->storage->_dbh->disconnect;
54
55 $schema->txn_do(sub {
56  $schema->resultset('CD')->create({
57    cdid => 9, artist => 3, title => 'mtfnpy4', year => 2009
58  });
59 });
60
61 is $ping_count, 0, 'no _ping() calls';
62
63 done_testing;