Couchbase
view release on metacpan or search on metacpan
lib/Couchbase/Test/ClientSync.pm view on Meta::CPAN
268269270271272273274275276277278279280281282283284285286287288289290291292293294295}
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.233 second using v1.01-cache-2.11-cpan-bf8d7bb2d05 )