File: be_memleak.t

package info (click to toggle)
speedy-cgi-perl 2.22-4
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 1,128 kB
  • ctags: 890
  • sloc: ansic: 4,487; sh: 1,105; perl: 945; makefile: 89
file content (55 lines) | stat: -rw-r--r-- 1,250 bytes parent folder | download | duplicates (4)
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";