Couchbase
view release on metacpan or search on metacpan
lib/Couchbase/Test/ClientSync.pm view on Meta::CPAN
}
sub T10_locks :Test(no_plan) {
my $self = shift;
my $o = $self->cbo;
my $doc = Couchbase::Document->new("GETL", "value");
$o->remove($doc); # Ensure it's gone
$o->insert($doc);
ok($o->get_and_lock($doc, {lock_duration=>10}), "Locked OK");
ok($o->unlock($doc), "Unlocked OK");
#ok($o->unlock($doc), "Unlock again fails");
#
#print Dumper($doc);
#
#is(COUCHBASE_ETMPFAIL, $doc->errnum, "Temporary failure returned for re-locking");
# Unlock while locked, but with bad CAS
my $doc2 = $doc->copy();
ok($o->get_and_lock($doc2, {lock_duration=>10}));
$doc->_cas(0xdeadbeef);
ok((!$o->unlock($doc)), "Can't unlock with stale CAS");
ok($o->unlock($doc2), "Unlock with good CAS ok");
# Lock without a timeout (should fail)
eval { $o->get_and_lock($doc) };
ok($@, "Can't lock without explicit duration");
( run in 0.227 second using v1.01-cache-2.11-cpan-bf8d7bb2d05 )