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

Unified Diff: tools/perf/measurements/chrome_proxy.py

Issue 397483002: Move chrome_proxy tests from under tools/perf to tools/chrome_proxy/integration_tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments and sync'ed Created 6 years, 5 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
« no previous file with comments | « tools/perf/measurements/OWNERS ('k') | tools/perf/metrics/OWNERS » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/perf/measurements/chrome_proxy.py
diff --git a/tools/perf/measurements/chrome_proxy.py b/tools/perf/measurements/chrome_proxy.py
deleted file mode 100644
index a04df6ab13da63066a0f1ba1ce3f5575fab7fdcb..0000000000000000000000000000000000000000
--- a/tools/perf/measurements/chrome_proxy.py
+++ /dev/null
@@ -1,252 +0,0 @@
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import base64
-import logging
-import urlparse
-
-from metrics import chrome_proxy
-from metrics import loading
-from telemetry.core import util
-from telemetry.page import page_measurement
-
-
-class ChromeProxyLatency(page_measurement.PageMeasurement):
- """Chrome proxy latency measurement."""
-
- def __init__(self, *args, **kwargs):
- super(ChromeProxyLatency, self).__init__(*args, **kwargs)
-
- def WillNavigateToPage(self, page, tab):
- tab.ClearCache(force=True)
-
- def MeasurePage(self, page, tab, results):
- # Wait for the load event.
- tab.WaitForJavaScriptExpression('performance.timing.loadEventStart', 300)
- loading.LoadingMetric().AddResults(tab, results)
-
-
-class ChromeProxyDataSaving(page_measurement.PageMeasurement):
- """Chrome proxy data daving measurement."""
- def __init__(self, *args, **kwargs):
- super(ChromeProxyDataSaving, self).__init__(*args, **kwargs)
- self._metrics = chrome_proxy.ChromeProxyMetric()
-
- def WillNavigateToPage(self, page, tab):
- tab.ClearCache(force=True)
- self._metrics.Start(page, tab)
-
- def MeasurePage(self, page, tab, results):
- # Wait for the load event.
- tab.WaitForJavaScriptExpression('performance.timing.loadEventStart', 300)
- self._metrics.Stop(page, tab)
- self._metrics.AddResultsForDataSaving(tab, results)
-
-
-class ChromeProxyValidation(page_measurement.PageMeasurement):
- """Base class for all chrome proxy correctness measurements."""
-
- def __init__(self, restart_after_each_page=False):
- super(ChromeProxyValidation, self).__init__(
- needs_browser_restart_after_each_page=restart_after_each_page)
- self._metrics = chrome_proxy.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 MeasurePage(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)
- 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)
- except util.TimeoutException, 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)
-
- def AddResults(self, tab, results):
- self._metrics.AddResultsForHeaderValidation(tab, results)
-
-
-class ChromeProxyBypass(ChromeProxyValidation):
- """Correctness measurement for bypass responses."""
-
- def __init__(self):
- super(ChromeProxyBypass, self).__init__(restart_after_each_page=True)
-
- def AddResults(self, tab, results):
- self._metrics.AddResultsForBypass(tab, results)
-
-
-class ChromeProxySafebrowsing(ChromeProxyValidation):
- """Correctness measurement for safebrowsing."""
-
- def __init__(self):
- super(ChromeProxySafebrowsing, self).__init__()
-
- def WillNavigateToPage(self, page, tab):
- super(ChromeProxySafebrowsing, self).WillNavigateToPage(page, tab)
- self._expect_timeout = True
-
- def AddResults(self, tab, results):
- self._metrics.AddResultsForSafebrowsing(tab, results)
-
-
-_FAKE_PROXY_AUTH_VALUE = 'aabbccdd3b7579186c1b0620614fdb1f0000ffff'
-_TEST_SERVER = 'chromeproxy-test.appspot.com'
-_TEST_SERVER_DEFAULT_URL = 'http://' + _TEST_SERVER + '/default'
-
-
-# We rely on the chromeproxy-test server to facilitate some of the tests.
-# The test server code is at <TBD location> and runs at _TEST_SERVER
-#
-# The test server allow request to override response status, headers, and
-# body through query parameters. See GetResponseOverrideURL.
-def GetResponseOverrideURL(url, respStatus=0, respHeader="", respBody=""):
- """ Compose the request URL with query parameters to override
- the chromeproxy-test server response.
- """
-
- queries = []
- if respStatus > 0:
- queries.append('respStatus=%d' % respStatus)
- if respHeader:
- queries.append('respHeader=%s' % base64.b64encode(respHeader))
- if respBody:
- queries.append('respBody=%s' % base64.b64encode(respBody))
- if len(queries) == 0:
- return url
- "&".join(queries)
- # url has query already
- if urlparse.urlparse(url).query:
- return url + '&' + "&".join(queries)
- else:
- return url + '?' + "&".join(queries)
-
-
-class ChromeProxyHTTPFallbackProbeURL(ChromeProxyValidation):
- """Correctness measurement for proxy fallback.
-
- In this test, the probe URL does not return 'OK'. Chrome is expected
- to use the fallback proxy.
- """
-
- def __init__(self):
- super(ChromeProxyHTTPFallbackProbeURL, self).__init__()
-
- def CustomizeBrowserOptions(self, options):
- super(ChromeProxyHTTPFallbackProbeURL,
- self).CustomizeBrowserOptions(options)
- # 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)
-
- def AddResults(self, tab, results):
- self._metrics.AddResultsForHTTPFallback(tab, results)
-
-
-# Depends on the fix of http://crbug.com/330342.
-class ChromeProxyHTTPFallbackViaHeader(ChromeProxyValidation):
- """Correctness measurement for proxy fallback.
-
- 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(ChromeProxyHTTPFallbackViaHeader, self).__init__()
-
- def CustomizeBrowserOptions(self, options):
- super(ChromeProxyHTTPFallbackViaHeader,
- 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):
- proxies = [
- _TEST_SERVER + ":80",
- self._metrics.effective_proxies['fallback'],
- self._metrics.effective_proxies['direct']]
- bad_proxies = [_TEST_SERVER + ":80"]
- self._metrics.AddResultsForHTTPFallback(tab, results, proxies, bad_proxies)
-
-
-class ChromeProxySmoke(ChromeProxyValidation):
- """Smoke measurement for basic chrome proxy correctness."""
-
- def __init__(self):
- super(ChromeProxySmoke, self).__init__()
-
- def WillNavigateToPage(self, page, tab):
- super(ChromeProxySmoke, self).WillNavigateToPage(page, tab)
- if page.name == 'safebrowsing':
- self._expect_timeout = True
-
- def AddResults(self, tab, results):
- # Map a page name to its AddResults func.
- page_to_metrics = {
- 'header validation': [self._metrics.AddResultsForHeaderValidation],
- 'compression: image': [
- self._metrics.AddResultsForHeaderValidation,
- self._metrics.AddResultsForDataSaving,
- ],
- 'compression: javascript': [
- self._metrics.AddResultsForHeaderValidation,
- self._metrics.AddResultsForDataSaving,
- ],
- 'compression: css': [
- self._metrics.AddResultsForHeaderValidation,
- self._metrics.AddResultsForDataSaving,
- ],
- 'bypass': [self._metrics.AddResultsForBypass],
- 'safebrowsing': [self._metrics.AddResultsForSafebrowsing],
- }
- if not self._page.name in page_to_metrics:
- raise page_measurement.MeasurementFailure(
- 'Invalid page name (%s) in smoke. Page name must be one of:\n%s' % (
- self._page.name, page_to_metrics.keys()))
- for add_result in page_to_metrics[self._page.name]:
- add_result(tab, results)
« no previous file with comments | « tools/perf/measurements/OWNERS ('k') | tools/perf/metrics/OWNERS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698