[Bast-commits] r9219 - in DBIx-Class/0.08/trunk: . t/storage
ribasushi at dev.catalyst.perl.org
ribasushi at dev.catalyst.perl.org
Mon Apr 26 13:27:38 GMT 2010
Author: ribasushi
Date: 2010-04-26 14:27:38 +0100 (Mon, 26 Apr 2010)
New Revision: 9219
Added:
DBIx-Class/0.08/trunk/t/storage/factory_fork.t
Modified:
DBIx-Class/0.08/trunk/Makefile.PL
Log:
Bizarre fork failure
Modified: DBIx-Class/0.08/trunk/Makefile.PL
===================================================================
--- DBIx-Class/0.08/trunk/Makefile.PL 2010-04-26 11:13:13 UTC (rev 9218)
+++ DBIx-Class/0.08/trunk/Makefile.PL 2010-04-26 13:27:38 UTC (rev 9219)
@@ -18,7 +18,6 @@
### All of them should go to DBIx::Class::Optional::Dependencies
###
-
name 'DBIx-Class';
perl_version '5.008001';
all_from 'lib/DBIx/Class.pm';
Added: DBIx-Class/0.08/trunk/t/storage/factory_fork.t
===================================================================
--- DBIx-Class/0.08/trunk/t/storage/factory_fork.t (rev 0)
+++ DBIx-Class/0.08/trunk/t/storage/factory_fork.t 2010-04-26 13:27:38 UTC (rev 9219)
@@ -0,0 +1,54 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Exception;
+
+use lib qw(t/lib);
+use DBICTest;
+
+for my $type (qw/PG MYSQL/) {
+
+ SKIP: {
+ skip "Skipping $type tests without DBICTEST_${type}_DSN", 1
+ unless $ENV{"DBICTEST_${type}_DSN"};
+
+ my $schema = DBICTest::Schema->connect (@ENV{map { "DBICTEST_${type}_${_}" } qw/DSN USER PASS/});
+
+ # emulate a singleton-factory, just cache the object *somewhere in a different package*
+ # without this everything works
+ $DBICTest::FakeSchemaFactory::schema = $schema;
+
+ # so we can see the retry exceptions (if any)
+ $ENV{DBIC_DBIRETRY_DEBUG} = 1;
+
+ ok (!$schema->storage->connected, "$type: start disconnected");
+
+ lives_ok (sub {
+ $schema->txn_do (sub {
+
+ ok ($schema->storage->connected, "$type: transaction starts connected");
+
+ my $pid = fork();
+ SKIP: {
+ skip "Fork failed: $!", 1 if (! defined $pid);
+
+ if ($pid) {
+ sleep 1;
+ }
+ else {
+ exit 0;
+ }
+
+ ok ($schema->storage->connected, "$type: parent still connected (in txn_do)");
+ }
+ });
+ });
+
+ ok ($schema->storage->connected, "$type: parent still connected (outside of txn_do)");
+
+ undef $DBICTest::FakeSchemaFactory::schema;
+ }
+}
+
+done_testing;
More information about the Bast-commits
mailing list