fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / op / gc-leaky-box.t
blob2be626f2d1a66c91f8e4a608f6564774262e85d7
1 #!./parrot
2 # Copyright (C) 2010, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/op/gc-leaky-box.t - test for memory leaks in the Garbage Collector
9 =head1 SYNOPSIS
11     % prove t/op/gc-leaky-box.t
13 =head1 DESCRIPTION
15 Tests that we actually do a GC mark and sweep after a large number of PMC's have
16 been created. Test suggested by chromatic++ . Also includes tests for
17 TT1465 - http://trac.parrot.org/parrot/ticket/1465 .
19 =cut
21 # 20:57 <chromatic> For every million PMCs allocated, see that the GC has performed a mark/sweep.
23 .include 'interpinfo.pasm'
25 .sub _main :main
26     .include 'test_more.pir'
28     plan(3)
30     $S0 = interpinfo .INTERPINFO_GC_SYS_NAME
31     if $S0 == "inf" goto dont_run_hanging_tests
33     test_gc_mark_sweep()
35     goto test_end
36   dont_run_hanging_tests:
37     ok(1, "#TODO - Test disabled on gc_inf")
38     ok(1, "#TODO - Test disabled on gc_inf")
39     ok(1, "#TODO - Test disabled on gc_inf")
40   test_end:
41 .end
43 .sub test_gc_mark_sweep
44     .local int counter
46     counter = 0
47   loop:
48     $P0 = box 0
49     inc counter
50     if counter < 2e6 goto loop
52     $I1 = interpinfo.INTERPINFO_GC_COLLECT_RUNS
53     $I2 = interpinfo.INTERPINFO_GC_MARK_RUNS
54     $I3 = interpinfo.INTERPINFO_TOTAL_MEM_ALLOC
56     $S1 = $I1
57     $S0 = "performed " . $S1
58     $S0 .= " (which should be >=1) GC collect runs"
59     ok($I1,$S0)
61     $S1 = $I2
62     $S0 = "performed " . $S1
63     $S0 .= " (which should be >=1) GC mark runs"
64     ok($I2,$S0)
66     $S1 = $I3
67     $S0 = "allocated " . $S1
68     $S0 .= " (which should be <= 2_000_000) bytes of memory"
69     $I4 = isle $I3, 2000000
70     ok($I4,$S0)
71 .end
73 # Local Variables:
74 #   mode: pir
75 #   fill-column: 100
76 # End:
77 # vim: expandtab shiftwidth=4 ft=pir: