Tests: testing worker_shutdown_timeout works with HTTP/2. A request in HTTP/2 is ensured to be finalized with worker_shutdown_timeout by testing that it is logged at least, and the status code is not set as it would on proxy_read_timeout. After the fix has been fixed in ab5cac9d3f00, the latter can be tuned to a safer value without losing in execution time.
diff --git a/worker_shutdown_timeout_h2.t b/worker_shutdown_timeout_h2.t index fcde6ce..f487c1d 100644 --- a/worker_shutdown_timeout_h2.t +++ b/worker_shutdown_timeout_h2.t
@@ -23,7 +23,7 @@ select STDERR; $| = 1; select STDOUT; $| = 1; -my $t = Test::Nginx->new()->has(qw/http http_v2 proxy/)->plan(1); +my $t = Test::Nginx->new()->has(qw/http http_v2 proxy/)->plan(2); $t->write_file_expand('nginx.conf', <<'EOF'); @@ -44,7 +44,7 @@ location / { proxy_pass http://127.0.0.1:8081; - proxy_read_timeout 200ms; + proxy_read_timeout 5s; } } } @@ -61,6 +61,13 @@ select undef, undef, undef, 0.1; $t->stop(); +TODO: { +local $TODO = 'not yet' unless $t->has_version('1.17.4'); + +like($t->read_file('access.log'), qr/ (?!504)\d{3} /, 'shutdown timeout'); + +} + $t->todo_alerts() unless $t->has_version('1.17.4'); ###############################################################################