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

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

Issue 659333004: Added several new bypass telemetry tests for the data reduction proxy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git/+/master
Patch Set: Synced repo 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_measurements.py
diff --git a/tools/chrome_proxy/integration_tests/chrome_proxy_measurements.py b/tools/chrome_proxy/integration_tests/chrome_proxy_measurements.py
index d3d5af3261aeb431fcc664bb1ee34e62a9da70a1..319ef7dde952174b68b054c65889750b9379e5fb 100644
--- a/tools/chrome_proxy/integration_tests/chrome_proxy_measurements.py
+++ b/tools/chrome_proxy/integration_tests/chrome_proxy_measurements.py
@@ -112,8 +112,18 @@ class ChromeProxyBypass(ChromeProxyValidation):
self._metrics.AddResultsForBypass(tab, results)
+class ChromeProxyFallback(ChromeProxyValidation):
+ """Correctness measurement for proxy fallback responses."""
+
+ def __init__(self):
+ super(ChromeProxyFallback, self).__init__(restart_after_each_page=True)
+
+ def AddResults(self, tab, results):
+ self._metrics.AddResultsForFallback(tab, results)
+
+
class ChromeProxyCorsBypass(ChromeProxyValidation):
- """Correctness measurement for bypass responses."""
+ """Correctness measurement for bypass responses for CORS requests."""
def __init__(self):
super(ChromeProxyCorsBypass, self).__init__(restart_after_each_page=True)
@@ -123,7 +133,7 @@ class ChromeProxyCorsBypass(ChromeProxyValidation):
# finishes.
tab.WaitForJavaScriptExpression('window.xhrRequestCompleted', 15000)
super(ChromeProxyCorsBypass,
- self).ValidateAndMeasurePag1Ge(page, tab, results)
+ self).ValidateAndMeasurePage(page, tab, results)
def AddResults(self, tab, results):
self._metrics.AddResultsForCorsBypass(tab, results)
@@ -163,7 +173,8 @@ _TEST_SERVER_DEFAULT_URL = 'http://' + _TEST_SERVER + '/default'
#
# The test server allow request to override response status, headers, and
# body through query parameters. See GetResponseOverrideURL.
-def GetResponseOverrideURL(url, respStatus=0, respHeader="", respBody=""):
+def GetResponseOverrideURL(url=_TEST_SERVER_DEFAULT_URL, respStatus=0,
+ respHeader="", respBody=""):
""" Compose the request URL with query parameters to override
the chromeproxy-test server response.
"""
@@ -201,7 +212,6 @@ class ChromeProxyHTTPFallbackProbeURL(ChromeProxyValidation):
# Use the test server probe URL which returns the response
# body as specified by respBody.
probe_url = GetResponseOverrideURL(
- _TEST_SERVER_DEFAULT_URL,
respBody='not OK')
options.AppendExtraBrowserArgs(
'--data-reduction-proxy-probe-url=%s' % probe_url)
@@ -284,6 +294,49 @@ class ChromeProxyHTTPToDirectFallback(ChromeProxyValidation):
self._metrics.AddResultsForHTTPToDirectFallback(tab, results)
+class ChromeProxyExplicitBypass(ChromeProxyValidation):
+ """Correctness measurement for explicit proxy bypasses.
+
+ In this test, the configured proxy is the chromeproxy-test server which
+ will send back a response without the expected Via header. Chrome is
+ expected to use the fallback proxy and add the configured proxy to the
+ bad proxy list.
+ """
+
+ def __init__(self):
+ super(ChromeProxyExplicitBypass, self).__init__(
+ restart_after_each_page=True)
+
+ def CustomizeBrowserOptions(self, options):
+ super(ChromeProxyExplicitBypass,
+ self).CustomizeBrowserOptions(options)
+ options.AppendExtraBrowserArgs('--ignore-certificate-errors')
+ options.AppendExtraBrowserArgs(
+ '--spdy-proxy-auth-origin=http://%s' % _TEST_SERVER)
+ options.AppendExtraBrowserArgs(
+ '--spdy-proxy-auth-value=%s' % _FAKE_PROXY_AUTH_VALUE)
+
+ def AddResults(self, tab, results):
+ bad_proxies = [{
+ 'proxy': _TEST_SERVER + ':80',
+ 'retry_seconds_low': self._page.bypass_seconds_low,
+ 'retry_seconds_high': self._page.bypass_seconds_high
+ }]
+ if self._page.num_bypassed_proxies == 2:
+ bad_proxies.append({
+ 'proxy': self._metrics.effective_proxies['fallback'],
+ 'retry_seconds_low': self._page.bypass_seconds_low,
+ 'retry_seconds_high': self._page.bypass_seconds_high
+ })
+ else:
+ # Even if the test page only causes the primary proxy to be bypassed,
+ # Chrome will attempt to fetch the favicon for the test server through
+ # the data reduction proxy, which will cause a "block=0" bypass.
+ bad_proxies.append({'proxy': self._metrics.effective_proxies['fallback']})
+
+ self._metrics.AddResultsForExplicitBypass(tab, results, bad_proxies)
+
+
class ChromeProxySmoke(ChromeProxyValidation):
"""Smoke measurement for basic chrome proxy correctness."""

Powered by Google App Engine
This is Rietveld 408576698