App-OverWatch
view release on metacpan or search on metacpan
t/servicelock.pl view on Meta::CPAN
use strict;
use warnings;
use utf8;
use Test::More;
use Test::Exception;
binmode Test::More->builder->output, ":encoding(UTF-8)";
binmode Test::More->builder->failure_output, ":encoding(UTF-8)";
binmode Test::More->builder->todo_output, ":encoding(UTF-8)";
sub get_servicelock {
my $config = shift;
my $OverWatch = App::OverWatch->new();
lives_ok {
$OverWatch->load_config($config);
} 'load_config lives';
my $ServiceLock = $OverWatch->servicelock();
isa_ok($ServiceLock, "App::OverWatch::ServiceLock");
return $ServiceLock;
}
sub run_servicelock_tests {
my $ServiceLock = shift;
## Create table
is($ServiceLock->create_table(), 1, "Create servicelocks table");
my $s = 'systemname';
my $s2 = 'differentsystem';
my $w = 'aworker';
my $t = 'some text for the lock';
my $w2 = 'differentworker';
## Create lock
is($ServiceLock->create_lock({ system => $s }), 1, "Create $s lock");
## Lock it
is($ServiceLock->try_lock({ system => $s, worker => $w, text => $t }), 1, "Get lock (succeed)");
## Fail to lock with a different worker
is($ServiceLock->try_lock({ system => $s, worker => $w2, text => $t }), 0, "Get lock (fail)");
## Try unlocking
is($ServiceLock->try_unlock({ system => $s, worker => $w }), 1, "Unlock (succeed)");
## Try unlocking
is($ServiceLock->try_unlock({ system => $s, worker => $w }), 0, "Unlock (fail)");
my $rh_lock = $ServiceLock->get_lock({ system => $s });
isa_ok($rh_lock, 'App::OverWatch::Lock');
is($rh_lock->status, 'UNLOCKED', 'Lock is UNLOCKED');
## Try locking again
is($ServiceLock->try_lock({ system => $s, worker => $w, text => $t }), 1, "Get lock (succeed)");
## Get all locks
my @Locks = $ServiceLock->get_all_locks();
is(scalar @Locks, 1, "get_all_locks() returns single lock");
isa_ok($Locks[0], 'App::OverWatch::Lock');
## Create second lock
is($ServiceLock->create_lock({ system => $s2 }), 1, "Create $s2 lock");
## Get all locks
@Locks = $ServiceLock->get_all_locks();
is(scalar @Locks, 2, "get_all_locks() returns 2 locks");
## Force unlock
( run in 0.642 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )