Cache-Memcached-Semaphore
view release on metacpan or search on metacpan
t/001.lock.t view on Meta::CPAN
33343536373839404142434445464748495051525354555657585960616263646566my
$err_lock
= Cache::Memcached::Semaphore->new(
memd
=>
$memd
,
name
=>
"semaphore"
);
ok( !
$err_lock
,
"Cannot lock same semaphore"
);
# scoping
{
my
$c_lock
= Cache::Memcached::Semaphore->new(
memd
=>
$memd
,
name
=>
"c_test"
);
my
$s_lock
= Cache::Memcached::Semaphore::acquire(
memd
=>
$memd
,
name
=>
"s_test"
);
ok(
$c_lock
,
"Inner block constructor acquired"
);
ok(
$s_lock
,
"Inner block sub acquired"
);
ok( !Cache::Memcached::Semaphore->new(
memd
=>
$memd
,
name
=>
"c_test"
),
"Inner block constructor locked"
);
ok( !Cache::Memcached::Semaphore::acquire(
memd
=>
$memd
,
name
=>
"s_test"
),
"Inner block sub locked"
);
}
my
$c_lock
= Cache::Memcached::Semaphore->new(
memd
=>
$memd
,
name
=>
"c_test"
);
my
$s_lock
= Cache::Memcached::Semaphore::acquire(
memd
=>
$memd
,
name
=>
"s_test"
);
ok(
$c_lock
,
"Outer block constructor acquired"
);
ok(
$s_lock
,
"Outer block sub acquired"
);
ok( !Cache::Memcached::Semaphore->new(
memd
=>
$memd
,
name
=>
"c_test"
),
"Outer block constructor locked"
);
ok( !Cache::Memcached::Semaphore::acquire(
memd
=>
$memd
,
name
=>
"s_test"
),
"Outer block sub locked"
);
# timeout
ok( Cache::Memcached::Semaphore->new(
memd
=>
$memd
,
name
=>
"c_timeout"
,
timeout
=> 10 ),
"Constructor with timeout"
);
ok( !Cache::Memcached::Semaphore->new(
memd
=>
$memd
,
name
=>
"c_timeout"
,
timeout
=> 10 ),
"Constructor with timeout locked"
);
ok( Cache::Memcached::Semaphore::acquire(
memd
=>
$memd
,
name
=>
"s_timeout"
,
timeout
=> 10 ),
"Sub with timeout"
);
ok( !Cache::Memcached::Semaphore::acquire(
memd
=>
$memd
,
name
=>
"s_timeout"
,
timeout
=> 10 ),
"Sub with timeout locked"
);
ok( Cache::Memcached::Semaphore::wait_acquire(
memd
=>
$memd
,
name
=>
"w_timeout"
,
timeout
=> 2 ),
"Wait lock. Create with timeout"
);
ok( Cache::Memcached::Semaphore::wait_acquire(
memd
=>
$memd
,
name
=>
"w_timeout"
,
timeout
=> 10),
"Wait indefinitely. Create with timeout"
);
ok( !Cache::Memcached::Semaphore::wait_acquire(
memd
=>
$memd
,
name
=>
"w_timeout"
,
timeout
=> 10,
max_wait
=> 1),
"Wait 1 sec. No acquire"
);
#require Benchmark;
#my $benchmark = Benchmark::timeit( 1000, sub { Cache::Memcached::Semaphore->new( memd => $memd, name => 'benchmark' ) || die "Couldn't lock" } );
#diag(Benchmark::timestr($benchmark));
( run in 0.328 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )