mirror of
https://github.com/h2o/h2o.git
synced 2025-04-20 02:44:45 +08:00
46 lines
1.2 KiB
Perl
46 lines
1.2 KiB
Perl
use strict;
|
|
use warnings;
|
|
use Net::EmptyPort qw(check_port);
|
|
use Test::More;
|
|
use Time::HiRes;
|
|
use t::Util;
|
|
|
|
my $client_prog = bindir() . "/h2o-httpclient";
|
|
plan skip_all => "$client_prog not found"
|
|
unless -e $client_prog;
|
|
|
|
my $upstream_port = empty_port();
|
|
my $upstream = spawn_server(
|
|
argv => [ qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), $upstream_port, ASSETS_DIR . "/upstream.psgi" ],
|
|
is_ready => sub {
|
|
check_port($upstream_port);
|
|
},
|
|
);
|
|
|
|
my $server = spawn_h2o(<< "EOT");
|
|
send-informational: all
|
|
num-threads: 1
|
|
hosts:
|
|
default:
|
|
paths:
|
|
/non-streaming:
|
|
mruby.handler: |
|
|
proc do |env|
|
|
# \$stderr.puts env.inspect
|
|
[200, {}, env['rack.input']]
|
|
end
|
|
/streaming:
|
|
proxy.reverse.url: http://127.0.0.1:$upstream_port/echo
|
|
EOT
|
|
|
|
run_with_curl($server, sub {
|
|
my ($proto, $port, $curl) = @_;
|
|
|
|
for my $mode (qw(streaming non-streaming)) {
|
|
my $resp = `$curl -s --dump-header /dev/stderr -X POST --data-binary -xxxxx -H "expect: 100-continue" '$proto://127.0.0.1:$port/$mode' 2>&1`;
|
|
like $resp, qr{HTTP/[0-9.]+ 100\s.*HTTP/[0-9.]+ 200\s}is, $mode;
|
|
}
|
|
});
|
|
|
|
done_testing;
|