+BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
+
use strict;
use warnings;
use Test::More;
use Test::Exception;
-use lib qw(t/lib);
+
use DBICTest;
use Storable qw(dclone freeze nfreeze thaw);
use Scalar::Util qw/refaddr/;
+use Carp;
sub ref_ne {
- my ($refa, $refb) = map { refaddr $_ or die "$_ is not a reference!" } @_[0,1];
+ my ($refa, $refb) = map { refaddr $_ or croak "$_ is not a reference!" } @_[0,1];
cmp_ok (
$refa,
'!=',
return $fire;
},
- ($ENV{DBICTEST_MEMCACHED})
- ? do {
- require Cache::Memcached;
- my $memcached = Cache::Memcached->new(
- { servers => [ $ENV{DBICTEST_MEMCACHED} ] } );
-
- my $key = 'tmp_dbic_84serialize_memcached_test';
-
- ( memcached => sub {
- $memcached->set( $key, $_[0], 60 );
- local $DBIx::Class::ResultSourceHandle::thaw_schema = $schema;
- return $memcached->get($key);
- });
- } : ()
- ,
);
+if ($ENV{DBICTEST_MEMCACHED}) {
+ if (DBIx::Class::Optional::Dependencies->req_ok_for ('test_memcached')) {
+ my $memcached = Cache::Memcached->new(
+ { servers => [ $ENV{DBICTEST_MEMCACHED} ] }
+ );
+
+ my $key = 'tmp_dbic_84serialize_memcached_test';
+
+ $stores{memcached} = sub {
+ $memcached->set( $key, $_[0], 60 )
+ or die "Unable to insert into $ENV{DBICTEST_MEMCACHED} - is server running?";
+ local $DBIx::Class::ResultSourceHandle::thaw_schema = $schema;
+ return $memcached->get($key);
+ };
+ }
+ else {
+ SKIP: {
+ skip 'Memcached tests need ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_memcached'), 1;
+ }
+ }
+}
+else {
+ SKIP: {
+ skip 'Set $ENV{DBICTEST_MEMCACHED} to run the memcached serialization tests', 1;
+ }
+}
+
+
+
for my $name (keys %stores) {
my $store = $stores{$name};
# Test resultsource with cached rows
- my $query_count;
- $cd_rs = $cd_rs->search ({}, { cache => 1 });
-
- my $orig_debug = $schema->storage->debug;
- $schema->storage->debug(1);
- $schema->storage->debugcb(sub { $query_count++ } );
+ $schema->is_executed_querycount( sub {
+ $cd_rs = $cd_rs->search ({}, { cache => 1 });
- # this will hit the database once and prime the cache
- my @cds = $cd_rs->all;
+ # this will hit the database once and prime the cache
+ my @cds = $cd_rs->all;
- lives_ok {
$copy = $store->($cd_rs);
ref_ne($copy, $cd_rs, 'Cached resultset cloned');
is_deeply (
);
is ($copy->count, $cd_rs->count, 'Cached count identical');
- } "serialize cached resultset lives: $name";
-
- is ($query_count, 1, 'Only one db query fired');
-
- $schema->storage->debug($orig_debug);
- $schema->storage->debugcb(undef);
+ }, 1, 'Only one db query fired');
}
# test schema-less detached thaw