X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Faggregate%2Flive_component_controller_action_streaming.t;h=e14b9284745c1b2b449cdfb99ecb569a2f6e4ff2;hp=156956b367fbeebfa2d56a8bf314c826facb08a7;hb=7064f69b1dfb59d1f3bad647b2097d0320acce8a;hpb=ae29b412955743885e80350085167b54b69672da diff --git a/t/aggregate/live_component_controller_action_streaming.t b/t/aggregate/live_component_controller_action_streaming.t index 156956b..e14b928 100644 --- a/t/aggregate/live_component_controller_action_streaming.t +++ b/t/aggregate/live_component_controller_action_streaming.t @@ -1,5 +1,3 @@ -#!perl - use strict; use warnings; @@ -10,7 +8,7 @@ our $iters; BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 1; } -use Test::More tests => 10*$iters; +use Test::More; use Catalyst::Test 'TestApp'; if ( $ENV{CAT_BENCHMARK} ) { @@ -29,17 +27,19 @@ sub run_tests { ok( my $response = request('http://localhost/streaming'), 'Request' ); ok( $response->is_success, 'Response Successful 2xx' ); is( $response->content_type, 'text/plain', 'Response Content-Type' ); - + is( $response->header('X-Test-Header'), 'valid', 'Headers sent properly' ); + is( $response->header('X-Test-Header-Call-Count'), 1); + SKIP: { if ( $ENV{CATALYST_SERVER} ) { skip "Using remote server", 1; } - - # XXX: Length should be undef here, but HTTP::Request::AsCGI sets it - is( $response->content_length, 12, 'Response Content-Length' ); + + ok(!defined $response->content_length, 'No Content-Length for streaming responses'); + is(length $response->content, 12, 'Response content' ); } - + is( $response->content,, <<'EOF', 'Content is a stream' ); foo bar @@ -51,14 +51,14 @@ EOF SKIP: { if ( $ENV{CATALYST_SERVER} ) { - skip "Using remote server", 5; + skip "Using remote server", 10; } my $file = "$FindBin::Bin/../lib/TestApp/Controller/Action/Streaming.pm"; my $fh = IO::File->new( $file, 'r' ); my $buffer; if ( defined $fh ) { - $fh->read( $buffer, 1024 ); + $fh->read( $buffer, 2048 ); $fh->close; } @@ -67,6 +67,31 @@ EOF ok( $response->is_success, 'Response Successful 2xx' ); is( $response->content_type, 'text/plain', 'Response Content-Type' ); is( $response->content_length, -s $file, 'Response Content-Length' ); + is( $response->header('X-Test-Header'), 'valid', 'Headers sent properly' ); + is( $response->header('X-Test-Header-Call-Count'), 1); is( $response->content, $buffer, 'Content is read from filehandle' ); + + ok( $response = request('http://localhost/action/streaming/body_glob'), + 'Request' ); + ok( $response->is_success, 'Response Successful 2xx' ); + is( $response->content_type, 'text/plain', 'Response Content-Type' ); + is( $response->content_length, -s $file, 'Response Content-Length' ); + is( $response->header('X-Test-Header'), 'valid', 'Headers sent properly' ); + is( $response->header('X-Test-Header-Call-Count'), 1); + 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->header('X-Test-Header'), 'valid', 'Headers sent properly' ); + is( $response->header('X-Test-Header-Call-Count'), 1); + is( $response->content_length, $size, 'Response Content-Length' ); + is( $response->content, "\0" x $size, 'Content is read from filehandle' ); } } + +done_testing;