X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Foptional_memleak.t;h=499c365b1be9df571ff65e29ff57b57b0551274d;hp=ba193a36fa9ab7ae89c7aff40640defcae86acc0;hb=804143deca6f2bebfc87cc78cf397201b6028bc5;hpb=4853fb50e3c7138bbe513fed2b22574a2d988ed1 diff --git a/t/optional_memleak.t b/t/optional_memleak.t index ba193a3..499c365 100644 --- a/t/optional_memleak.t +++ b/t/optional_memleak.t @@ -1,5 +1,3 @@ -#!perl - use strict; use warnings; @@ -16,15 +14,17 @@ use Catalyst::Test 'TestApp'; eval "use Proc::ProcessTable"; plan skip_all => 'Proc::ProcessTable required for this test' if $@; -eval "use HTTP::Body 0.03"; -plan skip_all => 'HTTP::Body >= 0.03 required for this test' if $@; - -eval "use YAML"; -plan skip_all => 'YAML required for this test' if $@; +use JSON::MaybeXS qw(decode_json); our $t = Proc::ProcessTable->new( cache_ttys => 1 ); -our ( $initial, $final ) = ( 0, 0 ); -our $tests = YAML::LoadFile("$FindBin::Bin/optional_stress.yml"); +our ( $initial, $final ) = ( 0, 0 ); +my $test_data = do { + open my $fh, '<:raw', "$FindBin::Bin/optional_stress.json" or die "$!"; + local $/; + <$fh>; +}; + +our $tests = decode_json($test_data); my $total_tests = 0; @@ -38,7 +38,7 @@ if ( $user_test ) { else { map { $total_tests += scalar @{ $tests->{$_} } } keys %{$tests}; plan tests => $total_tests; - + foreach my $test_group ( keys %{$tests} ) { foreach my $test ( @{ $tests->{$test_group} } ) { run_test( $test ); @@ -48,40 +48,40 @@ else { sub run_test { my $uri = shift || die 'No URI given for test'; - + print "TESTING $uri\n"; - + # make a few requests to set initial memory size for ( 1 .. 3 ) { request( $uri ); } - + $initial = size_of($$); print "Initial Size: $initial\n"; - + for ( 1 .. 500 ) { request( $uri ); } - + $final = size_of($$); print "Final Size: $final\n"; - + if ( $final > $initial ) { print "Leaked: " . ($final - $initial) . "K\n"; } - + is( $final, $initial, "'$uri' memory is not leaking" ); } sub size_of { my $pid = shift; - + foreach my $p ( @{ $t->table } ) { if ( $p->pid == $pid ) { return $p->rss; } } - + die "Pid $pid not found?"; }