Chromium Code Reviews| 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..499b097c8409646dc5fa8f83b00f9adc95dbc9c8 100644 |
| --- a/tools/chrome_proxy/integration_tests/chrome_proxy_measurements.py |
| +++ b/tools/chrome_proxy/integration_tests/chrome_proxy_measurements.py |
| @@ -112,6 +112,16 @@ class ChromeProxyBypass(ChromeProxyValidation): |
| self._metrics.AddResultsForBypass(tab, results) |
| +class ChromeProxyFallback(ChromeProxyValidation): |
| + """Correctness measurement for bypass responses.""" |
|
bengr
2014/10/17 23:24:07
Can you be more specific?
sclittle
2014/10/17 23:42:33
Done.
|
| + |
| + 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.""" |
| @@ -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.""" |