Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(753)

Side by Side Diff: components/data_reduction_proxy/common/data_reduction_proxy_headers_unittest.cc

Issue 467823002: Added support for 'Chrome-Proxy: block-once' header (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased on master Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/data_reduction_proxy/common/data_reduction_proxy_headers.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/data_reduction_proxy/common/data_reduction_proxy_headers.h" 5 #include "components/data_reduction_proxy/common/data_reduction_proxy_headers.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "net/http/http_response_headers.h" 9 #include "net/http/http_response_headers.h"
10 #include "net/proxy/proxy_service.h" 10 #include "net/proxy/proxy_service.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 "1500", 88 "1500",
89 }, 89 },
90 { "HTTP/1.1 200 OK\n" 90 { "HTTP/1.1 200 OK\n"
91 "connection: proxy-bypass\n" 91 "connection: proxy-bypass\n"
92 "Chrome-Proxy: key=123 \n" 92 "Chrome-Proxy: key=123 \n"
93 "Content-Length: 999\n", 93 "Content-Length: 999\n",
94 "key", 94 "key",
95 true, 95 true,
96 "123", 96 "123",
97 }, 97 },
98 { "HTTP/1.1 200 OK\n"
99 "connection: proxy-bypass\n"
100 "Chrome-Proxy: block-once\n"
101 "Content-Length: 999\n",
102 "block-once",
103 false,
104 "",
105 },
98 }; 106 };
99 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 107 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
100 std::string headers(tests[i].headers); 108 std::string headers(tests[i].headers);
101 HeadersToRaw(&headers); 109 HeadersToRaw(&headers);
102 scoped_refptr<net::HttpResponseHeaders> parsed( 110 scoped_refptr<net::HttpResponseHeaders> parsed(
103 new net::HttpResponseHeaders(headers)); 111 new net::HttpResponseHeaders(headers));
104 112
105 std::string action_value; 113 std::string action_value;
106 bool has_action_key = GetDataReductionProxyActionValue( 114 bool has_action_key = GetDataReductionProxyActionValue(
107 parsed, tests[i].action_key, &action_value); 115 parsed, tests[i].action_key, &action_value);
108 EXPECT_EQ(tests[i].expected_result, has_action_key); 116 EXPECT_EQ(tests[i].expected_result, has_action_key);
109 if (has_action_key) { 117 if (has_action_key) {
110 EXPECT_EQ(tests[i].expected_action_value, action_value); 118 EXPECT_EQ(tests[i].expected_action_value, action_value);
111 } 119 }
112 } 120 }
113 } 121 }
114 122
115 TEST_F(DataReductionProxyHeadersTest, GetProxyBypassInfo) { 123 TEST_F(DataReductionProxyHeadersTest, GetProxyBypassInfo) {
116 const struct { 124 const struct {
117 const char* headers; 125 const char* headers;
118 bool expected_result; 126 bool expected_result;
119 int64 expected_retry_delay; 127 int64 expected_retry_delay;
120 bool expected_bypass_all; 128 bool expected_bypass_all;
129 bool expected_mark_proxies_as_bad;
121 } tests[] = { 130 } tests[] = {
122 { "HTTP/1.1 200 OK\n" 131 { "HTTP/1.1 200 OK\n"
123 "Content-Length: 999\n", 132 "Content-Length: 999\n",
124 false, 133 false,
125 0, 134 0,
126 false, 135 false,
136 false,
127 }, 137 },
128 { "HTTP/1.1 200 OK\n" 138 { "HTTP/1.1 200 OK\n"
129 "connection: keep-alive\n" 139 "connection: keep-alive\n"
130 "Content-Length: 999\n", 140 "Content-Length: 999\n",
131 false, 141 false,
132 0, 142 0,
133 false, 143 false,
144 false,
134 }, 145 },
135 { "HTTP/1.1 200 OK\n" 146 { "HTTP/1.1 200 OK\n"
136 "connection: keep-alive\n" 147 "connection: keep-alive\n"
137 "Chrome-Proxy: bypass=86400\n" 148 "Chrome-Proxy: bypass=86400\n"
138 "Content-Length: 999\n", 149 "Content-Length: 999\n",
139 true, 150 true,
140 86400, 151 86400,
141 false, 152 false,
153 true,
142 }, 154 },
143 { "HTTP/1.1 200 OK\n" 155 { "HTTP/1.1 200 OK\n"
144 "connection: keep-alive\n" 156 "connection: keep-alive\n"
145 "Chrome-Proxy: bypass=-1\n" 157 "Chrome-Proxy: bypass=-1\n"
146 "Content-Length: 999\n", 158 "Content-Length: 999\n",
147 false, 159 false,
148 0, 160 0,
149 false, 161 false,
162 false,
150 }, 163 },
151 { "HTTP/1.1 200 OK\n" 164 { "HTTP/1.1 200 OK\n"
152 "connection: keep-alive\n" 165 "connection: keep-alive\n"
153 "Chrome-Proxy: bypass=xyz\n" 166 "Chrome-Proxy: bypass=xyz\n"
154 "Content-Length: 999\n", 167 "Content-Length: 999\n",
155 false, 168 false,
156 0, 169 0,
157 false, 170 false,
171 false,
158 }, 172 },
159 { "HTTP/1.1 200 OK\n" 173 { "HTTP/1.1 200 OK\n"
160 "connection: keep-alive\n" 174 "connection: keep-alive\n"
161 "Chrome-Proxy: bypass\n" 175 "Chrome-Proxy: bypass\n"
162 "Content-Length: 999\n", 176 "Content-Length: 999\n",
163 false, 177 false,
164 0, 178 0,
165 false, 179 false,
180 false,
166 }, 181 },
167 { "HTTP/1.1 200 OK\n" 182 { "HTTP/1.1 200 OK\n"
168 "connection: keep-alive\n" 183 "connection: keep-alive\n"
169 "Chrome-Proxy: foo=abc, bypass=86400\n" 184 "Chrome-Proxy: foo=abc, bypass=86400\n"
170 "Content-Length: 999\n", 185 "Content-Length: 999\n",
171 true, 186 true,
172 86400, 187 86400,
173 false, 188 false,
189 true,
174 }, 190 },
175 { "HTTP/1.1 200 OK\n" 191 { "HTTP/1.1 200 OK\n"
176 "connection: keep-alive\n" 192 "connection: keep-alive\n"
177 "Chrome-Proxy: bypass=86400, bar=abc\n" 193 "Chrome-Proxy: bypass=86400, bar=abc\n"
178 "Content-Length: 999\n", 194 "Content-Length: 999\n",
179 true, 195 true,
180 86400, 196 86400,
181 false, 197 false,
198 true,
182 }, 199 },
183 { "HTTP/1.1 200 OK\n" 200 { "HTTP/1.1 200 OK\n"
184 "connection: keep-alive\n" 201 "connection: keep-alive\n"
185 "Chrome-Proxy: bypass=3600\n" 202 "Chrome-Proxy: bypass=3600\n"
186 "Chrome-Proxy: bypass=86400\n" 203 "Chrome-Proxy: bypass=86400\n"
187 "Content-Length: 999\n", 204 "Content-Length: 999\n",
188 true, 205 true,
189 3600, 206 3600,
190 false, 207 false,
208 true,
191 }, 209 },
192 { "HTTP/1.1 200 OK\n" 210 { "HTTP/1.1 200 OK\n"
193 "connection: keep-alive\n" 211 "connection: keep-alive\n"
194 "Chrome-Proxy: bypass=3600, bypass=86400\n" 212 "Chrome-Proxy: bypass=3600, bypass=86400\n"
195 "Content-Length: 999\n", 213 "Content-Length: 999\n",
196 true, 214 true,
197 3600, 215 3600,
198 false, 216 false,
217 true,
199 }, 218 },
200 { "HTTP/1.1 200 OK\n" 219 { "HTTP/1.1 200 OK\n"
201 "connection: keep-alive\n" 220 "connection: keep-alive\n"
202 "Chrome-Proxy: bypass=, bypass=86400\n" 221 "Chrome-Proxy: bypass=, bypass=86400\n"
203 "Content-Length: 999\n", 222 "Content-Length: 999\n",
204 true, 223 true,
205 86400, 224 86400,
206 false, 225 false,
226 true,
207 }, 227 },
208 { "HTTP/1.1 200 OK\n" 228 { "HTTP/1.1 200 OK\n"
209 "connection: keep-alive\n" 229 "connection: keep-alive\n"
210 "Chrome-Proxy: bypass\n" 230 "Chrome-Proxy: bypass\n"
211 "Chrome-Proxy: bypass=86400\n" 231 "Chrome-Proxy: bypass=86400\n"
212 "Content-Length: 999\n", 232 "Content-Length: 999\n",
213 true, 233 true,
214 86400, 234 86400,
215 false, 235 false,
236 true,
216 }, 237 },
217 { "HTTP/1.1 200 OK\n" 238 { "HTTP/1.1 200 OK\n"
218 "connection: keep-alive\n" 239 "connection: keep-alive\n"
219 "Chrome-Proxy: block=, block=3600\n" 240 "Chrome-Proxy: block=, block=3600\n"
220 "Content-Length: 999\n", 241 "Content-Length: 999\n",
221 true, 242 true,
222 3600, 243 3600,
223 true, 244 true,
245 true,
224 }, 246 },
225 { "HTTP/1.1 200 OK\n" 247 { "HTTP/1.1 200 OK\n"
226 "connection: keep-alive\n" 248 "connection: keep-alive\n"
227 "Chrome-Proxy: bypass=86400, block=3600\n" 249 "Chrome-Proxy: bypass=86400, block=3600\n"
228 "Content-Length: 999\n", 250 "Content-Length: 999\n",
229 true, 251 true,
230 3600, 252 3600,
231 true, 253 true,
254 true,
232 }, 255 },
233 { "HTTP/1.1 200 OK\n" 256 { "HTTP/1.1 200 OK\n"
234 "connection: proxy-bypass\n" 257 "connection: proxy-bypass\n"
235 "Chrome-Proxy: block=, bypass=86400\n" 258 "Chrome-Proxy: block=, bypass=86400\n"
236 "Content-Length: 999\n", 259 "Content-Length: 999\n",
237 true, 260 true,
238 86400, 261 86400,
239 false, 262 false,
263 true,
240 }, 264 },
241 { "HTTP/1.1 200 OK\n" 265 { "HTTP/1.1 200 OK\n"
242 "connection: proxy-bypass\n" 266 "connection: proxy-bypass\n"
243 "Chrome-Proxy: block=-1\n" 267 "Chrome-Proxy: block=-1\n"
244 "Content-Length: 999\n", 268 "Content-Length: 999\n",
245 false, 269 false,
246 0, 270 0,
247 false, 271 false,
272 false,
248 }, 273 },
249 { "HTTP/1.1 200 OK\n" 274 { "HTTP/1.1 200 OK\n"
250 "connection: proxy-bypass\n" 275 "connection: proxy-bypass\n"
251 "Chrome-Proxy: block=99999999999999999999\n" 276 "Chrome-Proxy: block=99999999999999999999\n"
252 "Content-Length: 999\n", 277 "Content-Length: 999\n",
253 false, 278 false,
254 0, 279 0,
255 false, 280 false,
281 false,
282 },
283 { "HTTP/1.1 200 OK\n"
284 "connection: keep-alive\n"
285 "Chrome-Proxy: block-once\n"
286 "Content-Length: 999\n",
287 true,
288 0,
289 true,
290 false,
291 },
292 { "HTTP/1.1 200 OK\n"
293 "connection: keep-alive\n"
294 "Chrome-Proxy: block-once=\n"
295 "Content-Length: 999\n",
296 false,
297 0,
298 false,
299 false,
300 },
301 { "HTTP/1.1 200 OK\n"
302 "connection: keep-alive\n"
303 "Chrome-Proxy: block-once=10\n"
304 "Content-Length: 999\n",
305 false,
306 0,
307 false,
308 false,
309 },
310 { "HTTP/1.1 200 OK\n"
311 "connection: keep-alive\n"
312 "Chrome-Proxy: block-once, bypass=86400, block=3600\n"
313 "Content-Length: 999\n",
314 true,
315 3600,
316 true,
317 true,
318 },
319 { "HTTP/1.1 200 OK\n"
320 "connection: keep-alive\n"
321 "Chrome-Proxy: block-once\n"
322 "Chrome-Proxy: bypass=86400, block=3600\n"
323 "Content-Length: 999\n",
324 true,
325 3600,
326 true,
327 true,
328 },
329 { "HTTP/1.1 200 OK\n"
330 "connection: keep-alive\n"
331 "Chrome-Proxy: block-once, bypass=86400\n"
332 "Content-Length: 999\n",
333 true,
334 86400,
335 false,
336 true,
337 },
338 { "HTTP/1.1 200 OK\n"
339 "connection: keep-alive\n"
340 "Chrome-Proxy: block-once, block=3600\n"
341 "Content-Length: 999\n",
342 true,
343 3600,
344 true,
345 true,
346 },
347 { "HTTP/1.1 200 OK\n"
348 "connection: keep-alive\n"
349 "Chrome-Proxy: bypass=, block=, block-once\n"
350 "Content-Length: 999\n",
351 true,
352 0,
353 true,
354 false,
256 }, 355 },
257 }; 356 };
258 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 357 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
259 std::string headers(tests[i].headers); 358 std::string headers(tests[i].headers);
260 HeadersToRaw(&headers); 359 HeadersToRaw(&headers);
261 scoped_refptr<net::HttpResponseHeaders> parsed( 360 scoped_refptr<net::HttpResponseHeaders> parsed(
262 new net::HttpResponseHeaders(headers)); 361 new net::HttpResponseHeaders(headers));
263 362
264 DataReductionProxyInfo data_reduction_proxy_info; 363 DataReductionProxyInfo data_reduction_proxy_info;
265 EXPECT_EQ(tests[i].expected_result, 364 EXPECT_EQ(tests[i].expected_result,
266 ParseHeadersAndSetProxyInfo(parsed, &data_reduction_proxy_info)); 365 ParseHeadersAndSetProxyInfo(parsed, &data_reduction_proxy_info));
267 EXPECT_EQ(tests[i].expected_retry_delay, 366 EXPECT_EQ(tests[i].expected_retry_delay,
268 data_reduction_proxy_info.bypass_duration.InSeconds()); 367 data_reduction_proxy_info.bypass_duration.InSeconds());
269 EXPECT_EQ(tests[i].expected_bypass_all, 368 EXPECT_EQ(tests[i].expected_bypass_all,
270 data_reduction_proxy_info.bypass_all); 369 data_reduction_proxy_info.bypass_all);
370 EXPECT_EQ(tests[i].expected_mark_proxies_as_bad,
371 data_reduction_proxy_info.mark_proxies_as_bad);
271 } 372 }
272 } 373 }
273 374
274 TEST_F(DataReductionProxyHeadersTest, ParseHeadersAndSetProxyInfo) { 375 TEST_F(DataReductionProxyHeadersTest, ParseHeadersAndSetProxyInfo) {
275 std::string headers = 376 std::string headers =
276 "HTTP/1.1 200 OK\n" 377 "HTTP/1.1 200 OK\n"
277 "connection: keep-alive\n" 378 "connection: keep-alive\n"
278 "Chrome-Proxy: bypass=0\n" 379 "Chrome-Proxy: bypass=0\n"
279 "Content-Length: 999\n"; 380 "Content-Length: 999\n";
280 HeadersToRaw(&headers); 381 HeadersToRaw(&headers);
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 { "HTTP/1.1 200 OK\n" 554 { "HTTP/1.1 200 OK\n"
454 "Chrome-Proxy: bypass=300\n" 555 "Chrome-Proxy: bypass=300\n"
455 "Via: 1.1 Chrome-Compression-Proxy\n", 556 "Via: 1.1 Chrome-Compression-Proxy\n",
456 BYPASS_EVENT_TYPE_MEDIUM, 557 BYPASS_EVENT_TYPE_MEDIUM,
457 }, 558 },
458 { "HTTP/1.1 200 OK\n" 559 { "HTTP/1.1 200 OK\n"
459 "Chrome-Proxy: bypass=301\n" 560 "Chrome-Proxy: bypass=301\n"
460 "Via: 1.1 Chrome-Compression-Proxy\n", 561 "Via: 1.1 Chrome-Compression-Proxy\n",
461 BYPASS_EVENT_TYPE_LONG, 562 BYPASS_EVENT_TYPE_LONG,
462 }, 563 },
564 { "HTTP/1.1 200 OK\n"
565 "Chrome-Proxy: block-once\n"
566 "Via: 1.1 Chrome-Compression-Proxy\n",
567 BYPASS_EVENT_TYPE_CURRENT,
568 },
463 { "HTTP/1.1 500 Internal Server Error\n" 569 { "HTTP/1.1 500 Internal Server Error\n"
464 "Via: 1.1 Chrome-Compression-Proxy\n", 570 "Via: 1.1 Chrome-Compression-Proxy\n",
465 BYPASS_EVENT_TYPE_STATUS_500_HTTP_INTERNAL_SERVER_ERROR, 571 BYPASS_EVENT_TYPE_STATUS_500_HTTP_INTERNAL_SERVER_ERROR,
466 }, 572 },
467 { "HTTP/1.1 501 Not Implemented\n" 573 { "HTTP/1.1 501 Not Implemented\n"
468 "Via: 1.1 Chrome-Compression-Proxy\n", 574 "Via: 1.1 Chrome-Compression-Proxy\n",
469 BYPASS_EVENT_TYPE_MAX, 575 BYPASS_EVENT_TYPE_MAX,
470 }, 576 },
471 { "HTTP/1.1 502 Bad Gateway\n" 577 { "HTTP/1.1 502 Bad Gateway\n"
472 "Via: 1.1 Chrome-Compression-Proxy\n", 578 "Via: 1.1 Chrome-Compression-Proxy\n",
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 std::string output_values_string; 875 std::string output_values_string;
770 for (size_t j = 0; j < output_values.size(); ++j) 876 for (size_t j = 0; j < output_values.size(); ++j)
771 output_values_string += output_values[j] + ","; 877 output_values_string += output_values[j] + ",";
772 878
773 EXPECT_EQ(test[i].expected_output_values_string, output_values_string) 879 EXPECT_EQ(test[i].expected_output_values_string, output_values_string)
774 << test[i].label; 880 << test[i].label;
775 } 881 }
776 } 882 }
777 883
778 } // namespace data_reduction_proxy 884 } // namespace data_reduction_proxy
OLDNEW
« no previous file with comments | « components/data_reduction_proxy/common/data_reduction_proxy_headers.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698