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.
diff --git a/lib/Test/Nginx.pm b/lib/Test/Nginx.pm
index 6d1d658..5ebfa2a 100644
--- a/lib/Test/Nginx.pm
+++ b/lib/Test/Nginx.pm
@@ -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;
}
diff --git a/proxy_unfinished.t b/proxy_unfinished.t
index 4dd72e0..6f93ae9 100644
--- a/proxy_unfinished.t
+++ b/proxy_unfinished.t
@@ -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
- );
+ ));
}
###############################################################################