httpd-test-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From c...@apache.org
Subject cvs commit: httpd-test/perl-framework/t/apache limits.t
Date Tue, 06 Nov 2001 22:09:17 GMT
coar        01/11/06 14:09:17

  Modified:    perl-framework/t/apache limits.t
  Log:
  	Whew!  Now tests upload chunking properly -- but Apache 1.3
  	may be responding with a 400 when it should be a 413.  Many
  	thanks to Doug MacEachern and Gisle Aas for their help with
  	getting the HTTP/1.1 chunking stuff working.
  
  Revision  Changes    Path
  1.4       +66 -7     httpd-test/perl-framework/t/apache/limits.t
  
  Index: limits.t
  ===================================================================
  RCS file: /home/cvs/httpd-test/perl-framework/t/apache/limits.t,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -u -r1.3 -r1.4
  --- limits.t	2001/11/03 16:16:08	1.3
  +++ limits.t	2001/11/06 22:09:17	1.4
  @@ -8,6 +8,7 @@
   use Apache::Test;
   use Apache::TestRequest;
   use Apache::TestUtil;
  +use LWP;
   
   #
   # These values are chosen to exceed the limits in extra.conf, namely:
  @@ -35,9 +36,19 @@
   
   #
   # Two tests for each of the conditions, plus two more for the
  -# chunked version of the body-too-large test.
  +# chunked version of the body-too-large test IFF we have the
  +# appropriate level of LWP support.
   #
  -plan tests => (@conditions * 2) + 2;
  +my $subtests = (@conditions * 2);
  +if ($LWP::VERSION >= 5.60) {
  +    $subtests += 2;
  +}
  +else {
  +    print "# Chunked upload tests will NOT be performed;\n",
  +          "# LWP 5.60 or later is required and you only have ",
  +          "$LWP::VERSION installed.\n";
  +}
  +plan tests => $subtests;
   
   my $testnum = 1;
   foreach my $cond (@conditions) {
  @@ -58,12 +69,48 @@
               $testnum++;
           }
           elsif ($cond eq 'bodysize') {
  -            foreach my $chunked qw(disabled enabled) {
  +            #
  +            # Make sure the last situation is keepalives off..
  +            #
  +            my @chunk_settings;
  +            if ($LWP::VERSION < 5.60) {
  +                @chunk_settings = (0);
  +            }
  +            else {
  +                @chunk_settings = (qw(1 0));
  +            }
  +            foreach my $chunked (@chunk_settings) {
                   print "# Testing LimitRequestBodySize; should $goodbad\n";
  -                set_chunking($chunked eq 'enabled');
  -                ok t_cmp(($goodbad eq 'succeed' ? 200 : 413),
  -                         GET_RC('/', content => $param),
  -                         "Test #$testnum");
  +                set_chunking($chunked);
  +                #
  +                # Note that this tests different things depending upon
  +                # the chunking state.  The content-body will not even
  +                # be counted if the Content-Length of an unchunked
  +                # request exceeds the server's limit; it'll just be
  +                # drained and discarded.
  +                #
  +                if ($chunked) {
  +                    my ($req, $resp, $url);
  +                    $url = Apache::TestRequest::resolve_url('/');
  +                    $req = HTTP::Request->new(GET => $url);
  +                    $req->content_type('text/plain');
  +                    $req->content(chunk_it($param));
  +                    $resp = Apache::TestRequest::user_agent->request($req);
  +                    ok t_cmp(($goodbad eq 'succeed' ? 200 : 413),
  +                             $resp->code,
  +                             "Test #$testnum");
  +                    if (! $resp->is_success) {
  +                        my $str = $resp->as_string;
  +                        $str =~ s:\n:\n# :gs;
  +                        print "# Failure details from server:\n# $str";
  +                    }
  +                }
  +                else {
  +                    ok t_cmp(($goodbad eq 'succeed' ? 200 : 413),
  +                             GET_RC('/', content_type => 'text/plain',
  +                                    content => $param),
  +                             "Test #$testnum");
  +                }
                   $testnum++;
               }
           }
  @@ -81,6 +128,18 @@
                        "Test #$testnum");
               $testnum++;
           }
  +    }
  +}
  +
  +sub chunk_it {
  +    my $str = shift;
  +    my $delay = shift;
  +
  +    $delay = 1 unless defined $delay;
  +    return sub {
  +        select(undef, undef, undef, $delay) if $delay;
  +        my $l = length($str);
  +        return substr($str, 0, ($l > 102400 ? 102400 : $l), "");
       }
   }
   
  
  
  

Mime
View raw message