fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / op / gc-leaky-call.t
blob3840fb4694f71f948bab0e32f1c8248b9db288b1
1 #!./parrot
2 # Copyright (C) 2010, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/op/gc-leaky-call.t - test for memory leaks in the Garbage Collector
9 =head1 SYNOPSIS
11     % prove t/op/gc-leaky-call.t
13 =head1 DESCRIPTION
15 Tests that we actually do a GC mark and sweep after a large number of
16 function calls.
18 =cut
20 .include 'interpinfo.pasm'
22 .sub _main :main
23     .include 'test_more.pir'
25     plan(3)
27     $S0 = interpinfo .INTERPINFO_GC_SYS_NAME
28     if $S0 == "inf" goto dont_run_hanging_tests
30     test_gc_mark_sweep()
32     goto test_end
33   dont_run_hanging_tests:
34     ok(1, "#TODO - Test disabled on gc_inf")
35     ok(1, "#TODO - Test disabled on gc_inf")
36     ok(1, "#TODO - Test disabled on gc_inf")
37   test_end:
38 .end
40 .sub test_gc_mark_sweep
41     .local int counter
43     counter = 0
44   loop:
45     consume()
46     inc counter
47     if counter < 1e6 goto loop
49     $I1 = interpinfo.INTERPINFO_GC_COLLECT_RUNS
50     $I2 = interpinfo.INTERPINFO_GC_MARK_RUNS
51     $I3 = interpinfo.INTERPINFO_TOTAL_MEM_ALLOC
53     $S1 = $I1
54     $S0 = "performed " . $S1
55     $S0 .= " (which should be >=1) GC collect runs"
56     ok($I1,$S0)
58     $S1 = $I2
59     $S0 = "performed " . $S1
60     $S0 .= " (which should be >=1) GC mark runs"
61     ok($I2,$S0)
63     $S1 = $I3
64     $S0 = "allocated " . $S1
65     $S0 .= " (which should be <= 2_000_000) bytes of memory"
66     $I4 = isle $I3, 2000000
67     ok($I4,$S0)
68 .end
70 .sub consume
71 .end
73 # Local Variables:
74 #   mode: pir
75 #   fill-column: 100
76 # End:
77 # vim: expandtab shiftwidth=4 ft=pir: