The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use utf8;
use Test::More;
use Server::Starter qw(start_server restart_server stop_server); 
use File::Temp qw(tempdir);
use Test::TCP;

plan tests => 2;

my $dir = tempdir( CLEANUP => 1 );
my $pidfile = "$dir/pid";

test_tcp(
   server => sub {
        my $port = shift;

        start_server(
            pid_file  => $pidfile,
            daemonize => 1,
            port      => $port,
            exec      => [ $^X, 't/12-stop-server.pl' ],
        );
        exit 0;
    },
    client => sub {
        my $port = shift;

        while (!-s $pidfile) {
            note 'pid file is not available';
            sleep 1; # wait pid file
        }

        my $pid = do {
            open my $fh, '<', $pidfile
                or die "Cannot open $pidfile: $!";
            local $/;
            <$fh>;
        };
        note "PID=$pid";
        is(kill(0, $pid), 1, 'there is a process');

        stop_server(
            pid_file => $pidfile,
            port => $port,
        );
        ok((!-e $pidfile), 'pid file was unlinked');
    },
);