stas        2003/04/02 21:51:23

  Added:       t/filter out_str_req_eos.t
               t/filter/TestFilter out_str_req_eos.pm
  Log:
  this new test exposes a bug in streaming filter eos handling when more
  than one mp stream filter is used. the fix is coming soon.
  
  Revision  Changes    Path
  1.1                  modperl-2.0/t/filter/out_str_req_eos.t
  
  Index: out_str_req_eos.t
  ===================================================================
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::Test;
  use Apache::TestRequest;
  use Apache::TestUtil;
  
  plan tests => 1, ['include'];
  
  my $location = '/TestFilter::out_str_req_eos';
  
  my $content = 'BODY';
  my $prefix = 'PREFIX_';
  my $suffix = '_SUFFIX';
  
  my $expected = join '', $prefix, $content, $suffix;
  my $received = POST_BODY $location, content => $content;
  
  ok t_cmp($expected, $received, 
      "testing the EOS bucket forwarding through the mp filters chains");
  
  
  
  1.1                  modperl-2.0/t/filter/TestFilter/out_str_req_eos.pm
  
  Index: out_str_req_eos.pm
  ===================================================================
  package TestFilter::out_str_req_eos;
  
  # here we test how EOS is passed from one streaming filter to another,
  # making sure that it's not lost
  
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::Filter ();
  
  use Apache::Const -compile => qw(OK M_POST);
  
  my $prefix = 'PREFIX_';
  my $suffix = '_SUFFIX';
  
  sub add_prefix {
      my $filter = shift;
  
      #warn "add_prefix called\n";
  
      unless ($filter->ctx) {
          $filter->print($prefix);
          $filter->ctx(1);
      }
  
      while ($filter->read(my $buffer, 1024)){
          #warn "add_prefix read: [$buffer]\n";
          $filter->print($buffer);
      }
  
      Apache::OK;
  }
  
  sub add_suffix {
      my $filter = shift;
  
      #warn "add_suffix called\n";
  
      while ($filter->read(my $buffer, 1024)){
          #warn "add_suffix read: [$buffer]\n";
          $filter->print($buffer);
      }
  
      if ($filter->seen_eos) {
          $filter->print($suffix);
          $filter->ctx(1);
      }
  
      Apache::OK;
  }
  
  sub handler {
      my $r = shift;
  
      $r->content_type('text/plain');
  
      if ($r->method_number == Apache::M_POST) {
          $r->print(ModPerl::Test::read_post($r));
      }
  
      return Apache::OK;
  }
  
  1;
  __DATA__
  <NoAutoConfig>
      PerlModule TestFilter::out_str_req_eos
      <Location /TestFilter::out_str_req_eos>
          SetHandler modperl
          PerlResponseHandler     TestFilter::out_str_req_eos
          PerlOutputFilterHandler TestFilter::out_str_req_eos::add_prefix
          PerlOutputFilterHandler TestFilter::out_str_req_eos::add_suffix
      </Location>
  </NoAutoConfig>
  
  
  
  
  
  
  

Reply via email to