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';
## Get the Schema and set the replication storage type
sub init_schema {
- # current SQLT SQLite producer does not handle DROP TABLE IF EXISTS, trap warnings here
- local $SIG{__WARN__} = sub { warn @_ unless $_[0] =~ /no such table.+DROP TABLE/s };
-
- my ($class, $schema_method) = @_;
-
- my $method = "get_schema_$schema_method";
- my $schema = $class->$method;
-
- return $schema;
+ #my ($class, $schema_getter) = @_;
+ shift->${\ ( 'get_schema_' . shift ) };
}
sub get_schema_by_storage_type {
"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);
}
$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