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 )