| 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 9b5a7e5397ce2aa0c99e1284fdfb45baa8b46920..fba1d99bfcfbc76684104e6ef6ae5db7cf97576b 100644
|
| --- a/tools/chrome_proxy/integration_tests/chrome_proxy_measurements.py
|
| +++ b/tools/chrome_proxy/integration_tests/chrome_proxy_measurements.py
|
| @@ -6,6 +6,7 @@ import base64
|
| import logging
|
| import urlparse
|
|
|
| +from common.chrome_proxy_measurements import ChromeProxyValidation
|
| from integration_tests import chrome_proxy_metrics as metrics
|
| from metrics import loading
|
| from telemetry.core import exceptions
|
| @@ -50,68 +51,13 @@ class ChromeProxyDataSaving(page_test.PageTest):
|
| self._metrics.AddResultsForDataSaving(tab, results)
|
|
|
|
|
| -class ChromeProxyValidation(page_test.PageTest):
|
| - """Base class for all chrome proxy correctness measurements."""
|
| -
|
| - # Value of the extra via header. |None| if no extra via header is expected.
|
| - extra_via_header = None
|
| -
|
| - def __init__(self, restart_after_each_page=False):
|
| - super(ChromeProxyValidation, self).__init__(
|
| - needs_browser_restart_after_each_page=restart_after_each_page)
|
| - self._metrics = metrics.ChromeProxyMetric()
|
| - self._page = None
|
| - # Whether a timeout exception is expected during the test.
|
| - self._expect_timeout = False
|
| -
|
| - def CustomizeBrowserOptions(self, options):
|
| - # Enable the chrome proxy (data reduction proxy).
|
| - options.AppendExtraBrowserArgs('--enable-spdy-proxy-auth')
|
| -
|
| - def WillNavigateToPage(self, page, tab):
|
| - tab.ClearCache(force=True)
|
| - assert self._metrics
|
| - self._metrics.Start(page, tab)
|
| -
|
| - def ValidateAndMeasurePage(self, page, tab, results):
|
| - self._page = page
|
| - # Wait for the load event.
|
| - tab.WaitForJavaScriptExpression('performance.timing.loadEventStart', 300)
|
| - assert self._metrics
|
| - self._metrics.Stop(page, tab)
|
| - if ChromeProxyValidation.extra_via_header:
|
| - self._metrics.AddResultsForExtraViaHeader(
|
| - tab, results, ChromeProxyValidation.extra_via_header)
|
| - self.AddResults(tab, results)
|
| -
|
| - def AddResults(self, tab, results):
|
| - raise NotImplementedError
|
| -
|
| - def StopBrowserAfterPage(self, browser, page): # pylint: disable=W0613
|
| - if hasattr(page, 'restart_after') and page.restart_after:
|
| - return True
|
| - return False
|
| -
|
| - def RunNavigateSteps(self, page, tab):
|
| - # The redirect from safebrowsing causes a timeout. Ignore that.
|
| - try:
|
| - super(ChromeProxyValidation, self).RunNavigateSteps(page, tab)
|
| - if self._expect_timeout:
|
| - raise metrics.ChromeProxyMetricException, (
|
| - 'Timeout was expected, but did not occur')
|
| - except exceptions.TimeoutException as e:
|
| - if self._expect_timeout:
|
| - logging.warning('Navigation timeout on page %s',
|
| - page.name if page.name else page.url)
|
| - else:
|
| - raise e
|
| -
|
| -
|
| class ChromeProxyHeaders(ChromeProxyValidation):
|
| """Correctness measurement for response headers."""
|
|
|
| def __init__(self):
|
| - super(ChromeProxyHeaders, self).__init__(restart_after_each_page=True)
|
| + super(ChromeProxyHeaders, self).__init__(
|
| + restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def AddResults(self, tab, results):
|
| self._metrics.AddResultsForHeaderValidation(tab, results)
|
| @@ -121,7 +67,9 @@ class ChromeProxyBypass(ChromeProxyValidation):
|
| """Correctness measurement for bypass responses."""
|
|
|
| def __init__(self):
|
| - super(ChromeProxyBypass, self).__init__(restart_after_each_page=True)
|
| + super(ChromeProxyBypass, self).__init__(
|
| + restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def AddResults(self, tab, results):
|
| self._metrics.AddResultsForBypass(tab, results)
|
| @@ -131,7 +79,9 @@ class ChromeProxyCorsBypass(ChromeProxyValidation):
|
| """Correctness measurement for bypass responses for CORS requests."""
|
|
|
| def __init__(self):
|
| - super(ChromeProxyCorsBypass, self).__init__(restart_after_each_page=True)
|
| + super(ChromeProxyCorsBypass, self).__init__(
|
| + restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def ValidateAndMeasurePage(self, page, tab, results):
|
| # The test page sets window.xhrRequestCompleted to true when the XHR fetch
|
| @@ -148,7 +98,9 @@ class ChromeProxyBlockOnce(ChromeProxyValidation):
|
| """Correctness measurement for block-once responses."""
|
|
|
| def __init__(self):
|
| - super(ChromeProxyBlockOnce, self).__init__(restart_after_each_page=True)
|
| + super(ChromeProxyBlockOnce, self).__init__(
|
| + restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def AddResults(self, tab, results):
|
| self._metrics.AddResultsForBlockOnce(tab, results)
|
| @@ -158,7 +110,8 @@ class ChromeProxySafebrowsingOn(ChromeProxyValidation):
|
| """Correctness measurement for safebrowsing."""
|
|
|
| def __init__(self):
|
| - super(ChromeProxySafebrowsingOn, self).__init__()
|
| + super(ChromeProxySafebrowsingOn, self).__init__(
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def WillNavigateToPage(self, page, tab):
|
| super(ChromeProxySafebrowsingOn, self).WillNavigateToPage(page, tab)
|
| @@ -171,7 +124,8 @@ class ChromeProxySafebrowsingOff(ChromeProxyValidation):
|
| """Correctness measurement for safebrowsing."""
|
|
|
| def __init__(self):
|
| - super(ChromeProxySafebrowsingOff, self).__init__()
|
| + super(ChromeProxySafebrowsingOff, self).__init__(
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def AddResults(self, tab, results):
|
| self._metrics.AddResultsForSafebrowsingOff(tab, results)
|
| @@ -218,7 +172,8 @@ class ChromeProxyHTTPFallbackProbeURL(ChromeProxyValidation):
|
|
|
| def __init__(self):
|
| super(ChromeProxyHTTPFallbackProbeURL, self).__init__(
|
| - restart_after_each_page=True)
|
| + restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def CustomizeBrowserOptions(self, options):
|
| super(ChromeProxyHTTPFallbackProbeURL,
|
| @@ -247,7 +202,8 @@ class ChromeProxyHTTPFallbackViaHeader(ChromeProxyValidation):
|
|
|
| def __init__(self):
|
| super(ChromeProxyHTTPFallbackViaHeader, self).__init__(
|
| - restart_after_each_page=True)
|
| + restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def CustomizeBrowserOptions(self, options):
|
| super(ChromeProxyHTTPFallbackViaHeader,
|
| @@ -269,7 +225,8 @@ class ChromeProxyClientVersion(ChromeProxyValidation):
|
| """
|
|
|
| def __init__(self):
|
| - super(ChromeProxyClientVersion, self).__init__()
|
| + super(ChromeProxyClientVersion, self).__init__(
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def CustomizeBrowserOptions(self, options):
|
| super(ChromeProxyClientVersion,
|
| @@ -284,7 +241,9 @@ class ChromeProxyClientType(ChromeProxyValidation):
|
| """Correctness measurement for Chrome-Proxy header client type directives."""
|
|
|
| def __init__(self):
|
| - super(ChromeProxyClientType, self).__init__(restart_after_each_page=True)
|
| + super(ChromeProxyClientType, self).__init__(
|
| + restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
| self._chrome_proxy_client_type = None
|
|
|
| def AddResults(self, tab, results):
|
| @@ -306,7 +265,8 @@ class ChromeProxyLoFi(ChromeProxyValidation):
|
| """Correctness measurement for Lo-Fi in Chrome-Proxy header."""
|
|
|
| def __init__(self):
|
| - super(ChromeProxyLoFi, self).__init__(restart_after_each_page=True)
|
| + super(ChromeProxyLoFi, self).__init__(restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def CustomizeBrowserOptions(self, options):
|
| super(ChromeProxyLoFi, self).CustomizeBrowserOptions(options)
|
| @@ -323,7 +283,9 @@ class ChromeProxyExpDirective(ChromeProxyValidation):
|
| """
|
|
|
| def __init__(self):
|
| - super(ChromeProxyExpDirective, self).__init__(restart_after_each_page=True)
|
| + super(ChromeProxyExpDirective, self).__init__(
|
| + restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def CustomizeBrowserOptions(self, options):
|
| super(ChromeProxyExpDirective, self).CustomizeBrowserOptions(options)
|
| @@ -338,7 +300,8 @@ class ChromeProxyHTTPToDirectFallback(ChromeProxyValidation):
|
|
|
| def __init__(self):
|
| super(ChromeProxyHTTPToDirectFallback, self).__init__(
|
| - restart_after_each_page=True)
|
| + restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def CustomizeBrowserOptions(self, options):
|
| super(ChromeProxyHTTPToDirectFallback,
|
| @@ -370,7 +333,8 @@ class ChromeProxyReenableAfterBypass(ChromeProxyValidation):
|
|
|
| def __init__(self):
|
| super(ChromeProxyReenableAfterBypass, self).__init__(
|
| - restart_after_each_page=True)
|
| + restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def AddResults(self, tab, results):
|
| self._metrics.AddResultsForReenableAfterBypass(
|
| @@ -382,7 +346,8 @@ class ChromeProxySmoke(ChromeProxyValidation):
|
| """Smoke measurement for basic chrome proxy correctness."""
|
|
|
| def __init__(self):
|
| - super(ChromeProxySmoke, self).__init__(restart_after_each_page=True)
|
| + super(ChromeProxySmoke, self).__init__(restart_after_each_page=True,
|
| + metrics=metrics.ChromeProxyMetric())
|
|
|
| def WillNavigateToPage(self, page, tab):
|
| super(ChromeProxySmoke, self).WillNavigateToPage(page, tab)
|
|
|