Mercurial > hg > nginx-tests
annotate http_keepalive_shutdown.t @ 1974:b5036a0f9ae0
Tests: improved compatibility when using recent "openssl" app.
Starting with OpenSSL 3.0, "openssl genrsa" generates encrypted keys
in PKCS#8 format instead of previously used PKCS#1 format. Further,
since OpenSSL 1.1.0 such keys are using PBKDF2 hmacWithSHA256.
Such keys are not supported by old SSL libraries, notably by OpenSSL
before 1.0.0 (OpenSSL 0.9.8 only supports hmacWithSHA1) and by BoringSSL
before May 21, 2019 (support for hmacWithSHA256 was added in 302a4dee6c),
and trying to load such keys into nginx compiled with an old SSL library
results in "unsupported prf" errors.
To facilitate testing with old SSL libraries, keys are now generated
with "openssl genrsa -traditional" if the flag is available.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 06 May 2024 00:04:26 +0300 |
parents | 2a0a6035a1af |
children |
rev | line source |
---|---|
1753
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Tests for http keepalive connections on worker shutdown. |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx qw/ :DEFAULT http_end /; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 ############################################################################### |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 select STDERR; $| = 1; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 select STDOUT; $| = 1; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http limit_req/)->plan(1); |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 $t->write_file_expand('nginx.conf', <<'EOF'); |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 daemon off; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 events { |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 } |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 http { |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_HTTP%% |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 limit_req_zone $binary_remote_addr zone=one:1m rate=1r/s; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 server { |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 listen 127.0.0.1:8080; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 server_name localhost; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 location / { |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 limit_req zone=one burst=5; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 } |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 } |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 } |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 EOF |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 $t->write_file('test.html', 'XtestX'); |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 $t->run(); |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 ############################################################################### |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 # signaling on graceful shutdown to client that keepalive connection is closing |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 my $s = http(<<EOF, start => 1); |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 HEAD /test.html HTTP/1.1 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 Host: localhost |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 HEAD /test.html HTTP/1.1 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 Host: localhost |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 EOF |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 select undef, undef, undef, 0.1; |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 $t->stop(); |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 like(http_end($s), qr/Connection: close/, 'connection close on exit'); |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 |
0c50a00e6733
Tests: added http keepalive test for Connection header on shutdown.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 ############################################################################### |