Index: tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py |
diff --git a/tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py b/tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py |
index fd26a2d9254a03c22d7cf11930cfb4ed033b995f..3f765bf68ad8d10e4cb2509427d6e9816c7a64e6 100644 |
--- a/tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py |
+++ b/tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py |
@@ -20,6 +20,7 @@ CHROME_PROXY_VIA_HEADER_DEPRECATED = '1.1 Chrome Compression Proxy' |
PROXY_SETTING_HTTPS = 'proxy.googlezip.net:443' |
PROXY_SETTING_HTTPS_WITH_SCHEME = 'https://' + PROXY_SETTING_HTTPS |
+PROXY_DEV_SETTING_HTTPS_WITH_SCHEME = 'http://proxy-dev.googlezip.net:80' |
PROXY_SETTING_HTTP = 'compress.googlezip.net:80' |
PROXY_SETTING_DIRECT = 'direct://' |
@@ -97,6 +98,7 @@ class ChromeProxyMetric(network_metrics.NetworkMetric): |
self.compute_data_saving = True |
self.effective_proxies = { |
"proxy": PROXY_SETTING_HTTPS_WITH_SCHEME, |
+ "proxy-dev": PROXY_DEV_SETTING_HTTPS_WITH_SCHEME, |
"fallback": PROXY_SETTING_HTTP, |
"direct": PROXY_SETTING_DIRECT, |
} |
@@ -140,14 +142,16 @@ class ChromeProxyMetric(network_metrics.NetworkMetric): |
for resp in self.IterResponses(tab): |
if resp.IsValidByViaHeader(): |
via_count += 1 |
- elif tab and self.IsProxyBypassed(tab): |
- logging.warning('Proxy bypassed for %s', resp.response.url) |
- bypass_count += 1 |
else: |
- r = resp.response |
- raise ChromeProxyMetricException, ( |
- '%s: Via header (%s) is not valid (refer=%s, status=%d)' % ( |
- r.url, r.GetHeader('Via'), r.GetHeader('Referer'), r.status)) |
+ bypassed, _ = self.IsProxyBypassed(tab) |
+ if tab and bypassed: |
+ logging.warning('Proxy bypassed for %s', resp.response.url) |
+ bypass_count += 1 |
+ else: |
+ r = resp.response |
+ raise ChromeProxyMetricException, ( |
+ '%s: Via header (%s) is not valid (refer=%s, status=%d)' % ( |
+ r.url, r.GetHeader('Via'), r.GetHeader('Referer'), r.status)) |
results.AddValue(scalar.ScalarValue( |
results.current_page, 'checked_via_header', 'count', via_count)) |
results.AddValue(scalar.ScalarValue( |
@@ -155,15 +159,27 @@ class ChromeProxyMetric(network_metrics.NetworkMetric): |
def IsProxyBypassed(self, tab): |
""" Returns True if all configured proxies are bypassed.""" |
+ if not tab: |
+ return False, [] |
+ |
info = GetProxyInfoFromNetworkInternals(tab) |
if not info['enabled']: |
raise ChromeProxyMetricException, ( |
'Chrome proxy should be enabled. proxy info: %s' % info) |
- bad_proxies = [str(p['proxy']) for p in info['badProxies']].sort() |
+ bad_proxies = [str(p['proxy']) for p in info['badProxies']] |
+ bad_proxies.sort() |
proxies = [self.effective_proxies['proxy'], |
- self.effective_proxies['fallback']].sort() |
- return bad_proxies == proxies |
+ self.effective_proxies['fallback']] |
+ proxies.sort() |
+ proxies_dev = [self.effective_proxies['proxy-dev'], |
+ self.effective_proxies['fallback']] |
+ proxies_dev.sort() |
+ if bad_proxies == proxies: |
+ return True, proxies |
+ elif bad_proxies == proxies_dev: |
+ return True, proxies_dev |
+ return False, [] |
@staticmethod |
def VerifyBadProxies( |
@@ -213,10 +229,8 @@ class ChromeProxyMetric(network_metrics.NetworkMetric): |
if not info['enabled']: |
raise ChromeProxyMetricException, ( |
'Chrome proxy should be enabled. proxy info: %s' % info) |
- self.VerifyBadProxies( |
- info['badProxies'], |
- [self.effective_proxies['proxy'], |
- self.effective_proxies['fallback']]) |
+ _, expected_bad_proxies = self.IsProxyBypassed(tab) |
+ self.VerifyBadProxies(info['badProxies'], expected_bad_proxies) |
results.AddValue(scalar.ScalarValue( |
results.current_page, 'bypass', 'count', bypass_count)) |