use Test::More;
+use lib qw(t/lib);
+use DBICTest;
+
BEGIN {
require DBIx::Class;
plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_replicated')
unless DBIx::Class::Optional::Dependencies->req_ok_for ('test_replicated');
}
+
+if (DBICTest::RunMode->is_smoker) {
+ my $mver = Moose->VERSION;
+ plan skip_all => "A trial version $mver of Moose detected known to break replication - skipping test known to fail"
+ if ($mver >= 1.99 and $mver <= 1.9902);
+}
+
use Test::Moose;
use Test::Exception;
use List::Util 'first';
use MooseX::Types();
note "Using Moose version $Moose::VERSION and MooseX::Types version $MooseX::Types::VERSION";
-use lib qw(t/lib);
-use DBICTest;
+my $var_dir = quotemeta ( File::Spec->catdir(qw/t var/) );
use_ok 'DBIx::Class::Storage::DBI::Replicated::Pool';
use_ok 'DBIx::Class::Storage::DBI::Replicated::Balancer';
## Silence warning about not supporting the is_replicating method if using the
## sqlite dbs.
$replicated->schema->storage->debugobj->silence(1)
- if first { m{^t/} } @replicant_names;
+ if first { $_ =~ /$var_dir/ } @replicant_names;
isa_ok $replicated->schema->storage->balancer->current_replicant
=> 'DBIx::Class::Storage::DBI';
## Silence warning about not supporting the is_replicating method if using the
## sqlite dbs.
$replicated->schema->storage->debugobj->silence(1)
- if first { m{^t/} } @replicant_names;
+ if first { $_ =~ /$var_dir/ } @replicant_names;
$replicated->schema->storage->pool->validate_replicants;
"got last query from a master: $debug{dsn}";
like $fallback_warning, qr/falling back to master/
- => 'emits falling back to master warning';
+ => 'emits falling back to master debug';
$replicated->schema->storage->debugfh($oldfh);
}
## Silence warning about not supporting the is_replicating method if using the
## sqlite dbs.
$replicated->schema->storage->debugobj->silence(1)
- if first { m{^t/} } @replicant_names;
+ if first { $_ =~ /$var_dir/ } @replicant_names;
$replicated->schema->storage->pool->validate_replicants;
$replicated->schema->storage->debugobj->silence(0);
-ok $replicated->schema->resultset('Artist')->find(2)
- => 'Returned to replicates';
+{
+ ## catch the fallback to master warning
+ open my $debugfh, '>', \my $return_warning;
+ my $oldfh = $replicated->schema->storage->debugfh;
+ $replicated->schema->storage->debugfh($debugfh);
+
+ ok $replicated->schema->resultset('Artist')->find(2)
+ => 'Return to replicants';
-is $debug{storage_type}, 'REPLICANT',
- "got last query from a replicant: $debug{dsn}";
+ is $debug{storage_type}, 'REPLICANT',
+ "got last query from a replicant: $debug{dsn}";
+
+ like $return_warning, qr/Moved back to slave/
+ => 'emits returning to slave debug';
+
+ $replicated->schema->storage->debugfh($oldfh);
+}
## Getting slave status tests