annotate h3_server_tokens.t @ 1983:c7315caf2110

Tests: optimized processing of large QUIC packets with padding. Path MTU discovery packets might contain a lot of padding, and creating a copy of the whole buffer for each PADDING frame, which is just one byte with type 0, consumes lots of resources. This was seen to result in flapping of at least h3_keepalive.t and h3_ssl_early_data.t tests. Fix is to copy at most 8 bytes for parse_int() calls when parsing frame types.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 03 Jun 2024 04:17:28 +0300
parents 78452573505c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1892
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Andrey Zelenkov
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for HTTP/3 protocol with server_tokens directive.
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use Test::Nginx::HTTP3;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21 ###############################################################################
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens 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: 1892
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http http_v3 rewrite cryptx/)
1892
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 ->has_daemon('openssl')->plan(12);
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 $t->write_file_expand('nginx.conf', <<'EOF');
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 %%TEST_GLOBALS%%
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 daemon off;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 events {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 http {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 %%TEST_GLOBALS_HTTP%%
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 ssl_certificate_key localhost.key;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 ssl_certificate localhost.crt;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 server {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 listen 127.0.0.1:%%PORT_8980_UDP%% quic;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 server_name localhost;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 location /200 {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 return 200;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 location /404 {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 return 404;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 location /off {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 server_tokens off;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 location /off/200 {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 return 200;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 location /off/404 {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 return 404;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 location /on {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 server_tokens on;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 location /on/200 {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 return 200;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 location /on/404 {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 return 404;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 location /b {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 server_tokens build;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 location /b/200 {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 return 200;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87 location /b/404 {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 return 404;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94 EOF
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96 $t->write_file('openssl.conf', <<EOF);
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97 [ req ]
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98 default_bits = 2048
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99 encrypt_key = no
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 distinguished_name = req_distinguished_name
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101 [ req_distinguished_name ]
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102 EOF
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104 my $d = $t->testdir();
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 foreach my $name ('localhost') {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107 system('openssl req -x509 -new '
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108 . "-config $d/openssl.conf -subj /CN=$name/ "
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 . "-out $d/$name.crt -keyout $d/$name.key "
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 . ">>$d/openssl.out 2>&1") == 0
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 or die "Can't create certificate for $name: $!\n";
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114 $t->run();
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116 ###############################################################################
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117
1948
78452573505c Tests: improved server tokens tests to accept alternative names.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1896
diff changeset
118 my $re = qr/\w+\/\d+\.\d+\.\d+/;
1892
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
120 like(header_server('/200'), qr/^$re$/, 'http3 tokens default 200');
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121 like(header_server('/404'), qr/^$re$/, 'http3 tokens default 404');
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122 like(body('/404'), qr/$re/, 'http3 tokens default 404 body');
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123
1948
78452573505c Tests: improved server tokens tests to accept alternative names.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1896
diff changeset
124 like(header_server('/off/200'), qr/^\w+$/, 'http3 tokens off 200');
78452573505c Tests: improved server tokens tests to accept alternative names.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1896
diff changeset
125 like(header_server('/off/404'), qr/^\w+$/, 'http3 tokens off 404');
78452573505c Tests: improved server tokens tests to accept alternative names.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1896
diff changeset
126 unlike(body('/off/404'), $re, 'http3 tokens off 404 body');
1892
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
127
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
128 like(header_server('/on/200'), qr/^$re$/, 'http3 tokens on 200');
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129 like(header_server('/on/404'), qr/^$re$/, 'http3 tokens on 404');
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130 like(body('/on/404'), $re, 'http3 tokens on 404 body');
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
131
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
132 $re = qr/$re \(.*\)/ if $t->has_module('--build=');
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
133
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
134 like(header_server('/b/200'), qr/^$re$/, 'http3 tokens build 200');
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
135 like(header_server('/b/404'), qr/^$re$/, 'http3 tokens build 404');
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
136 like(body('/b/404'), qr/$re/, 'http3 tokens build 404 body');
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
137
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
138 ###############################################################################
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
139
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
140 sub header_server {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
141 my ($path) = shift;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
143 my $s = Test::Nginx::HTTP3->new();
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144 my $sid = $s->new_stream({ path => $path });
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
145 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148 return $frame->{headers}->{'server'};
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151 sub body {
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 my ($path) = shift;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
153
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
154 my $s = Test::Nginx::HTTP3->new();
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
155 my $sid = $s->new_stream({ path => $path });
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
157
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
158 my ($frame) = grep { $_->{type} eq "DATA" } @$frames;
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
159 return $frame->{'data'};
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
160 }
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
161
a8fc2f1f6f6f Tests: HTTP/3 server_tokens tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
162 ###############################################################################