Mercurial > hg > nginx-tests
annotate h3_keepalive.t @ 1965:84f4d4930835
Tests: relaxed mail_imap_ssl.t cipher matching.
Previously, exact match between cipher name in the log and the one from
IO::Socket:SSL was needed, which might not be the case if nginx and
Net::SSLeay are compiled with different SSL libraries, notably LibreSSL
(which uses names like AEAD-AES256-GCM-SHA384 till 3.5.0), and
OpenSSL or BoringSSL (which use TLS_AES_256_GCM_SHA384). In particular,
this affects macOS, where Net::SSLeay compiled with LibreSSL 3.3.6 is
shipped with the OS, while nginx is likely to be compiled with OpenSSL.
Fix is to not require exact match but instead accept properly looking names
as checked by a regular expression, similarly to how it is already tested
in ssl.t and stream_ssl_variables.t.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 06 May 2024 00:01:40 +0300 |
parents | 6e4a480ab370 |
children |
rev | line source |
---|---|
1878
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Tests for HTTP/3 protocol, keepalive directives. |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 use Test::Nginx::HTTP3; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 |
1896
8b74936ff2ac
Tests: added has_feature() test for CryptX.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1878
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http http_v3 cryptx/) |
1878
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 ->has_daemon('openssl')->plan(15) |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 ->write_file_expand('nginx.conf', <<'EOF'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 %%TEST_GLOBALS%% |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 daemon off; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 events { |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 http { |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 %%TEST_GLOBALS_HTTP%% |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 ssl_certificate_key localhost.key; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 ssl_certificate localhost.crt; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 server { |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 listen 127.0.0.1:%%PORT_8980_UDP%% quic; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 server_name localhost; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 keepalive_requests 2; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 location / { } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 server { |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 listen 127.0.0.1:%%PORT_8981_UDP%% quic; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 server_name localhost; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 keepalive_timeout 0; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 location / { } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 server { |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 listen 127.0.0.1:%%PORT_8982_UDP%% quic; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 server_name localhost; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 keepalive_time 1s; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 add_header X-Conn $connection_requests:$connection_time; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 location / { } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 EOF |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 $t->write_file('openssl.conf', <<EOF); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 [ req ] |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 default_bits = 2048 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 encrypt_key = no |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 distinguished_name = req_distinguished_name |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 [ req_distinguished_name ] |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 EOF |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 my $d = $t->testdir(); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
84 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 foreach my $name ('localhost') { |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 system('openssl req -x509 -new ' |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 . "-config $d/openssl.conf -subj /CN=$name/ " |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 . "-out $d/$name.crt -keyout $d/$name.key " |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 . ">>$d/openssl.out 2>&1") == 0 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 or die "Can't create certificate for $name: $!\n"; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
91 } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 $t->write_file('index.html', 'SEE-THIS'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
94 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
95 $t->run(); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 ############################################################################### |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 my ($s, $sid, $frames, $frame); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
100 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 # max requests limited |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 $s = Test::Nginx::HTTP3->new(); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 $frames = $s->read(all => [{ sid => $s->new_stream(), fin => 1 }]); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 is($frame->{headers}->{':status'}, 200, 'keepalive requests 1'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 $frames = $s->read(all => [ |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 { sid => $s->new_stream(), fin => 1 }, |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 { type => 'GOAWAY' } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 ]); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 is($frame->{headers}->{':status'}, 200, 'keepalive requests 2'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 ($frame) = grep { $_->{type} eq "GOAWAY" } @$frames; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 is($frame->{sid}, 3, 'keepalive requests - GOAWAY stream type'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
119 is($frame->{last_sid}, 8, 'keepalive requests - GOAWAY last stream'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
120 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
121 # keepalive_timeout 0 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
122 # currently, keepalive timer is set before reading 1st request |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
123 # and there is no special handling for zero value timeout |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
125 $s = Test::Nginx::HTTP3->new(8981); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
126 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
127 TODO: { |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 todo_skip 'keepalive_timeout 0', 2 unless $s; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 $sid = $s->new_stream(); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
131 $frames = $s->read(all => [{ sid => $sid, fin => 1 }, { type => 'GOAWAY' }]); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
133 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
134 is($frame->{headers}->{':status'}, 200, 'keepalive_timeout 0'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
135 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
136 ($frame) = grep { $_->{type} eq "GOAWAY" } @$frames; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
137 ok($frame, 'keepalive_timeout 0 - GOAWAY'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
138 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
139 } |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
140 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
141 # keepalive_time |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
142 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
143 $s = Test::Nginx::HTTP3->new(8982); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
144 $sid = $s->new_stream(); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
145 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
146 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
147 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
148 is($frame->{headers}->{':status'}, 200, 'keepalive time request'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
149 like($frame->{headers}->{'x-conn'}, qr/^1:0/, 'keepalive time variables'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
150 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
151 $frames = $s->read(all => [{ type => 'GOAWAY' }], wait => 0.5); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
152 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
153 ($frame) = grep { $_->{type} eq "GOAWAY" } @$frames; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
154 is($frame, undef, 'keepalive time - no GOAWAY yet'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
155 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
156 select undef, undef, undef, 1.1; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
157 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
158 $sid = $s->new_stream(); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
159 $frames = $s->read(all => [{ sid => $sid, fin => 1 }, { type => 'GOAWAY' }]); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
160 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
161 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
162 is($frame->{headers}->{':status'}, 200, 'keepalive time request 2'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
163 like($frame->{headers}->{'x-conn'}, qr/^2:[^0]/, 'keepalive time variables 2'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
164 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
165 ($frame) = grep { $_->{type} eq "GOAWAY" } @$frames; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
166 is($frame->{sid}, 3, 'keepalive time limit - GOAWAY stream type'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
167 is($frame->{last_sid}, 8, 'keepalive time limit - GOAWAY last stream'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
168 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
169 # graceful shutdown in idle state |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
170 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
171 $s = Test::Nginx::HTTP3->new(); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
172 $sid = $s->new_stream(); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
173 |
1949
6e4a480ab370
Tests: fixed h3_keepalive.t spurious failures.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1896
diff
changeset
|
174 select undef, undef, undef, 0.1; |
6e4a480ab370
Tests: fixed h3_keepalive.t spurious failures.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1896
diff
changeset
|
175 |
1878
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
176 $t->reload(); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
177 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
178 $frames = $s->read(all => [{ type => 'GOAWAY' }]); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
179 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
180 ($frame) = grep { $_->{type} eq "GOAWAY" } @$frames; |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
181 is($frame->{sid}, 3, 'graceful shutdown - GOAWAY stream type'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
182 is($frame->{last_sid}, 4, 'graceful shutdown - GOAWAY last stream'); |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
183 |
b69bae343c53
Tests: HTTP/3 keepalive tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
184 ############################################################################### |