Mercurial > hg > nginx-tests
changeset 1144:66c7dee0431c
Tests: some more large_client_header_buffers tests.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 02 Mar 2017 05:21:11 +0300 |
parents | b9d9c962255f |
children | f193664e06d8 |
files | http_header_buffers.t |
diffstat | 1 files changed, 50 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/http_header_buffers.t +++ b/http_header_buffers.t @@ -24,7 +24,7 @@ use Test::Nginx; select STDERR; $| = 1; select STDOUT; $| = 1; -my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(8) +my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(10) ->write_file_expand('nginx.conf', <<'EOF'); %%TEST_GLOBALS%% @@ -149,6 +149,8 @@ like(http( "GET / HTTP/1.1" . CRLF . "Host: foo" . CRLF . "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . CRLF . "GET / HTTP/1.1" . CRLF . "Host: foo" . CRLF . @@ -161,6 +163,8 @@ like(http( "GET / HTTP/1.1" . CRLF . "Host: foo" . CRLF . "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . CRLF . "GET /foo" . ("1234567890" x 20) . "bar HTTP/1.1" . CRLF . "Host: foo" . CRLF . @@ -175,6 +179,8 @@ like(http( "GET / HTTP/1.1" . CRLF . "Host: foo" . CRLF . "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . CRLF, sleep => 0.1, body => "GET / HTTP/1.1" . CRLF . @@ -188,6 +194,8 @@ like(http( "GET / HTTP/1.1" . CRLF . "Host: foo" . CRLF . "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . CRLF, sleep => 0.1, body => "GET /foo" . ("1234567890" x 20) . "bar HTTP/1.1" . CRLF . @@ -196,4 +204,45 @@ sleep => 0.1, body => CRLF ), qr!X-URI: /foo(1234567890){20}bar!, 'long request line after keepalive'); +# the same as the above, but with pipelining and then keepalive; +# this ensures that previously allocated buffers are properly cleaned +# up when we set keepalive handler, including hc->free + +like(http( + "GET / HTTP/1.1" . CRLF . + "Host: foo" . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + CRLF . + "GET / HTTP/1.1" . CRLF . + "Host: foo" . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + CRLF, +sleep => 0.1, body => + "GET / HTTP/1.1" . CRLF . + "Host: foo" . CRLF . + "Connection: close" . CRLF . + "X-Foo: foo" . ("1234567890" x 20) . "bar" . CRLF . + CRLF +), qr/X-Foo: foo(1234567890){20}bar/, 'long header after both'); + +like(http( + "GET / HTTP/1.1" . CRLF . + "Host: foo" . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + CRLF . + "GET / HTTP/1.1" . CRLF . + "Host: foo" . CRLF . + "X-Foo: " . ("1234567890" x 20) . CRLF . + CRLF, +sleep => 0.1, body => + "GET /foo" . ("1234567890" x 20) . "bar HTTP/1.1" . CRLF . + "Host: foo" . CRLF . + "Connection: close" . CRLF . + CRLF +), qr!X-URI: /foo(1234567890){20}bar!, 'long request line after both'); + ###############################################################################