# unreliable.pl - Simulate a program that sometimes just hangs
if (rand(10) > 8){
sleep 1 while 1 > 0;
}
else{
print "--------------------------------\n",
"It worked this time, no problems\n",
"--------------------------------\n";
}
####
# timeout.pl - Expect Test Program
use Expect;
my $timeout=5;
foreach my $i (1..20)
{
my $exp = Expect->spawn("./unreliable.pl")
or die "Cannot spawn unreliable process $!\n";
$exp->expect($timeout);
}
####
use Expect;
my $timeout=5;
foreach my $i (1..20)
{
my $exp = Expect->spawn("./unreliable.pl")
or die "Cannot spawn unreliable process $!\n";
$exp->expect($timeout,
[
timeout =>
sub
{
print "Process timed out.\n";
}
]
);
}
####
use Expect;
my $timeout=5;
foreach my $i (1..20)
{
my $spawn_ok="not OK";
my $exp = Expect->spawn("./unreliable.pl")
or die "Cannot spawn unreliable process $!\n";
$exp->expect($timeout,
[
'It worked',
sub
{
$spawn_ok = "OK";
exp_continue;
}
],
[
timeout =>
sub
{
print "Process timed out.\n";
}
]
);
print "Status: $spawn_ok\n";
}