Mercurial > hg > nginx-tests
annotate h2_server_push.t @ 1847:a9704b9ed7a2
Tests: removed multiple server certificates from ssl_ocsp.t.
Multiple server certificates are not needed to test OCSP verification of
client certificates (in contrast to OCSP stapling, where server certificates
are verified, and different staples should be correctly returned with
different server certificates). And using multiple server certificates
causes issues when testing with LibreSSL due to broken sigalgs-based
server certificate selection in LibreSSL with TLSv1.3.
Accordingly, the test is simplified to do not use multiple server
certificates.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 23 Mar 2023 19:50:26 +0300 |
parents | f7170c7acf3a |
children | 236d038dc04a |
rev | line source |
---|---|
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Tests for HTTP/2 server push. |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 use Test::Nginx::HTTP2; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 |
1734
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http http_v2 proxy rewrite gzip/)->plan(54) |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 ->write_file_expand('nginx.conf', <<'EOF'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 daemon off; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 events { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 http { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_HTTP%% |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 server { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 listen 127.0.0.1:8080 http2; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 listen 127.0.0.1:8081; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 server_name localhost; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 location /prio { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 http2_push /t1; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 http2_push /t2; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 return 204; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 location /expl { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 http2_push /push; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 http2_push /push2; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 location /expl/off { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 http2_push off; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 location /preload { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 http2_push_preload on; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 add_header Link "</push>; rel=preload"; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 add_header X-Link $sent_http_link; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 return 200 SEE-THIS; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 location /preload2 { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 http2_push_preload on; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 add_header Link "</push>; rel=preload"; # valid |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 add_header Link "</push2 >; rel=preload"; # valid |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 add_header Link "</push3>; rel=preloadX"; # not |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 add_header Link '</push4>; rel="preload"'; # valid |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 add_header Link '</push5>; rel="preloadX"'; # not |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 add_header Link "</push6>; rel=preload; nopush"; # not |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 add_header Link '</push7>; rel="foo"'; # not |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 add_header Link '</push7>; rel="foo preload"'; # valid |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 return 200 SEE-THIS; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 location /preload/many { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 http2_push_preload on; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 add_header Link "</push>; rel=preload, </push2>; rel=preload"; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 add_header Link "</push3>, </push4>; rel=preload"; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 return 200 SEE-THIS; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
84 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 location /preload/proxy { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 http2_push_preload on; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 proxy_pass http://127.0.0.1:8081/proxied; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
91 location /proxied { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 add_header Link "</push>; rel=preload"; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 add_header Link "</push2>; rel=preload"; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
94 return 200 SEE-THIS; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
95 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 location /both { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 http2_push /push; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 http2_push_preload on; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
100 add_header Link "</push>; rel=preload"; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 return 200 SEE-THIS; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 location /arg { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 http2_push $arg_push; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 return 204; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 |
1734
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
109 location /continuation { |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
110 http2_push /push?arg="$args$args$args$args"; |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
111 return 204; |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
112 } |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
113 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 location /push { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 return 200 PROMISED; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 } |
1284
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
117 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
118 location /gzip.html { |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
119 gzip on; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
120 gzip_min_length 0; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
121 return 200 PROMISED; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
122 } |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
123 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
125 server { |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
126 listen 127.0.0.1:8082 http2; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
127 server_name max_pushes; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 http2_max_concurrent_pushes 2; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 http2_push /push; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
131 http2_push /push; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 http2_push /push; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
133 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
134 } |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
135 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
136 EOF |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
137 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
138 $t->write_file('t1', join('', map { sprintf "X%04dXXX", $_ } (1 .. 8202))); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
139 $t->write_file('t2', 'SEE-THIS'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
140 $t->write_file('explf', join('', map { sprintf "X%06dXXX", $_ } (1 .. 6553))); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
141 |
1381
97c8280de681
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1348
diff
changeset
|
142 $t->run(); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
143 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
144 ############################################################################### |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
145 |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
146 # 6.6. PUSH_PROMISE |
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
147 # PUSH_PROMISE frames MUST only be sent on a peer-initiated stream that |
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
148 # is in either the "open" or "half-closed (remote)" state. |
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
149 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
150 # preload & format |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
151 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
152 my $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
153 my $sid = $s->new_stream({ path => '/preload' }); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
154 my $frames = $s->read(all => [{ sid => 1, fin => 1 }, { sid => 2, fin => 1 }]); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
155 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
156 my ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
157 ok($frame, 'push promise'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
158 is($frame->{headers}->{':authority'}, 'localhost', 'authority'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
159 is($frame->{headers}->{':scheme'}, 'http', 'scheme'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
160 is($frame->{headers}->{':method'}, 'GET', 'method'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
161 is($frame->{headers}->{':path'}, '/push', 'path'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
162 is($frame->{flags}, 4, 'flags'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
163 is($frame->{promised}, 2, 'promised stream'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
164 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
165 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} eq 2 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
166 is($frame->{data}, 'PROMISED', 'promised stream payload'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
167 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
168 ($frame) = grep { $_->{type} eq "HEADERS" && $_->{sid} eq $sid } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
169 is($frame->{headers}->{'x-link'}, '</push>; rel=preload', 'sent_http_link'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
170 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
171 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
172 $sid = $s->new_stream({ path => '/preload2' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
173 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
174 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 4, 'preload 2'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
175 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
176 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
177 $sid = $s->new_stream({ path => '/preload/many' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
178 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
179 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 3, 'preload many'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
180 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
181 # preload proxy |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
182 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
183 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
184 $sid = $s->new_stream({ path => '/preload/proxy' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
185 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
186 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 2, 'preload proxy'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
187 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
188 # both h2_push & preload |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
189 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
190 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
191 $sid = $s->new_stream({ path => '/both' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
192 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1282
fd281e3a3df5
Tests: better test names in h2_server_push.t.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1281
diff
changeset
|
193 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 2, 'h2_push and preload'); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
194 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
195 # h2_push |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
196 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
197 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
198 $sid = $s->new_stream({ path => '/expl' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
199 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
200 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
201 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
1282
fd281e3a3df5
Tests: better test names in h2_server_push.t.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1281
diff
changeset
|
202 ok($frame, 'h2_push only'); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
203 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
204 # h2_push off |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
205 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
206 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
207 $sid = $s->new_stream({ path => '/expl/off' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
208 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
209 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
210 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
211 ok(!$frame, 'h2_push off'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
212 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
213 # h2_push $var |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
214 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
215 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
216 $sid = $s->new_stream({ path => '/arg?push=/push' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
217 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
218 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
219 ok($frame, 'h2_push variable'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
220 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
221 $sid = $s->new_stream({ path => '/arg?push=' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
222 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
223 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
224 ok(!$frame, 'h2_push variable empty'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
225 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
226 $sid = $s->new_stream({ path => '/arg?push=off' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
227 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
228 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
229 ok(!$frame, 'h2_push variable off'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
230 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
231 $sid = $s->new_stream({ path => '/arg?push=foo' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
232 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
233 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
234 ok(!$frame, 'h2_push variable relative path'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
235 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
236 # SETTINGS_ENABLE_PUSH |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
237 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
238 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
239 $s->h2_settings(0, 0x2 => 0); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
240 $sid = $s->new_stream({ path => '/expl' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
241 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
242 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
243 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
244 ok(!$frame, 'push setting disabled'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
245 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
246 $s->h2_settings(0, 0x2 => 1); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
247 $sid = $s->new_stream({ path => '/expl' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
248 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
249 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
250 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
251 ok($frame, 'push setting enabled'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
252 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
253 $s->h2_settings(0, 0x2 => 42); |
1281
5bbade306a0d
Tests: unbreak h2_server_push.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1280
diff
changeset
|
254 $frames = $s->read(all => [{ type => 'GOAWAY' }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
255 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
256 ($frame) = grep { $_->{type} =~ "GOAWAY" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
257 is($frame->{'code'}, 1, 'push setting invalid - GOAWAY protocol error'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
258 cmp_ok($frame->{'last_sid'}, '<', 5, 'push setting invalid - last sid'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
259 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
260 # SETTINGS_MAX_CONCURRENT_STREAMS |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
261 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
262 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
263 $sid = $s->new_stream({ path => '/expl' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
264 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
265 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 2, 'max pushes default'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
266 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
267 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
268 $s->h2_settings(0, 0x3 => 1); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
269 $sid = $s->new_stream({ path => '/expl' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
270 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
271 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 1, 'max pushes limited'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
272 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
273 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
274 $s->h2_settings(0, 0x3 => 0); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
275 $sid = $s->new_stream({ path => '/expl' }); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
276 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
277 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 0, 'max pushes disabled'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
278 |
1280
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
279 TODO: { |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
280 todo_skip 'long tests with aio', 6 unless $ENV{TEST_NGINX_UNSAFE} |
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
281 or $t->read_file('nginx.conf') !~ /aio (on|threads)/; |
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
282 local $TODO = 'not yet' if $t->read_file('nginx.conf') =~ /aio (on|threads)/; |
1280
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
283 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
284 # server push flow control & rst |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
285 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
286 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
287 $sid = $s->new_stream({ path => '/explf' }); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
288 $frames = $s->read(all => [ |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
289 { sid => 1, fin => 1 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
290 { sid => 2, length => 5 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
291 { sid => 4, fin => 4 }]); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
292 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
293 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} == 2 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
294 is($frame->{length}, 5, 'flow control - pushed stream limited'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
295 is($frame->{flags}, 0, 'flow control - pushed stream flags'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
296 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
297 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} == 4 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
298 ok(!$frame, 'flow control - no window for next stream'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
299 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
300 # window update |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
301 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
302 $s->h2_window(2); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
303 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
304 $frames = $s->read(all => [{ length => 2 }]); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
305 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} == 2 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
306 is($frame->{length}, 2, 'window update'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
307 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
308 # client refused stream |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
309 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
310 $s->h2_rst(4, 7); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
311 $s->h2_window(2**16); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
312 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
313 $frames = $s->read(all => [{ sid => 2, length => 1 }]); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
314 push @$frames, @{ $s->read(all => [{ sid => 4, fin => 1 }], wait => 0.2) }; |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
315 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
316 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} == 2 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
317 is($frame->{length}, 1, 'pushed response flow control'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
318 is($frame->{flags}, 1, 'pushed response END_STREAM'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
319 |
1280
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
320 } |
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
321 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
322 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} == 4 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
323 ok(!$frame, 'rst pushed stream'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
324 |
1280
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
325 TODO: { |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
326 todo_skip 'long tests with aio', 2 unless $ENV{TEST_NGINX_UNSAFE} |
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
327 or $t->read_file('nginx.conf') !~ /aio (on|threads)/; |
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
328 local $TODO = 'not yet' if $t->read_file('nginx.conf') =~ /aio (on|threads)/; |
1280
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
329 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
330 # priority |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
331 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
332 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
333 $sid = $s->new_stream({ path => '/prio' }); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
334 $frames = $s->read(all => [{ length => 2**16 - 1 }, { sid => 4, fin => 4 }]); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
335 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
336 $s->h2_priority(16, 2, 4); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
337 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
338 $s->h2_window(2**17, 2); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
339 $s->h2_window(2**17, 4); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
340 $s->h2_window(2**17); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
341 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
342 $frames = $s->read(all => [{ sid => 2, fin => 1 }, { sid => 4, fin => 1 }]); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
343 my @data = grep { $_->{type} eq "DATA" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
344 is(join(' ', map { $_->{sid} } @data), "4 2", 'priority 1'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
345 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
346 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
347 $sid = $s->new_stream({ path => '/prio' }); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
348 $frames = $s->read(all => [{ length => 2**16 - 1 }, { sid => 4, fin => 4 }]); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
349 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
350 $s->h2_priority(16, 4, 2); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
351 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
352 $s->h2_window(2**17, 2); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
353 $s->h2_window(2**17, 4); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
354 $s->h2_window(2**17); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
355 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
356 $frames = $s->read(all => [{ sid => 2, fin => 1 }, { sid => 4, fin => 1 }]); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
357 @data = grep { $_->{type} eq "DATA" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
358 is(join(' ', map { $_->{sid} } @data), "2 4", 'priority 2'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
359 |
1280
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
360 } |
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
361 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
362 # http2_max_concurrent_pushes |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
363 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
364 $s = Test::Nginx::HTTP2->new(port(8082)); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
365 $sid = $s->new_stream({ headers => [ |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
366 { name => ':method', value => 'GET', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
367 { name => ':scheme', value => 'http', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
368 { name => ':path', value => '/', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
369 { name => ':authority', value => 'max_pushes', mode => 1 }]}); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
370 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
371 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 2, 'http2 max pushes lim'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
372 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
373 $s = Test::Nginx::HTTP2->new(port(8082)); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
374 $s->h2_settings(0, 0x3 => 1); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
375 $sid = $s->new_stream({ headers => [ |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
376 { name => ':method', value => 'GET', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
377 { name => ':scheme', value => 'http', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
378 { name => ':path', value => '/', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
379 { name => ':authority', value => 'max_pushes', mode => 1 }]}); |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
380 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
381 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 1, 'http2 max pushes 2'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
382 |
1283
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
383 # missing request header ':authority' |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
384 |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
385 $s = Test::Nginx::HTTP2->new(port(8082)); |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
386 $sid = $s->new_stream({ headers => [ |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
387 { name => ':method', value => 'GET', mode => 0 }, |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
388 { name => ':scheme', value => 'http', mode => 0 }, |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
389 { name => ':path', value => '/', mode => 0 }]}); |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
390 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
391 |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
392 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
393 is($frame->{headers}->{':status'}, 400, 'incomplete headers'); |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
394 |
1284
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
395 # gzip tests |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
396 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
397 $s = Test::Nginx::HTTP2->new(); |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
398 $sid = $s->new_stream({ headers => [ |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
399 { name => ':method', value => 'GET', mode => 0 }, |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
400 { name => ':scheme', value => 'http', mode => 0 }, |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
401 { name => ':path', value => '/arg?push=/gzip.html' }, |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
402 { name => ':authority', value => 'localhost', mode => 1 }, |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
403 { name => 'accept-encoding', value => 'gzip' }]}); |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
404 $frames = $s->read(all => [{ sid => 2, fin => 1 }]); |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
405 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
406 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" && $_->{sid} == $sid } @$frames; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
407 is($frame->{headers}->{'accept-encoding'}, 'gzip', 'gzip - push promise'); |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
408 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
409 ($frame) = grep { $_->{type} eq "HEADERS" && $_->{sid} == 2 } @$frames; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
410 is($frame->{headers}->{'content-encoding'}, 'gzip', 'gzip - headers'); |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
411 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
412 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} == 2 } @$frames; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
413 gunzip_like($frame->{data}, qr/^PROMISED\Z/, 'gzip - response'); |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
414 |
1327
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
415 # scheme https |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
416 |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
417 $s = Test::Nginx::HTTP2->new(); |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
418 $sid = $s->new_stream({ headers => [ |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
419 { name => ':method', value => 'GET', mode => 0 }, |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
420 { name => ':scheme', value => 'https', mode => 0 }, |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
421 { name => ':path', value => '/preload' }, |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
422 { name => ':authority', value => 'localhost', mode => 1 }]}); |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
423 $frames = $s->read(all => [{ sid => 2, fin => 1 }]); |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
424 |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
425 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" && $_->{sid} == $sid } @$frames; |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
426 is($frame->{headers}->{':scheme'}, 'https', 'scheme https'); |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
427 |
1734
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
428 # CONTINUATION |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
429 |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
430 $s = Test::Nginx::HTTP2->new(); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
431 $sid = $s->new_stream({ path => '/continuation?x=' . ('X' x 4096) }); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
432 $frames = $s->read(all => [{ sid => 1, fin => 1 }, { sid => 2, fin => 1 }]); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
433 |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
434 @$frames = grep { $_->{promised} } @$frames; |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
435 is(@$frames, 2, 'continuation - frames'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
436 |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
437 $frame = shift @$frames; |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
438 is($frame->{type}, 'PUSH_PROMISE', 'continuation - PUSH_PROMISE'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
439 is($frame->{length}, 16384, 'continuation - PUSH_PROMISE length'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
440 is($frame->{flags}, 0, 'continuation - PUSH_PROMISE flags'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
441 is($frame->{sid}, $sid, 'continuation - PUSH_PROMISE sid'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
442 is($frame->{promised}, 2, 'continuation - promised stream'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
443 |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
444 $frame = shift @$frames; |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
445 is($frame->{type}, 'CONTINUATION', 'continuation - CONTINUATION'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
446 is($frame->{flags}, 4, 'continuation - CONTINUATION flags'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
447 is($frame->{headers}->{':authority'}, 'localhost', 'continuation - authority'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
448 is($frame->{headers}->{':scheme'}, 'http', 'continuation - scheme'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
449 is($frame->{headers}->{':method'}, 'GET', 'continuation - method'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
450 like($frame->{headers}->{':path'}, qr!^/push!, 'continuation - path'); |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
451 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
452 ############################################################################### |
1284
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
453 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
454 sub gunzip_like { |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
455 my ($in, $re, $name) = @_; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
456 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
457 SKIP: { |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
458 eval { require IO::Uncompress::Gunzip; }; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
459 Test::More::skip( |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
460 "IO::Uncompress::Gunzip not installed", 1) if $@; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
461 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
462 my $out; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
463 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
464 IO::Uncompress::Gunzip::gunzip(\$in => \$out); |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
465 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
466 if ($in =~ $re) { |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
467 fail($name); |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
468 return; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
469 } |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
470 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
471 like($out, $re, $name); |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
472 } |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
473 } |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
474 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
475 ############################################################################### |