diff --git a/bin/lacuna.psgi b/bin/lacuna.psgi index 18f179a2..e6700207 100644 --- a/bin/lacuna.psgi +++ b/bin/lacuna.psgi @@ -42,6 +42,24 @@ my $gameover = [ 500, ]; my $app = builder { + unless ($^O eq 'darwin') { + ##Wrapper to fully enable size limiting. The psgix.harakiri has to be set for it to work. + enable sub { + my $app = shift; + return sub { + my ($env) = @_; + $env->{'psgix.harakiri'} = 1; + return $app->($env); + } + }; + enable "Plack::Middleware::SizeLimit" => ( + max_unshared_size_in_kb => '51200', # 50MB + # min_shared_size_in_kb => '8192', # 8MB + max_process_size_in_kb => '125000', # 125MB + check_every_n_requests => 3 + ); + enable "Plack::Middleware::LightProfile"; + } enable 'CrossOrigin', origins => '*', methods => ['GET', 'POST'], max_age => 60*60*24*30, headers => '*'; diff --git a/t/middleware/lightprofiler.t b/t/middleware/lightprofiler.t new file mode 100644 index 00000000..2b4038bc --- /dev/null +++ b/t/middleware/lightprofiler.t @@ -0,0 +1,33 @@ +use lib '/data/Lacuna-Server/lib'; + +use Test::More; +use Log::Any::Test; +use Log::Any qw/$log/; + +use Plack::Builder; +use Plack::Test; +use HTTP::Request::Common; + +use_ok 'Plack::Middleware::LightProfile'; + +my $base_app = sub { return [ 200, [], ['Body'] ]; }; + +my $app = builder { + enable 'LightProfile'; + $base_app; +}; + +test_psgi + app => $app, + client => sub { + my $cb = shift; + my $res = $cb->(GET "/"); + is $res->code, 200, 'Call succeeded'; + is $res->content, 'Body', '... returned correct content'; + } + ; + +$log->contains_ok(qr/response time: \d.\d+ end memory: \d+ added memory: \d+/, 'Logged memory and time data'); +$log->empty_ok('Only one message in the log'); + +done_testing;