# HG changeset patch # User Sergey Kandaurov # Date 1641911968 -10800 # Node ID 0c50a00e67334659d58d3cf7cb81fcf5872a8285 # Parent ba6e24e38f036a4ca35e91430afabdd0420788d1 Tests: added http keepalive test for Connection header on shutdown. diff --git a/http_keepalive_shutdown.t b/http_keepalive_shutdown.t new file mode 100644 --- /dev/null +++ b/http_keepalive_shutdown.t @@ -0,0 +1,77 @@ +#!/usr/bin/perl + +# (C) Sergey Kandaurov +# (C) Nginx, Inc. + +# Tests for http keepalive connections on worker shutdown. + +############################################################################### + +use warnings; +use strict; + +use Test::More; + +BEGIN { use FindBin; chdir($FindBin::Bin); } + +use lib 'lib'; +use Test::Nginx qw/ :DEFAULT http_end /; + +############################################################################### + +select STDERR; $| = 1; +select STDOUT; $| = 1; + +my $t = Test::Nginx->new()->has(qw/http limit_req/)->plan(1); + +$t->write_file_expand('nginx.conf', <<'EOF'); + +%%TEST_GLOBALS%% + +daemon off; + +events { +} + +http { + %%TEST_GLOBALS_HTTP%% + + limit_req_zone $binary_remote_addr zone=one:1m rate=1r/s; + + server { + listen 127.0.0.1:8080; + server_name localhost; + + location / { + limit_req zone=one burst=5; + } + } +} + +EOF + +$t->write_file('test.html', 'XtestX'); +$t->run(); + +############################################################################### + +local $TODO = 'not yet' unless $t->has_version('1.21.6'); + +# signaling on graceful shutdown to client that keepalive connection is closing + +my $s = http(< 1); +HEAD /test.html HTTP/1.1 +Host: localhost + +HEAD /test.html HTTP/1.1 +Host: localhost + +EOF + +select undef, undef, undef, 0.1; + +$t->stop(); + +like(http_end($s), qr/Connection: close/, 'connection close on exit'); + +###############################################################################