Add Google Analytics | Add robots.txt | Minor tweak on css
[catagits/BackPAN-Web.git] / t / 01-leaktrace.t
CommitLineData
b67ffc2e 1use strict;
2use warnings;
3use lib 'lib';
4use BackPAN::Web;
5use Plack::Test;
6use HTTP::Request::Common;
7use Test::More;
8use Devel::Cycle;
9use Data::Dumper;
10use Devel::Events::Handler::ObjectTracker;
11use Devel::Events::Filter::RemoveFields;
12use Devel::Events::Generator::Objects;
13
14$ENV{PLACK_ENV} = 'test';
15
16my $tracker = Devel::Events::Handler::ObjectTracker->new();
17
18my $gen = Devel::Events::Generator::Objects->new(
19 handler => Devel::Events::Filter::RemoveFields->new(
20 fields => [qw/generator/],
21 handler => $tracker,
22),
23);
24
25
26my $app = BackPAN::Web->as_psgi_app;
27
28my $run = sub {
29 $gen->enable();
30 test_psgi app => $app,
31 client => sub {
32 my $cb = shift;
33 foreach my $path (qw{/ /releases /dists /authors /about}) {
34 for (1..1000) {
35 my $res = $cb->(GET $path);
36 ok($res->code == 200) or diag($res->code);
37 }
38 }
39 };
40 $gen->disable();
41};
42$run->();
43
44my @leaked_objects = keys %{ $tracker->live_objects };
45
46print "leaked ", scalar(@leaked_objects), " objects\n";
47
48foreach my $object ( @leaked_objects ) {
49 print "Leaked object: $object\n";
50
51 # the event that generated it
52 #print Dumper( $object, $tracker->live_objects->{$object} );
53
54 find_cycle( $object );
55}
56
57done_testing();