use strict;
use warnings;
use Test::More;
BEGIN {
plan skip_all => 'Slow test skipped unless $ENV{TEST_SLOW} is set'
unless $ENV{TEST_SLOW};
}
use Plack::Test::Suite;
use AnyEvent;
use HTTP::Request;
use HTTP::Request::Common;
my $LOOPS = 1024; # Default max fds on linux.
sub gentest {
my $name = shift;
return ($name, sub {
my $cb = shift;
for (1..$LOOPS) {
alarm 2;
local $SIG{ALRM} = sub {
fail("Timed out");
exit;
};
my $res = $cb->(GET "http://127.0.0.1/");
is $res->code, 200, "$name $_ of $LOOPS";
alarm 0;
}
});
}
local @Plack::Test::Suite::TEST = (
[
gentest('BadResponse'),
sub {
return [
200,
[ 'Content-Type' => 'text/plain', ],
'Hello'
];
},
],
[
gentest('GoodResponse'),
sub {
return [
200,
[ 'Content-Type' => 'text/plain', ],
['Hello']
];
},
],
);
# prevent Lint middleware from being used
Plack::Test::Suite->run_server_tests(sub {
my($port, $app) = @_;
my $server = Plack::Loader->load("Twiggy", port => $port, host => "127.0.0.1");
$server->run($app);
});
done_testing();