Coro-Twiggy

 view release on metacpan or  search on metacpan

t/02-requests.t  view on Meta::CPAN

{ local $/; $resp = <$cs> }
ok $resp, "response";
like $resp, qr{^HTTP/1\.[01]\s+500}, 'code';
like $resp, qr{application have to return an ARRAYREF}, 'message';
ok $env, 'PSGI application was called';

$env = undef;
$server->register_service(sub { ($env) = @_; ['abc'] });
tcp_connect 'unix/', $socket, Coro::rouse_cb;
$cs = unblock +(Coro::rouse_wait)[0];
ok $cs, 'connected to server';
print $cs "GET / HTTP/1.0\015\012\015\12";
{ local $/; $resp = <$cs> }
ok $resp, "response";
like $resp, qr{^HTTP/1\.[01]\s+500}, 'code';
like $resp, qr{wrong response}, 'message';
ok $env, 'PSGI application was called';

$env = undef;
$server->register_service(sub {
    ($env) = @_;
    [200, ['Content-Type', 'text/plain'], ['test passed']]
});
tcp_connect 'unix/', $socket, Coro::rouse_cb;
$cs = unblock +(Coro::rouse_wait)[0];
ok $cs, 'connected to server';
print $cs "GET / HTTP/1.0\015\012\015\12";
{ local $/; $resp = <$cs> }
ok $resp, "response";
like $resp, qr{^HTTP/1\.[01]\s+200}, 'code';
like $resp, qr{test passed}, 'message';
ok $env, 'PSGI application was called';

my $started = AnyEvent::now();
$env = undef;
$server->register_service(sub {
    ($env) = @_;
    Coro::AnyEvent::sleep .5;
    [200, ['Content-Type', 'text/plain'], ['test passed']]
});
tcp_connect 'unix/', $socket, Coro::rouse_cb;
$cs = unblock +(Coro::rouse_wait)[0];
ok $cs, 'connected to server';
print $cs "GET / HTTP/1.0\015\012\015\12";
{ local $/; $resp = <$cs> }
ok $resp, "response";
like $resp, qr{^HTTP/1\.[01]\s+200}, 'code';
like $resp, qr{test passed}, 'message';
ok $env, 'PSGI application was called';
my $delay = AnyEvent::now() - $started;
cmp_ok $delay, '>=', 0.5, 'async process took more that 0.5 seconds';


$server->register_service(sub { die "привет" });
tcp_connect 'unix/', $socket, Coro::rouse_cb;
$cs = unblock +(Coro::rouse_wait)[0];
ok $cs, 'connected to server';
print $cs "GET / HTTP/1.0\015\012\015\12";
{ local $/; $resp = <$cs> }
ok $resp, "response";
ok eval { utf8::decode $resp }, 'response was decoded';
like $resp, qr{^HTTP/1\.[01]\s+500}, 'code';
like $resp, qr{привет at}, 'message';
ok $env, 'PSGI application was called';

}

Coro::AnyEvent::sleep 0.5;

my ($resp, $env);
tcp_connect 'unix/', $socket, Coro::rouse_cb;
my $cs = Coro::rouse_wait;
ok !$cs, 'Socket was closed';

END {
    if ($temp_dir) {
        rmtree $temp_dir;
        ok !-d $temp_dir, "!-d $temp_dir";
    }
}



( run in 0.416 second using v1.01-cache-2.11-cpan-e93a5daba3e )