Mercurial > hg > nginx-tests
changeset 1613:d7ec131d305a
Tests: reworked proxy_unfinished.t to use http_content().
This somewhat simplifies tests and makes it possible to better check
for unexpected corruption of chunked responses, such as the one recently
fixed in nginx-quic experimental branch.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Tue, 17 Nov 2020 17:39:11 +0300 |
parents | 8659123d2d37 |
children | bc0990ea2e5b |
files | lib/Test/Nginx.pm proxy_unfinished.t |
diffstat | 2 files changed, 18 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/Test/Nginx.pm Tue Nov 17 17:39:09 2020 +0300 +++ b/lib/Test/Nginx.pm Tue Nov 17 17:39:11 2020 +0300 @@ -853,12 +853,18 @@ } my $content = ''; + my $len = -1; + while ($body =~ /\G\x0d?\x0a?([0-9a-f]+)\x0d\x0a?/gcmsi) { - my $len = hex($1); + $len = hex($1); $content .= substr($body, pos($body), $len); pos($body) += $len; } + if ($len != 0) { + $content .= '[no-last-chunk]'; + } + return $content; }
--- a/proxy_unfinished.t Tue Nov 17 17:39:09 2020 +0300 +++ b/proxy_unfinished.t Tue Nov 17 17:39:11 2020 +0300 @@ -105,28 +105,28 @@ # make sure there is no final chunk in unfinished responses -like(http_get_11('/length'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, +like(http_get_11('/length'), qr/unfinished.*no-last-chunk/s, 'length no final chunk'); -like(http_get_11('/chunked'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, +like(http_get_11('/chunked'), qr/unfinished.*no-last-chunk/s, 'chunked no final chunk'); # but there is final chunk in complete responses -like(http_get_11('/length/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, +like(http_get_11('/length/ok'), qr/finished\x0d\x0a$/s, 'length final chunk'); -like(http_get_11('/chunked/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, +like(http_get_11('/chunked/ok'), qr/finished\x0d\x0a$/s, 'chunked final chunk'); # the same with proxy_buffering set to off -like(http_get_11('/un/length'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, +like(http_get_11('/un/length'), qr/unfinished.*no-last-chunk/s, 'unbuffered length no final chunk'); -like(http_get_11('/un/chunked'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, +like(http_get_11('/un/chunked'), qr/unfinished.*no-last-chunk/s, 'unbuffered chunked no final chunk'); -like(http_get_11('/un/length/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, +like(http_get_11('/un/length/ok'), qr/finished\x0d\x0a$/s, 'unbuffered length final chunk'); -like(http_get_11('/un/chunked/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, +like(http_get_11('/un/chunked/ok'), qr/finished\x0d\x0a$/s, 'unbuffered chunked final chunk'); # big responses @@ -144,7 +144,7 @@ my $r = http_get_11('/proxy/big.html', sleep => 0.5); SKIP: { -skip 'finished', 1 if length(http_content($r)) == 1024 * 1024 + 8; +skip 'finished', 1 if length($r) == 1024 * 1024 + 8; like($r, qr/X(?!.*\x0d\x0a?0\x0d\x0a?)/s, 'no proxy temp'); @@ -157,12 +157,12 @@ sub http_get_11 { my ($uri, %extra) = @_; - return http( + return http_content(http( "GET $uri HTTP/1.1" . CRLF . "Connection: close" . CRLF . "Host: localhost" . CRLF . CRLF, %extra - ); + )); } ###############################################################################