Mercurial > hg > nginx-tests
comparison h2_proxy_request_buffering.t @ 938:d3ff66fc7f5c
Tests: reverted cb8438c28482.
See ce94f07d5082 in nginx for details.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 24 May 2016 17:55:05 +0300 |
parents | 44f37197181f |
children | d73bef563aea |
comparison
equal
deleted
inserted
replaced
937:b1fa8e0cc27b | 938:d3ff66fc7f5c |
---|---|
63 | 63 |
64 my $f = get_body('/chunked'); | 64 my $f = get_body('/chunked'); |
65 plan(skip_all => 'no unbuffered request body') unless $f; | 65 plan(skip_all => 'no unbuffered request body') unless $f; |
66 $f->{http_end}(); | 66 $f->{http_end}(); |
67 | 67 |
68 $t->plan(70); | 68 $t->plan(48); |
69 | 69 |
70 ############################################################################### | 70 ############################################################################### |
71 | 71 |
72 # unbuffered request body | 72 # unbuffered request body |
73 | 73 |
74 $f = get_body('/', 'content-length' => 10); | 74 $f = get_body('/', 'content-length' => 10); |
75 ok($f->{headers}, 'request'); | 75 ok($f->{headers}, 'request'); |
76 is($f->{upload}('01234', body_more => 1), '01234', 'part'); | 76 is($f->{upload}('01234', body_more => 1), '01234', 'part'); |
77 is($f->{window}, 10, 'part - window'); | |
78 is($f->{upload}('56789'), '56789', 'part 2'); | 77 is($f->{upload}('56789'), '56789', 'part 2'); |
79 is($f->{window}, 5, 'part 2 - window'); | |
80 is($f->{http_end}(), 200, 'response'); | 78 is($f->{http_end}(), 200, 'response'); |
81 | 79 |
82 $f = get_body('/', 'content-length' => 10); | 80 $f = get_body('/', 'content-length' => 10); |
83 ok($f->{headers}, 'much'); | 81 ok($f->{headers}, 'much'); |
84 is($f->{upload}('0123456789', body_more => 1), '0123456789', 'much - part'); | 82 is($f->{upload}('0123456789', body_more => 1), '0123456789', 'much - part'); |
85 is($f->{window}, 10, 'much - part - window'); | |
86 is($f->{upload}('many'), '', 'much - part 2'); | 83 is($f->{upload}('many'), '', 'much - part 2'); |
87 is($f->{window}, 10, 'much - part 2 - window'); | |
88 is($f->{http_end}(), 400, 'much - response'); | 84 is($f->{http_end}(), 400, 'much - response'); |
89 | 85 |
90 $f = get_body('/', 'content-length' => 10); | 86 $f = get_body('/', 'content-length' => 10); |
91 ok($f->{headers}, 'less'); | 87 ok($f->{headers}, 'less'); |
92 is($f->{upload}('0123', body_more => 1), '0123', 'less - part'); | 88 is($f->{upload}('0123', body_more => 1), '0123', 'less - part'); |
93 is($f->{window}, 10, 'less - part - window'); | |
94 is($f->{upload}('56789'), '', 'less - part 2'); | 89 is($f->{upload}('56789'), '', 'less - part 2'); |
95 is($f->{window}, 4, 'less - part 2 - window'); | |
96 is($f->{http_end}(), 400, 'less - response'); | 90 is($f->{http_end}(), 400, 'less - response'); |
97 | 91 |
98 $f = get_body('/', 'content-length' => 18); | 92 $f = get_body('/', 'content-length' => 18); |
99 ok($f->{headers}, 'many'); | 93 ok($f->{headers}, 'many'); |
100 is($f->{upload}('01234many', body_split => [ 5 ], body_more => 1), | 94 is($f->{upload}('01234many', body_split => [ 5 ], body_more => 1), |
101 '01234many', 'many - part'); | 95 '01234many', 'many - part'); |
102 is($f->{window}, 18, 'many - part - window'); | |
103 is($f->{upload}('56789many', body_split => [ 5 ]), | 96 is($f->{upload}('56789many', body_split => [ 5 ]), |
104 '56789many', 'many - part 2'); | 97 '56789many', 'many - part 2'); |
105 is($f->{window}, 9, 'many - part 2 - window'); | |
106 is($f->{http_end}(), 200, 'many - response'); | 98 is($f->{http_end}(), 200, 'many - response'); |
107 | 99 |
108 $f = get_body('/', 'content-length' => 0); | 100 $f = get_body('/', 'content-length' => 0); |
109 ok($f->{headers}, 'empty'); | 101 ok($f->{headers}, 'empty'); |
110 is($f->{upload}('', body_more => 1), '', 'empty - part'); | 102 is($f->{upload}('', body_more => 1), '', 'empty - part'); |
111 | |
112 TODO: { | |
113 local $TODO = 'not yet' unless $t->has_version('1.9.15'); | |
114 | |
115 is($f->{window}, undef, 'empty - part - window'); | |
116 | |
117 } | |
118 | |
119 is($f->{upload}(''), '', 'empty - part 2'); | 103 is($f->{upload}(''), '', 'empty - part 2'); |
120 is($f->{window}, undef, 'empty - part 2 - window'); | |
121 is($f->{http_end}(), 200, 'empty - response'); | 104 is($f->{http_end}(), 200, 'empty - response'); |
122 | 105 |
123 $f = get_body('/', 'content-length' => 1536); | 106 $f = get_body('/', 'content-length' => 1536); |
124 ok($f->{headers}, 'buffer'); | 107 ok($f->{headers}, 'buffer'); |
125 is($f->{upload}('0123' x 128, body_more => 1), '0123' x 128, | 108 is($f->{upload}('0123' x 128, body_more => 1), '0123' x 128, |
126 'buffer - below'); | 109 'buffer - below'); |
127 is($f->{window}, 1024, 'buffer - below - window'); | |
128 is($f->{upload}('4567' x 128, body_more => 1), '4567' x 128, | 110 is($f->{upload}('4567' x 128, body_more => 1), '4567' x 128, |
129 'buffer - equal'); | 111 'buffer - equal'); |
130 is($f->{window}, 512, 'buffer - equal - window'); | |
131 is($f->{upload}('89AB' x 128), '89AB' x 128, 'buffer - above'); | 112 is($f->{upload}('89AB' x 128), '89AB' x 128, 'buffer - above'); |
132 is($f->{window}, 512, 'buffer - above - window'); | |
133 is($f->{http_end}(), 200, 'buffer - response'); | 113 is($f->{http_end}(), 200, 'buffer - response'); |
134 | 114 |
135 $f = get_body('/', 'content-length' => 10); | 115 $f = get_body('/', 'content-length' => 10); |
136 ok($f->{headers}, 'split'); | 116 ok($f->{headers}, 'split'); |
137 is($f->{upload}('0123456789', split => [ 14 ]), '0123456789', 'split'); | 117 is($f->{upload}('0123456789', split => [ 14 ]), '0123456789', 'split'); |
141 | 121 |
142 $f = get_body('/chunked'); | 122 $f = get_body('/chunked'); |
143 ok($f->{headers}, 'chunked'); | 123 ok($f->{headers}, 'chunked'); |
144 is($f->{upload}('01234', body_more => 1), '5' . CRLF . '01234' . CRLF, | 124 is($f->{upload}('01234', body_more => 1), '5' . CRLF . '01234' . CRLF, |
145 'chunked - part'); | 125 'chunked - part'); |
146 is($f->{window}, 1024, 'chunked - part - window'); | |
147 is($f->{upload}('56789'), '5' . CRLF . '56789' . CRLF . '0' . CRLF . CRLF, | 126 is($f->{upload}('56789'), '5' . CRLF . '56789' . CRLF . '0' . CRLF . CRLF, |
148 'chunked - part 2'); | 127 'chunked - part 2'); |
149 is($f->{window}, 5, 'chunked - part 2 - window'); | |
150 is($f->{http_end}(), 200, 'chunked - response'); | 128 is($f->{http_end}(), 200, 'chunked - response'); |
151 | 129 |
152 $f = get_body('/chunked'); | 130 $f = get_body('/chunked'); |
153 ok($f->{headers}, 'chunked buffer'); | 131 ok($f->{headers}, 'chunked buffer'); |
154 is($f->{upload}('0123' x 128, body_more => 1), | 132 is($f->{upload}('0123' x 128, body_more => 1), |
155 '200' . CRLF . '0123' x 128 . CRLF, 'chunked buffer - below'); | 133 '200' . CRLF . '0123' x 128 . CRLF, 'chunked buffer - below'); |
156 is($f->{window}, 1024, 'chunked buffer - below - window'); | |
157 is($f->{upload}('4567' x 128, body_more => 1), | 134 is($f->{upload}('4567' x 128, body_more => 1), |
158 '200' . CRLF . '4567' x 128 . CRLF, 'chunked buffer - equal'); | 135 '200' . CRLF . '4567' x 128 . CRLF, 'chunked buffer - equal'); |
159 is($f->{window}, 512, 'chunked buffer - equal - window'); | |
160 is($f->{upload}('89AB' x 128), | 136 is($f->{upload}('89AB' x 128), |
161 '200' . CRLF . '89AB' x 128 . CRLF . '0' . CRLF . CRLF, | 137 '200' . CRLF . '89AB' x 128 . CRLF . '0' . CRLF . CRLF, |
162 'chunked buffer - above'); | 138 'chunked buffer - above'); |
163 is($f->{window}, 512, 'chunked buffer - above - window'); | |
164 is($f->{http_end}(), 200, 'chunked buffer - response'); | 139 is($f->{http_end}(), 200, 'chunked buffer - response'); |
165 | 140 |
166 $f = get_body('/chunked'); | 141 $f = get_body('/chunked'); |
167 ok($f->{headers}, 'chunked many'); | 142 ok($f->{headers}, 'chunked many'); |
168 is($f->{upload}('01234many', body_split => [ 5 ], body_more => 1), | 143 is($f->{upload}('01234many', body_split => [ 5 ], body_more => 1), |
169 '9' . CRLF . '01234many' . CRLF, 'chunked many - part'); | 144 '9' . CRLF . '01234many' . CRLF, 'chunked many - part'); |
170 is($f->{window}, 1024, 'chunked many - part - window'); | |
171 is($f->{upload}('56789many', body_split => [ 5 ]), | 145 is($f->{upload}('56789many', body_split => [ 5 ]), |
172 '9' . CRLF . '56789many' . CRLF . '0' . CRLF . CRLF, | 146 '9' . CRLF . '56789many' . CRLF . '0' . CRLF . CRLF, |
173 'chunked many - part 2'); | 147 'chunked many - part 2'); |
174 is($f->{window}, 9, 'chunked many - part 2 - window'); | |
175 is($f->{http_end}(), 200, 'chunked many - response'); | 148 is($f->{http_end}(), 200, 'chunked many - response'); |
176 | 149 |
177 $f = get_body('/chunked'); | 150 $f = get_body('/chunked'); |
178 ok($f->{headers}, 'chunked empty'); | 151 ok($f->{headers}, 'chunked empty'); |
179 is($f->{upload}('', body_more => 1), '', 'chunked empty - part'); | 152 is($f->{upload}('', body_more => 1), '', 'chunked empty - part'); |
180 is($f->{window}, 1024, 'chunked empty - part - window'); | |
181 is($f->{upload}(''), '0' . CRLF . CRLF, 'chunked empty - part 2'); | 153 is($f->{upload}(''), '0' . CRLF . CRLF, 'chunked empty - part 2'); |
182 is($f->{window}, undef, 'chunked empty - part 2 - window'); | |
183 is($f->{http_end}(), 200, 'chunked empty - response'); | 154 is($f->{http_end}(), 200, 'chunked empty - response'); |
184 | 155 |
185 $f = get_body('/chunked'); | 156 $f = get_body('/chunked'); |
186 ok($f->{headers}, 'chunked split'); | 157 ok($f->{headers}, 'chunked split'); |
187 is($f->{upload}('0123456789', split => [ 14 ]), | 158 is($f->{upload}('0123456789', split => [ 14 ]), |
243 }; | 214 }; |
244 | 215 |
245 $f->{upload} = sub { | 216 $f->{upload} = sub { |
246 my ($body, %extra) = @_; | 217 my ($body, %extra) = @_; |
247 | 218 |
248 my $frames = h2_read($sess, | |
249 all => [{ type => 'WINDOW_UPDATE' }]); | |
250 my ($frame) = grep { $_->{type} eq "WINDOW_UPDATE" } @$frames; | |
251 $f->{window} = $frame->{wdelta}; | |
252 | |
253 h2_body($sess, $body, { %extra }); | 219 h2_body($sess, $body, { %extra }); |
254 | 220 |
255 return $body_read->($client, '', length($body)); | 221 return $body_read->($client, '', length($body)); |
256 }; | 222 }; |
257 $f->{http_end} = sub { | 223 $f->{http_end} = sub { |