Async-Simple-Pool
view release on metacpan or search on metacpan
t/06-task-forktmpfile.t view on Meta::CPAN
#!perl -T
use Modern::Perl;
use POSIX;
use Test::Spec;
use Test::Exception;
use Time::HiRes qw/ sleep /;
plan tests => 21;
# use lib '../lib';
use Async::Simple::Task::ForkTmpFile;
my $task;
my $timeout = 1;
my $sub = sub { sleep $timeout; return $_[0]-1 };
my $sub_scalar = sub { return $_[0]+1 };
my $sub_hash = sub { return { y => $_[0]->{x}+1 } };
my $sub_array = sub { return [ reverse @{ $_[0] } ] };
describe 'All' => sub {
describe 'init data' => sub {
# it 'init errors' => sub {
# # Create a fork process, which will wait for data and execute &$sub if data will be passed
# ok( ! eval{ Async::Simple::Task::ForkTmpFile->new( ) } && $@, 'no params' );
# undef $@;
# ok( ! eval{ Async::Simple::Task::ForkTmpFile->new( task => 1234 ) } && $@, 'bad params' );
# undef $@;
# };
it 'init ok' => sub {
my $task = Async::Simple::Task::ForkTmpFile->new( task => $sub, id => 12345 );
my $pid = $task->pid;
isa_ok( $task, 'Async::Simple::Task::ForkTmpFile', 'successful init.' );
is( ref $task->reader, '', 'have scalar reader=' . $task->reader );
is( ref $task->writer, '', 'have scalar writer=' . $task->writer );
isa_ok( $task->task, 'CODE', 'task exists and is a CODE' );
is( $task->timeout, 0.01, 'default timeout' );
is( $task->id, 12345, 'id found' );
ok( $task->pid =~ /^-?\d{2,}$/, 'fork done, pid setted' );
is( $task->kill_on_exit, 1, 'default kill_on_exit' );
ok( -d $task->tmp_dir, 'tmp directory exists:' . $task->tmp_dir );
ok( -w $task->tmp_dir, 'tmp dir is writable' . $task->tmp_dir );
is( waitpid( $task->pid, WNOHANG ), 0, 'kid is active' );
undef $task;
sleep 0.2;
ok( waitpid( $pid, WNOHANG ) =~ /^-?\d{1,}$/, 'kid closed' ); # win: -1, linux: pid
};
it 'init params check' => sub {
my $task = Async::Simple::Task::ForkTmpFile->new( task => $sub, timeout => 1, kill_on_exit => 0, tmp_dir => 'var_tmp' );
is( $task->timeout, 1, 'timeout setted' );
is( $task->tmp_dir, 'var_tmp', 'tmpdir setted to user`s' );
is( $task->kill_on_exit, 0, 'kill_on_exit setted' );
$task->kill_on_exit(1);
undef $task;
};
};
( run in 2.374 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )