From: Florian Ragwitz Date: Fri, 21 Aug 2009 21:22:45 +0000 (+0000) Subject: Add test for sending the body from a filehandle with more data than the default chunk... X-Git-Tag: 5.80010~2 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=a9b467d3d36fc47a5fc63b5c8b13141b89bc9fd7 Add test for sending the body from a filehandle with more data than the default chunksize of 64k. --- diff --git a/t/aggregate/live_component_controller_action_streaming.t b/t/aggregate/live_component_controller_action_streaming.t index 156956b..4300744 100644 --- a/t/aggregate/live_component_controller_action_streaming.t +++ b/t/aggregate/live_component_controller_action_streaming.t @@ -10,7 +10,7 @@ our $iters; BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 1; } -use Test::More tests => 10*$iters; +use Test::More tests => 15*$iters; use Catalyst::Test 'TestApp'; if ( $ENV{CAT_BENCHMARK} ) { @@ -69,4 +69,14 @@ EOF is( $response->content_length, -s $file, 'Response Content-Length' ); is( $response->content, $buffer, 'Content is read from filehandle' ); } + + { + my $size = 128 * 1024; # more than one read with the default chunksize + + ok( my $response = request('http://localhost/action/streaming/body_large'), 'Request' ); + ok( $response->is_success, 'Response Successful 2xx' ); + is( $response->content_type, 'text/plain', 'Response Content-Type' ); + is( $response->content_length, $size, 'Response Content-Length' ); + is( $response->content, "\0" x $size, 'Content is read from filehandle' ); + } } diff --git a/t/lib/TestApp/Controller/Action/Streaming.pm b/t/lib/TestApp/Controller/Action/Streaming.pm index 5a757b0..08c7c65 100644 --- a/t/lib/TestApp/Controller/Action/Streaming.pm +++ b/t/lib/TestApp/Controller/Action/Streaming.pm @@ -16,7 +16,7 @@ EOF sub body : Local { my ( $self, $c ) = @_; - + my $file = "$FindBin::Bin/../lib/TestApp/Controller/Action/Streaming.pm"; my $fh = IO::File->new( $file, 'r' ); if ( defined $fh ) { @@ -27,4 +27,16 @@ sub body : Local { } } +sub body_large : Local { + my ($self, $c) = @_; + + # more than one write with the default chunksize + my $size = 128 * 1024; + + my $data = "\0" x $size; + open my $fh, '<', \$data; + $c->res->content_length($size); + $c->res->body($fh); +} + 1;