X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F30.with_pid_file.t;h=deb09172e36144d8704353654e1470fb3f8371de;hb=f3372ec96b39b4940acc393785b63df2ac229b96;hp=e7e439cdf705b4fb580a23caf2ad718dec56643d;hpb=10769ed347f340ee0e81d85933ae8f82ff0413da;p=gitmo%2FMooseX-Daemonize.git diff --git a/t/30.with_pid_file.t b/t/30.with_pid_file.t index e7e439c..deb0917 100644 --- a/t/30.with_pid_file.t +++ b/t/30.with_pid_file.t @@ -1,12 +1,10 @@ -#!/usr/bin/perl - use strict; use warnings; use File::Spec::Functions; -use Test::More 'no_plan'; -use Test::Exception; +use Test::More; +use Test::Fatal; use Test::Moose; use File::Temp qw(tempdir); @@ -14,7 +12,7 @@ my $dir = tempdir( CLEANUP => 1 ); BEGIN { - use_ok('MooseX::Daemonize::Core'); + use_ok('MooseX::Daemonize::Core'); } use constant DEBUG => 0; @@ -26,33 +24,33 @@ $ENV{MX_DAEMON_STDERR} = catfile($dir, 'Err.txt'); { package MyFooDaemon; use Moose; - + with 'MooseX::Daemonize::WithPidFile'; - + sub init_pidfile { MooseX::Daemonize::Pid::File->new( file => $PIDFILE ) } - + sub start { my $self = shift; - - # this tests our bad PID + + # this tests our bad PID # cleanup functionality. print "Our parent PID is " . $self->pidfile->pid . "\n" if ::DEBUG; - + $self->daemonize; return unless $self->is_daemon; - + # make it easy to find with ps $0 = 'test-app-2'; - $SIG{INT} = sub { - print "Got INT! Oh Noes!"; + $SIG{INT} = sub { + print "Got INT! Oh Noes!"; $self->pidfile->remove; exit; - }; + }; while (1) { - print "Hello from $$\n"; - sleep(10); + print "Hello from $$\n"; + sleep(10); } exit; } @@ -73,9 +71,11 @@ ok($d->has_pidfile, '... we have a pidfile value'); ok(!(-e $PIDFILE), '... the PID file does not exist yet'); -lives_ok { - $d->start; -} '... successfully daemonized from (' . $$ . ')'; +is( + exception { $d->start }, + undef, + '... successfully daemonized from (' . $$ . ')', +); my $p = $d->pidfile; isa_ok($p, 'MooseX::Daemonize::Pid::File'); @@ -96,7 +96,15 @@ if (DEBUG) { } kill INT => $p->pid; diag "killed $pid" if DEBUG; -sleep(2); + +# give the process time to be killed on slow/loaded systems +for (1..10) { + last unless kill 0 => $pid; + # sleep a little before retrying + sleep(2); +} + + if (DEBUG) { diag `ps $pid`; diag "-------"; @@ -108,3 +116,6 @@ ok(!(-e $PIDFILE), '... the PID file has been removed'); unlink $ENV{MX_DAEMON_STDOUT}; unlink $ENV{MX_DAEMON_STDERR}; + +done_testing; +