use File::Spec::Functions;
-use Test::More 'no_plan';
+use Test::More;
use Test::Fatal;
use Test::Moose;
use File::Temp qw(tempdir);
BEGIN {
- use_ok('MooseX::Daemonize::Core');
+ use_ok('MooseX::Daemonize::Core');
}
use constant DEBUG => 0;
{
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;
}
}
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 "-------";
unlink $ENV{MX_DAEMON_STDOUT};
unlink $ENV{MX_DAEMON_STDERR};
+
+done_testing;
+