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

Unified Diff: tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py

Issue 655703002: Added integration tests for falling back from the HTTP proxy to direct. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
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 d211b17a53fdffba3d07db52080206cdb6b5ce28..6e2325b9871aa05e48022c86c1dfd4f9e0d927af 100644
--- a/tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py
+++ b/tools/chrome_proxy/integration_tests/chrome_proxy_metrics.py
@@ -41,7 +41,7 @@ def GetProxyInfoFromNetworkInternals(tab, url='chrome://net-internals#proxy'):
def ProxyRetryTimeInRange(retry_time, low, high, grace_seconds=30):
- return (retry_time >= low and
+ return (retry_time >= low - datetime.timedelta(seconds=grace_seconds) and
(retry_time < high + datetime.timedelta(seconds=grace_seconds)))
@@ -171,7 +171,13 @@ class ChromeProxyMetric(network_metrics.NetworkMetric):
def IsProxyBypassed(self, tab):
- """ Returns True if all configured proxies are bypassed."""
+ """Get whether all configured proxies are bypassed.
+
+ Returns:
+ A tuple of the form (boolean, string list). If all configured proxies
+ are bypassed, then the return value will be (True, bypassed proxies).
+ Otherwise, the return value will be (False, empty list).
+ """
if not tab:
return False, []
@@ -227,6 +233,18 @@ class ChromeProxyMetric(network_metrics.NetworkMetric):
str(retry_time_high)))
return True
+ def VerifyAllProxiesBypassed(self, tab):
+ if tab:
+ info = GetProxyInfoFromNetworkInternals(tab)
+ if not info['enabled']:
+ raise ChromeProxyMetricException, (
+ 'Chrome proxy should be enabled. proxy info: %s' % info)
+ is_bypassed, expected_bad_proxies = self.IsProxyBypassed(tab)
+ if not is_bypassed:
+ raise ChromeProxyMetricException, (
+ 'Chrome proxy should be bypassed. proxy info: %s' % info)
+ self.VerifyBadProxies(info['badProxies'], expected_bad_proxies)
+
def AddResultsForBypass(self, tab, results):
bypass_count = 0
for resp in self.IterResponses(tab):
@@ -237,14 +255,7 @@ class ChromeProxyMetric(network_metrics.NetworkMetric):
r.url, r.GetHeader('Via'), r.GetHeader('Referer'), r.status))
bypass_count += 1
- if tab:
- info = GetProxyInfoFromNetworkInternals(tab)
- if not info['enabled']:
- raise ChromeProxyMetricException, (
- 'Chrome proxy should be enabled. proxy info: %s' % info)
- _, expected_bad_proxies = self.IsProxyBypassed(tab)
- self.VerifyBadProxies(info['badProxies'], expected_bad_proxies)
-
+ self.VerifyAllProxiesBypassed(tab)
results.AddValue(scalar.ScalarValue(
results.current_page, 'bypass', 'count', bypass_count))
@@ -282,14 +293,8 @@ class ChromeProxyMetric(network_metrics.NetworkMetric):
'At least one response should be bypassed. '
'(eligible_response_count=%d, bypass_count=%d)\n' % (
eligible_response_count, bypass_count))
- if tab:
- info = GetProxyInfoFromNetworkInternals(tab)
- if not info['enabled']:
- raise ChromeProxyMetricException, (
- 'Chrome proxy should be enabled. proxy info: %s' % info)
- _, expected_bad_proxies = self.IsProxyBypassed(tab)
- self.VerifyBadProxies(info['badProxies'], expected_bad_proxies)
+ self.VerifyAllProxiesBypassed(tab)
results.AddValue(scalar.ScalarValue(
results.current_page, 'cors_bypass', 'count', bypass_count))
@@ -347,19 +352,12 @@ class ChromeProxyMetric(network_metrics.NetworkMetric):
'Safebrowsing failed (count=%d, safebrowsing_count=%d)\n' % (
count, safebrowsing_count))
- def AddResultsForHTTPFallback(
- self, tab, results, expected_proxies=None, expected_bad_proxies=None):
+ def VerifyProxyInfo(self, tab, expected_proxies, expected_bad_proxies):
info = GetProxyInfoFromNetworkInternals(tab)
if not 'enabled' in info or not info['enabled']:
raise ChromeProxyMetricException, (
'Chrome proxy should be enabled. proxy info: %s' % info)
- if not expected_proxies:
- expected_proxies = [self.effective_proxies['fallback'],
- self.effective_proxies['direct']]
- if not expected_bad_proxies:
- expected_bad_proxies = []
-
proxies = info['proxies']
if proxies != expected_proxies:
raise ChromeProxyMetricException, (
@@ -374,5 +372,20 @@ class ChromeProxyMetric(network_metrics.NetworkMetric):
raise ChromeProxyMetricException, (
'Wrong bad proxies (%s). Expect: "%s"' % (
str(bad_proxies), str(expected_bad_proxies)))
+
+ def AddResultsForHTTPFallback(
+ self, tab, results, expected_proxies=None, expected_bad_proxies=None):
+ if not expected_proxies:
+ expected_proxies = [self.effective_proxies['fallback'],
+ self.effective_proxies['direct']]
+ if not expected_bad_proxies:
+ expected_bad_proxies = []
+
+ self.VerifyProxyInfo(tab, expected_proxies, expected_bad_proxies)
results.AddValue(scalar.ScalarValue(
results.current_page, 'http_fallback', 'boolean', True))
+
+ def AddResultsForHTTPToDirectFallback(self, tab, results):
+ self.VerifyAllProxiesBypassed(tab)
+ results.AddValue(scalar.ScalarValue(
+ results.current_page, 'direct_fallback', 'boolean', True))

Powered by Google App Engine
This is Rietveld 408576698