| OLD | NEW |
| 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 import datetime | 5 import datetime |
| 6 import logging | 6 import logging |
| 7 import os | 7 import os |
| 8 | 8 |
| 9 from integration_tests import network_metrics | 9 from integration_tests import network_metrics |
| 10 from telemetry.page import page_test | 10 from telemetry.page import page_test |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 got_retry_time = datetime.datetime.fromtimestamp( | 247 got_retry_time = datetime.datetime.fromtimestamp( |
| 248 int(bad_proxy['retry'])/1000) | 248 int(bad_proxy['retry'])/1000) |
| 249 if not ProxyRetryTimeInRange( | 249 if not ProxyRetryTimeInRange( |
| 250 got_retry_time, retry_time_low, retry_time_high): | 250 got_retry_time, retry_time_low, retry_time_high): |
| 251 raise ChromeProxyMetricException, ( | 251 raise ChromeProxyMetricException, ( |
| 252 'Bad proxy %s retry time (%s) should be within range (%s-%s).' % ( | 252 'Bad proxy %s retry time (%s) should be within range (%s-%s).' % ( |
| 253 bad_proxy['proxy'], str(got_retry_time), str(retry_time_low), | 253 bad_proxy['proxy'], str(got_retry_time), str(retry_time_low), |
| 254 str(retry_time_high))) | 254 str(retry_time_high))) |
| 255 | 255 |
| 256 def VerifyAllProxiesBypassed(self, tab): | 256 def VerifyAllProxiesBypassed(self, tab): |
| 257 """Verify that all proxies are bypassed for 1 to 5 minutes.""" |
| 257 if tab: | 258 if tab: |
| 258 info = GetProxyInfoFromNetworkInternals(tab) | 259 info = GetProxyInfoFromNetworkInternals(tab) |
| 259 if not info['enabled']: | 260 if not info['enabled']: |
| 260 raise ChromeProxyMetricException, ( | 261 raise ChromeProxyMetricException, ( |
| 261 'Chrome proxy should be enabled. proxy info: %s' % info) | 262 'Chrome proxy should be enabled. proxy info: %s' % info) |
| 262 is_bypassed, expected_bad_proxies = self.IsProxyBypassed(tab) | 263 is_bypassed, expected_bad_proxies = self.IsProxyBypassed(tab) |
| 263 if not is_bypassed: | 264 if not is_bypassed: |
| 264 raise ChromeProxyMetricException, ( | 265 raise ChromeProxyMetricException, ( |
| 265 'Chrome proxy should be bypassed. proxy info: %s' % info) | 266 'Chrome proxy should be bypassed. proxy info: %s' % info) |
| 266 self.VerifyBadProxies(info['badProxies'], | 267 self.VerifyBadProxies(info['badProxies'], |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 '%s: Got a 502 without a subsequent 200' % (url)) | 334 '%s: Got a 502 without a subsequent 200' % (url)) |
| 334 elif bypasses[url] > 1: | 335 elif bypasses[url] > 1: |
| 335 raise ChromeProxyMetricException, ( | 336 raise ChromeProxyMetricException, ( |
| 336 '%s: Got a 502 and multiple 200s: %d' % (url, bypasses[url])) | 337 '%s: Got a 502 and multiple 200s: %d' % (url, bypasses[url])) |
| 337 if bypass_count == 0: | 338 if bypass_count == 0: |
| 338 raise ChromeProxyMetricException, ( | 339 raise ChromeProxyMetricException, ( |
| 339 'At least one response should be bypassed. ' | 340 'At least one response should be bypassed. ' |
| 340 '(eligible_response_count=%d, bypass_count=%d)\n' % ( | 341 '(eligible_response_count=%d, bypass_count=%d)\n' % ( |
| 341 eligible_response_count, bypass_count)) | 342 eligible_response_count, bypass_count)) |
| 342 | 343 |
| 343 self.VerifyAllProxiesBypassed(tab) | |
| 344 results.AddValue(scalar.ScalarValue( | 344 results.AddValue(scalar.ScalarValue( |
| 345 results.current_page, 'cors_bypass', 'count', bypass_count)) | 345 results.current_page, 'cors_bypass', 'count', bypass_count)) |
| 346 | 346 |
| 347 def AddResultsForBlockOnce(self, tab, results): | 347 def AddResultsForBlockOnce(self, tab, results): |
| 348 eligible_response_count = 0 | 348 eligible_response_count = 0 |
| 349 bypass_count = 0 | 349 bypass_count = 0 |
| 350 for resp in self.IterResponses(tab): | 350 for resp in self.IterResponses(tab): |
| 351 if resp.ShouldHaveChromeProxyViaHeader(): | 351 if resp.ShouldHaveChromeProxyViaHeader(): |
| 352 eligible_response_count += 1 | 352 eligible_response_count += 1 |
| 353 if not resp.HasChromeProxyViaHeader(): | 353 if not resp.HasChromeProxyViaHeader(): |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 397 raise ChromeProxyMetricException, ( | 397 raise ChromeProxyMetricException, ( |
| 398 'Safebrowsing failed (count=%d, safebrowsing_count=%d)\n' % ( | 398 'Safebrowsing failed (count=%d, safebrowsing_count=%d)\n' % ( |
| 399 count, safebrowsing_count)) | 399 count, safebrowsing_count)) |
| 400 | 400 |
| 401 def VerifyProxyInfo(self, tab, expected_proxies, expected_bad_proxies): | 401 def VerifyProxyInfo(self, tab, expected_proxies, expected_bad_proxies): |
| 402 info = GetProxyInfoFromNetworkInternals(tab) | 402 info = GetProxyInfoFromNetworkInternals(tab) |
| 403 if not 'enabled' in info or not info['enabled']: | 403 if not 'enabled' in info or not info['enabled']: |
| 404 raise ChromeProxyMetricException, ( | 404 raise ChromeProxyMetricException, ( |
| 405 'Chrome proxy should be enabled. proxy info: %s' % info) | 405 'Chrome proxy should be enabled. proxy info: %s' % info) |
| 406 proxies = info['proxies'] | 406 proxies = info['proxies'] |
| 407 if (proxies != expected_proxies and | 407 if (set(proxies) != set(expected_proxies) and |
| 408 proxies != self.ProxyListForDev(expected_proxies)): | 408 set(proxies) != set(self.ProxyListForDev(expected_proxies))): |
| 409 raise ChromeProxyMetricException, ( | 409 raise ChromeProxyMetricException, ( |
| 410 'Wrong effective proxies (%s). Expect: "%s"' % ( | 410 'Wrong effective proxies (%s). Expect: "%s"' % ( |
| 411 str(proxies), str(expected_proxies))) | 411 str(proxies), str(expected_proxies))) |
| 412 | 412 |
| 413 bad_proxies = [] | 413 bad_proxies = [] |
| 414 if 'badProxies' in info and info['badProxies']: | 414 if 'badProxies' in info and info['badProxies']: |
| 415 bad_proxies = [p['proxy'] for p in info['badProxies'] | 415 bad_proxies = [p['proxy'] for p in info['badProxies'] |
| 416 if 'proxy' in p and p['proxy']] | 416 if 'proxy' in p and p['proxy']] |
| 417 if (bad_proxies != expected_bad_proxies and | 417 if (set(bad_proxies) != set(expected_bad_proxies) and |
| 418 bad_proxies != self.ProxyListForDev(expected_bad_proxies)): | 418 set(bad_proxies) != set(self.ProxyListForDev(expected_bad_proxies))): |
| 419 raise ChromeProxyMetricException, ( | 419 raise ChromeProxyMetricException, ( |
| 420 'Wrong bad proxies (%s). Expect: "%s"' % ( | 420 'Wrong bad proxies (%s). Expect: "%s"' % ( |
| 421 str(bad_proxies), str(expected_bad_proxies))) | 421 str(bad_proxies), str(expected_bad_proxies))) |
| 422 | 422 |
| 423 def AddResultsForHTTPFallback( | 423 def AddResultsForHTTPFallback( |
| 424 self, tab, results, expected_proxies=None, expected_bad_proxies=None): | 424 self, tab, results, expected_proxies=None, expected_bad_proxies=None): |
| 425 if not expected_proxies: | 425 if not expected_proxies: |
| 426 expected_proxies = [self.effective_proxies['fallback'], | 426 expected_proxies = [self.effective_proxies['fallback'], |
| 427 self.effective_proxies['direct']] | 427 self.effective_proxies['direct']] |
| 428 if not expected_bad_proxies: | 428 if not expected_bad_proxies: |
| (...skipping 19 matching lines...) Expand all Loading... |
| 448 See the definition of VerifyBadProxies for details. | 448 See the definition of VerifyBadProxies for details. |
| 449 """ | 449 """ |
| 450 info = GetProxyInfoFromNetworkInternals(tab) | 450 info = GetProxyInfoFromNetworkInternals(tab) |
| 451 if not 'enabled' in info or not info['enabled']: | 451 if not 'enabled' in info or not info['enabled']: |
| 452 raise ChromeProxyMetricException, ( | 452 raise ChromeProxyMetricException, ( |
| 453 'Chrome proxy should be enabled. proxy info: %s' % info) | 453 'Chrome proxy should be enabled. proxy info: %s' % info) |
| 454 self.VerifyBadProxies(info['badProxies'], | 454 self.VerifyBadProxies(info['badProxies'], |
| 455 expected_bad_proxies) | 455 expected_bad_proxies) |
| 456 results.AddValue(scalar.ScalarValue( | 456 results.AddValue(scalar.ScalarValue( |
| 457 results.current_page, 'explicit_bypass', 'boolean', True)) | 457 results.current_page, 'explicit_bypass', 'boolean', True)) |
| OLD | NEW |