Proper timeouts now working. Also display incremental progress reports during a test to make hung things easier to see.
This commit is contained in:
parent
3b050e25be
commit
a826de8da7
3 changed files with 13 additions and 5 deletions
BIN
everything.stor
BIN
everything.stor
Binary file not shown.
|
@ -8,7 +8,7 @@ use Data::Dumper;
|
|||
use List::Util qw/uniq/;
|
||||
use IPC::Run qw/run timeout harness/;
|
||||
use Module;
|
||||
use Time::HiRes qw/sleep/;
|
||||
use Time::HiRes qw/sleep time/;
|
||||
|
||||
our $perlbrew_env = 'blead';
|
||||
|
||||
|
@ -57,21 +57,29 @@ sub run_cpanm {
|
|||
|
||||
my $out;
|
||||
my $in='';
|
||||
my $h = harness \@cmd, '<', \$in, '>&', \$out, timeout(10*60); # timeout after 10 minutes
|
||||
$|++;
|
||||
|
||||
my $timeout = 10*60;
|
||||
|
||||
my $h = harness \@cmd, '<', \$in, '>&', \$out, timeout($timeout); # timeout after 10 minutes
|
||||
eval {
|
||||
$h->start();
|
||||
|
||||
my $st = time();
|
||||
while($h->pumpable()) { # still getting output
|
||||
$h->pump();
|
||||
$h->pump_nb();
|
||||
if (length($out) > 20*1024*1024) { # 20 meg limit on output
|
||||
die "Output too long. Failing build\n";
|
||||
}
|
||||
sleep(0.1);
|
||||
printf "%03.03f %08d\r", time()-$st, length($out);
|
||||
die "Timeout" if time()-$st > $timeout;
|
||||
}
|
||||
|
||||
$h->finish();
|
||||
};
|
||||
my $err = $@;
|
||||
$h->finish() if $err;
|
||||
print " "x20, "\r";
|
||||
eval {$h->finish()} if $err;
|
||||
$h->kill_kill(); # reap all the kids
|
||||
my $exitcode = $err || $h->full_result();
|
||||
|
||||
|
|
BIN
modcache.stor
BIN
modcache.stor
Binary file not shown.
Loading…
Add table
Reference in a new issue