Mercurial > hg > nginx-tests
annotate h2_server_push.t @ 1905:f35824e75b66
Tests: fixed reading QUIC streams on Perl < 5.24.
The parse_stream() routine has had a missing explicit return if there were no
streams received. In Perl < 5.24 this used to return no value, or an empty
array in the list context. In modern Perl this returns an empty value, or an
array of 1 element, which made the check for last index of the returned array
work rather by accident.
The fix is to return explicitly and to check the array size in callers instead.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 06 Jun 2023 18:50:07 +0400 |
parents | 236d038dc04a |
children |
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 |
1900
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1734
diff
changeset
|
142 # suppress deprecation warning |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1734
diff
changeset
|
143 |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1734
diff
changeset
|
144 open OLDERR, ">&", \*STDERR; close STDERR; |
1381
97c8280de681
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1348
diff
changeset
|
145 $t->run(); |
1900
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1734
diff
changeset
|
146 open STDERR, ">&", \*OLDERR; |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
147 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
148 ############################################################################### |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
149 |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
150 # 6.6. PUSH_PROMISE |
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
151 # 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
|
152 # 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
|
153 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
154 # preload & format |
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 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
157 my $sid = $s->new_stream({ path => '/preload' }); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
158 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
|
159 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
160 my ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
161 ok($frame, 'push promise'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
162 is($frame->{headers}->{':authority'}, 'localhost', 'authority'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
163 is($frame->{headers}->{':scheme'}, 'http', 'scheme'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
164 is($frame->{headers}->{':method'}, 'GET', 'method'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
165 is($frame->{headers}->{':path'}, '/push', 'path'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
166 is($frame->{flags}, 4, 'flags'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
167 is($frame->{promised}, 2, 'promised stream'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
168 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
169 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} eq 2 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
170 is($frame->{data}, 'PROMISED', 'promised stream payload'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
171 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
172 ($frame) = grep { $_->{type} eq "HEADERS" && $_->{sid} eq $sid } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
173 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
|
174 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
175 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
176 $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
|
177 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
178 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 4, 'preload 2'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
179 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
180 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
181 $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
|
182 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
183 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 3, 'preload many'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
184 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
185 # preload proxy |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
186 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
187 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
188 $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
|
189 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
190 is(grep({ $_->{type} eq "PUSH_PROMISE" } @$frames), 2, 'preload proxy'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
191 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
192 # both h2_push & preload |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
193 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
194 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
195 $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
|
196 $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
|
197 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
|
198 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
199 # h2_push |
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 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
202 $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
|
203 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
204 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
205 ($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
|
206 ok($frame, 'h2_push only'); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
207 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
208 # h2_push off |
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 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
211 $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
|
212 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
213 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
214 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
215 ok(!$frame, 'h2_push off'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
216 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
217 # h2_push $var |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
218 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
219 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
220 $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
|
221 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
222 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
223 ok($frame, 'h2_push variable'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
224 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
225 $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
|
226 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
227 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
228 ok(!$frame, 'h2_push variable empty'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
229 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
230 $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
|
231 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
232 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
233 ok(!$frame, 'h2_push variable off'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
234 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
235 $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
|
236 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
237 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
238 ok(!$frame, 'h2_push variable relative path'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
239 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
240 # SETTINGS_ENABLE_PUSH |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
241 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
242 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
243 $s->h2_settings(0, 0x2 => 0); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
244 $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
|
245 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
246 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
247 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
248 ok(!$frame, 'push setting disabled'); |
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 $s->h2_settings(0, 0x2 => 1); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
251 $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
|
252 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
253 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
254 ($frame) = grep { $_->{type} eq "PUSH_PROMISE" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
255 ok($frame, 'push setting enabled'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
256 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
257 $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
|
258 $frames = $s->read(all => [{ type => 'GOAWAY' }]); |
1279
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 ($frame) = grep { $_->{type} =~ "GOAWAY" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
261 is($frame->{'code'}, 1, 'push setting invalid - GOAWAY protocol error'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
262 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
|
263 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
264 # SETTINGS_MAX_CONCURRENT_STREAMS |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
265 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
266 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
267 $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
|
268 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
269 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
|
270 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
271 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
272 $s->h2_settings(0, 0x3 => 1); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
273 $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
|
274 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
275 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
|
276 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
277 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
278 $s->h2_settings(0, 0x3 => 0); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
279 $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
|
280 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
281 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
|
282 |
1280
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
283 TODO: { |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
284 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
|
285 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
|
286 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
|
287 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
288 # server push flow control & rst |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
289 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
290 $s = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
291 $sid = $s->new_stream({ path => '/explf' }); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
292 $frames = $s->read(all => [ |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
293 { sid => 1, fin => 1 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
294 { sid => 2, length => 5 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
295 { sid => 4, fin => 4 }]); |
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} == 2 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
298 is($frame->{length}, 5, 'flow control - pushed stream limited'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
299 is($frame->{flags}, 0, 'flow control - pushed stream flags'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
300 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
301 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} == 4 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
302 ok(!$frame, 'flow control - no window for next stream'); |
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 # window update |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
305 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
306 $s->h2_window(2); |
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 $frames = $s->read(all => [{ length => 2 }]); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
309 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} == 2 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
310 is($frame->{length}, 2, 'window update'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
311 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
312 # client refused stream |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
313 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
314 $s->h2_rst(4, 7); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
315 $s->h2_window(2**16); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
316 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
317 $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
|
318 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
|
319 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
320 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} == 2 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
321 is($frame->{length}, 1, 'pushed response flow control'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
322 is($frame->{flags}, 1, 'pushed response END_STREAM'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
323 |
1280
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
324 } |
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
325 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
326 ($frame) = grep { $_->{type} eq "DATA" && $_->{sid} == 4 } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
327 ok(!$frame, 'rst pushed stream'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
328 |
1280
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
329 TODO: { |
1348
8cb66a4d3ca2
Tests: fixed HTTP/2 server push expectations, adjusted TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1340
diff
changeset
|
330 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
|
331 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
|
332 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
|
333 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
334 # priority |
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 = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
337 $sid = $s->new_stream({ path => '/prio' }); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
338 $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
|
339 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
340 $s->h2_priority(16, 2, 4); |
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 $s->h2_window(2**17, 2); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
343 $s->h2_window(2**17, 4); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
344 $s->h2_window(2**17); |
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 $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
|
347 my @data = grep { $_->{type} eq "DATA" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
348 is(join(' ', map { $_->{sid} } @data), "4 2", 'priority 1'); |
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 = Test::Nginx::HTTP2->new(); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
351 $sid = $s->new_stream({ path => '/prio' }); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
352 $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
|
353 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
354 $s->h2_priority(16, 4, 2); |
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 $s->h2_window(2**17, 2); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
357 $s->h2_window(2**17, 4); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
358 $s->h2_window(2**17); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
359 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
360 $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
|
361 @data = grep { $_->{type} eq "DATA" } @$frames; |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
362 is(join(' ', map { $_->{sid} } @data), "2 4", 'priority 2'); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
363 |
1280
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
364 } |
8a88c0d6f80a
Tests: TODO HTTP/2 server push flow control tests with "aio on".
Sergey Kandaurov <pluknet@nginx.com>
parents:
1279
diff
changeset
|
365 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
366 # http2_max_concurrent_pushes |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
367 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
368 $s = Test::Nginx::HTTP2->new(port(8082)); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
369 $sid = $s->new_stream({ headers => [ |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
370 { name => ':method', value => 'GET', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
371 { name => ':scheme', value => 'http', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
372 { name => ':path', value => '/', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
373 { 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
|
374 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
375 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
|
376 |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
377 $s = Test::Nginx::HTTP2->new(port(8082)); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
378 $s->h2_settings(0, 0x3 => 1); |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
379 $sid = $s->new_stream({ headers => [ |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
380 { name => ':method', value => 'GET', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
381 { name => ':scheme', value => 'http', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
382 { name => ':path', value => '/', mode => 0 }, |
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
383 { 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
|
384 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
385 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
|
386 |
1283
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
387 # missing request header ':authority' |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
388 |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
389 $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
|
390 $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
|
391 { 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
|
392 { 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
|
393 { 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
|
394 $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
|
395 |
16f091962811
Tests: added h2_server_push.t test for missing ':authority'.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1282
diff
changeset
|
396 ($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
|
397 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
|
398 |
1284
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
399 # gzip tests |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
400 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
401 $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
|
402 $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
|
403 { 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
|
404 { 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
|
405 { 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
|
406 { 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
|
407 { 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
|
408 $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
|
409 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
410 ($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
|
411 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
|
412 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
413 ($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
|
414 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
|
415 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
416 ($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
|
417 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
|
418 |
1327
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
419 # scheme https |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
420 |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
421 $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
|
422 $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
|
423 { 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
|
424 { 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
|
425 { 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
|
426 { 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
|
427 $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
|
428 |
ecbd984ffe04
Tests: added HTTP/2 test for server push with original scheme.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1289
diff
changeset
|
429 ($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
|
430 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
|
431 |
1734
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
432 # CONTINUATION |
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 $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
|
435 $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
|
436 $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
|
437 |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
438 @$frames = grep { $_->{promised} } @$frames; |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
439 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
|
440 |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
441 $frame = shift @$frames; |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
442 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
|
443 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
|
444 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
|
445 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
|
446 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
|
447 |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
448 $frame = shift @$frames; |
f7170c7acf3a
Tests: added HTTP/2 tests for PUSH_PROMISE with CONTINUATION.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1535
diff
changeset
|
449 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
|
450 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
|
451 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
|
452 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
|
453 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
|
454 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
|
455 |
1279
da2ad1d72bb6
Tests: HTTP/2 server push.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
456 ############################################################################### |
1284
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
457 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
458 sub gunzip_like { |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
459 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
|
460 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
461 SKIP: { |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
462 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
|
463 Test::More::skip( |
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 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
|
465 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
466 my $out; |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
467 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
468 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
|
469 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
470 if ($in =~ $re) { |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
471 fail($name); |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
472 return; |
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 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
|
476 } |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
477 } |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
478 |
52873012ab26
Tests: added HTTP/2 server push tests with gzip (ticket #1478).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1283
diff
changeset
|
479 ############################################################################### |