AnyEvent-Memcached
view release on metacpan or search on metacpan
use common::sense;
runtest {
my ($host,$port,%args) = @_;
my $cv;$cv = AE::cv;
diag "testing $host:$port";
require Test::NoWarnings;Test::NoWarnings->import;
plan tests => 52+1;
my $memd = AnyEvent::Memcached->new(
servers => [ "$host:$port" ],
cv => $cv,
debug => 0,
%args,
namespace => "AE::Memd::t/$$/" . (time() % 100) . "/",
);
isa_ok($memd, 'AnyEvent::Memcached');
$cv->begin;
$memd->set('cas2','val2',cb => sub { ok(shift,"set cas2 as val1") or diag " Error: @_"; });
$memd->set('cas1','val1',cb => sub {
ok(shift,"set cas as val1") or diag " Error: @_";
$memd->gets('cas1',cb => sub {
my $value = shift;
if ($value) {
ok $value, 'got result' or diag " Error: @_";
is ref $value,'ARRAY', 'retval is array';
is $value->[1], 'val1', 'value correct';
# Now, break the value
$memd->set('cas1','val2',cb => sub {
ok(shift,"set cas as val2") or diag " Error: @_";
$memd->cas('cas1', $value->[0], 'val3',cb => sub {
ok(!shift,"try cas as val3");
ok(!@_, 'cas have no errors') or diag " Error: @_";
$memd->gets('cas1',cb => sub {
ok my $value = shift, 'gets again';
$memd->cas('cas1', $value->[0], 'val4',cb => sub {
ok(shift,"set cas as val4");
ok(!@_, 'cas have no errors') or diag " Error: @_";
#Now, test 2 keys at once
$memd->gets(['cas1','cas2'], cb => sub {
ok my $values = shift, 'got gets* result' or diag " Error: @_";
is ref $values, 'HASH', 'retval is hash';
ok exists $values->{cas1}, 'have cas1';
ok exists $values->{cas2}, 'have cas2';
is ref $values->{cas1}, 'ARRAY', 'value 1 correct';
is ref $values->{cas2}, 'ARRAY', 'value 2 correct';
$memd->cas('cas1', $values->{cas1}[0], 'val5',cb => sub {
ok(shift,"set cas1 as val5");
ok(!@_, 'cas1 have no errors') or diag " Error: @_";
});
$memd->cas('cas2', $values->{cas2}[0], 'val5',cb => sub {
ok(shift,"set cas2 as val5");
ok(!@_, 'cas2 have no errors') or diag " Error: @_";
});
});
});
});
});
});
} else {
my $error = shift;
SKIP: {
if ($error =~ /not enabled/) {
skip "gets not enabled",19;
} else {
fail "gets failed";
diag "$error";
skip "gets failed",18;
( run in 0.855 second using v1.01-cache-2.11-cpan-39bf76dae61 )