Mercurial > hg > nginx-tests
comparison proxy_unfinished.t @ 1613:d7ec131d305a
Tests: reworked proxy_unfinished.t to use http_content().
This somewhat simplifies tests and makes it possible to better check
for unexpected corruption of chunked responses, such as the one recently
fixed in nginx-quic experimental branch.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Tue, 17 Nov 2020 17:39:11 +0300 |
parents | 8659123d2d37 |
children |
comparison
equal
deleted
inserted
replaced
1612:8659123d2d37 | 1613:d7ec131d305a |
---|---|
103 http_get('/cache/chunked'); | 103 http_get('/cache/chunked'); |
104 like(http_get('/cache/chunked'), qr/MISS/, 'unfinished chunked'); | 104 like(http_get('/cache/chunked'), qr/MISS/, 'unfinished chunked'); |
105 | 105 |
106 # make sure there is no final chunk in unfinished responses | 106 # make sure there is no final chunk in unfinished responses |
107 | 107 |
108 like(http_get_11('/length'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, | 108 like(http_get_11('/length'), qr/unfinished.*no-last-chunk/s, |
109 'length no final chunk'); | 109 'length no final chunk'); |
110 like(http_get_11('/chunked'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, | 110 like(http_get_11('/chunked'), qr/unfinished.*no-last-chunk/s, |
111 'chunked no final chunk'); | 111 'chunked no final chunk'); |
112 | 112 |
113 # but there is final chunk in complete responses | 113 # but there is final chunk in complete responses |
114 | 114 |
115 like(http_get_11('/length/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, | 115 like(http_get_11('/length/ok'), qr/finished\x0d\x0a$/s, |
116 'length final chunk'); | 116 'length final chunk'); |
117 like(http_get_11('/chunked/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, | 117 like(http_get_11('/chunked/ok'), qr/finished\x0d\x0a$/s, |
118 'chunked final chunk'); | 118 'chunked final chunk'); |
119 | 119 |
120 # the same with proxy_buffering set to off | 120 # the same with proxy_buffering set to off |
121 | 121 |
122 like(http_get_11('/un/length'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, | 122 like(http_get_11('/un/length'), qr/unfinished.*no-last-chunk/s, |
123 'unbuffered length no final chunk'); | 123 'unbuffered length no final chunk'); |
124 like(http_get_11('/un/chunked'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, | 124 like(http_get_11('/un/chunked'), qr/unfinished.*no-last-chunk/s, |
125 'unbuffered chunked no final chunk'); | 125 'unbuffered chunked no final chunk'); |
126 | 126 |
127 like(http_get_11('/un/length/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, | 127 like(http_get_11('/un/length/ok'), qr/finished\x0d\x0a$/s, |
128 'unbuffered length final chunk'); | 128 'unbuffered length final chunk'); |
129 like(http_get_11('/un/chunked/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, | 129 like(http_get_11('/un/chunked/ok'), qr/finished\x0d\x0a$/s, |
130 'unbuffered chunked final chunk'); | 130 'unbuffered chunked final chunk'); |
131 | 131 |
132 # big responses | 132 # big responses |
133 | 133 |
134 like(http_get('/big', sleep => 0.1), qr/unfinished/s, 'big unfinished'); | 134 like(http_get('/big', sleep => 0.1), qr/unfinished/s, 'big unfinished'); |
142 chmod(0000, $t->testdir() . '/proxy_temp'); | 142 chmod(0000, $t->testdir() . '/proxy_temp'); |
143 | 143 |
144 my $r = http_get_11('/proxy/big.html', sleep => 0.5); | 144 my $r = http_get_11('/proxy/big.html', sleep => 0.5); |
145 | 145 |
146 SKIP: { | 146 SKIP: { |
147 skip 'finished', 1 if length(http_content($r)) == 1024 * 1024 + 8; | 147 skip 'finished', 1 if length($r) == 1024 * 1024 + 8; |
148 | 148 |
149 like($r, qr/X(?!.*\x0d\x0a?0\x0d\x0a?)/s, 'no proxy temp'); | 149 like($r, qr/X(?!.*\x0d\x0a?0\x0d\x0a?)/s, 'no proxy temp'); |
150 | 150 |
151 } | 151 } |
152 | 152 |
155 ############################################################################### | 155 ############################################################################### |
156 | 156 |
157 sub http_get_11 { | 157 sub http_get_11 { |
158 my ($uri, %extra) = @_; | 158 my ($uri, %extra) = @_; |
159 | 159 |
160 return http( | 160 return http_content(http( |
161 "GET $uri HTTP/1.1" . CRLF . | 161 "GET $uri HTTP/1.1" . CRLF . |
162 "Connection: close" . CRLF . | 162 "Connection: close" . CRLF . |
163 "Host: localhost" . CRLF . CRLF, | 163 "Host: localhost" . CRLF . CRLF, |
164 %extra | 164 %extra |
165 ); | 165 )); |
166 } | 166 } |
167 | 167 |
168 ############################################################################### | 168 ############################################################################### |
169 | 169 |
170 sub http_daemon { | 170 sub http_daemon { |