+BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
+use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_rdbms_pg';
+
use strict;
use warnings;
use Test::More;
use Test::Exception;
+use Time::HiRes qw(time sleep);
+use List::Util 'max';
-use lib qw(t/lib);
use DBICTest;
-use DBIx::Class::Optional::Dependencies ();
my $main_pid = $$;
-plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('rdbms_pg')
- unless DBIx::Class::Optional::Dependencies->req_ok_for ('rdbms_pg');
-
-my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_PG_${_}" } qw/DSN USER PASS/};
-
-plan skip_all => 'Set $ENV{DBICTEST_PG_DSN}, _USER and _PASS to run this test'
- . ' (note: creates and drops a table named artist!)' unless ($dsn && $user);
-
-# README: If you set the env var to a number greater than 10,
+# README: If you set the env var to a number greater than 5,
# we will use that many children
my $num_children = $ENV{DBICTEST_FORK_STRESS} || 1;
-if($num_children !~ /^[0-9]+$/ || $num_children < 10) {
- $num_children = 10;
+if($num_children !~ /^[0-9]+$/ || $num_children < 5) {
+ $num_children = 5;
}
-my $schema = DBICTest->connect_schema($dsn, $user, $pass, { AutoCommit => 1 });
+my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_PG_${_}" } qw/DSN USER PASS/};
+my $schema = DBICTest::Schema->connect($dsn, $user, $pass, { AutoCommit => 1 });
my $parent_rs;
}
$parent_rs->reset;
+
+# sleep until this spot so everything starts simultaneously
+# add "until turn of second" for prettier display
+my $t = int( time() ) + 4;
+
my @pids;
while(@pids < $num_children) {
$pid = $$;
+ sleep( max( 0.1, $t - time ) );
+ note ("Child process $pid starting work at " . time() );
+
my $work = sub {
my $child_rs = $schema->resultset('CD')->search({ year => 1901 });
my $row = $parent_rs->next;
$work->();
}
- sleep(3);
+ sleep(2);
exit 0;
}