use strict; use warnings; use Test::More tests => 8; use constant SOCKPATH => 't/keyedmutexd.sock'; BEGIN { use_ok('KeyedMutex'); } my($km, $server_pid); # fire up the server if ($server_pid = fork) { die 'fork failed' if $server_pid == -1; } else { close STDOUT; open STDOUT, '>', '/dev/null' or die 'failed to reopen stdout'; exec 'keyedmutexd/keyedmutexd -t 2 -f -s ' . SOCKPATH; die 'failed to exec keyedmutexd'; } sleep 5; # establish connection eval { $km = KeyedMutex->new({ sock => SOCKPATH, }); }; ok($km, 'instantiation'); # lock tests is($km->lock('test'), 1, 'acquire lock'); ok($km->release, 'release'); # lock timeout tests is($km->lock('test'), 1, 'acquire lock'); sleep 5; ok($km->release, 'release'); # lock once more after timeout, should suceed using auto_reconnect feature is($km->lock('test'), 1, 'acquire lock'); ok($km->release, 'release'); # kill server kill 15, $server_pid;