1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
# Backend parent leaked during fork in release 2.21.
# Also, test the backend itself for leakage.
my $scr = 't/scripts/be_memleak';
my $runs = 1000;
my $sanity = 100;
sub doruns { my($num, $cmd) = @_;
my $mem;
while (--$num) {
`$cmd 0`;
}
$mem = `$cmd 1`;
#print STDERR "mem=$mem\n";
if (!defined($mem) || $mem !~ /^\d/) {
$mem = 0;
}
return $mem;
}
sub onetest { my $cmd = shift;
utime time, time, $scr;
sleep 2;
my $memused = &doruns(1, $cmd);
if ($memused < $sanity) {
return undef;
}
$memused = &doruns(5, $cmd);
my $end = &doruns($runs, $cmd);
#print STDERR "mem was $memused end usage is $end\n";
my $result;
if ($end > $memused || $end < $sanity) {
$result = "not ok";
print STDERR " mem usage went from ${memused}K to ${end}K in $runs runs\n";
} else {
$result = "ok";
}
#print STDERR "Returning result $result\n";
return $result;
}
# Test#1 - backend parent fork leak.
my $result = &onetest("$ENV{SPEEDY} -- -r1 $scr 1");
if (!defined($result)) {
print "1..0 # Skipped: Cannot determine memory usage\n";
exit(0);
}
print "1..2\n$result\n";
# Test #2 - the backend itself
print &onetest("$ENV{SPEEDY} -- -r1000000 $scr 0"), "\n";
|