Cache-Memcached-Semaphore

 view release on metacpan or  search on metacpan

t/001.lock.t  view on Meta::CPAN

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
my $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 )