OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import base64 | 5 import base64 |
6 import logging | 6 import logging |
7 import urlparse | 7 import urlparse |
8 | 8 |
9 from common import chrome_proxy_measurements as measurements | 9 from common import chrome_proxy_measurements as measurements |
10 from common.chrome_proxy_measurements import ChromeProxyValidation | 10 from common.chrome_proxy_measurements import ChromeProxyValidation |
(...skipping 29 matching lines...) Expand all Loading... |
40 options.AppendExtraBrowserArgs('--enable-spdy-proxy-auth') | 40 options.AppendExtraBrowserArgs('--enable-spdy-proxy-auth') |
41 | 41 |
42 def WillNavigateToPage(self, page, tab): | 42 def WillNavigateToPage(self, page, tab): |
43 if self._enable_proxy: | 43 if self._enable_proxy: |
44 measurements.WaitForViaHeader(tab) | 44 measurements.WaitForViaHeader(tab) |
45 tab.ClearCache(force=True) | 45 tab.ClearCache(force=True) |
46 self._metrics.Start(page, tab) | 46 self._metrics.Start(page, tab) |
47 | 47 |
48 def ValidateAndMeasurePage(self, page, tab, results): | 48 def ValidateAndMeasurePage(self, page, tab, results): |
49 # Wait for the load event. | 49 # Wait for the load event. |
50 tab.WaitForJavaScriptCondition2( | 50 tab.WaitForJavaScriptCondition( |
51 'performance.timing.loadEventStart', timeout=300) | 51 'performance.timing.loadEventStart', timeout=300) |
52 self._metrics.Stop(page, tab) | 52 self._metrics.Stop(page, tab) |
53 self._metrics.AddResultsForDataSaving(tab, results) | 53 self._metrics.AddResultsForDataSaving(tab, results) |
54 | 54 |
55 | 55 |
56 class ChromeProxyHeaders(ChromeProxyValidation): | 56 class ChromeProxyHeaders(ChromeProxyValidation): |
57 """Correctness measurement for response headers.""" | 57 """Correctness measurement for response headers.""" |
58 | 58 |
59 def __init__(self): | 59 def __init__(self): |
60 super(ChromeProxyHeaders, self).__init__( | 60 super(ChromeProxyHeaders, self).__init__( |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 """Correctness measurement for bypass responses for CORS requests.""" | 117 """Correctness measurement for bypass responses for CORS requests.""" |
118 | 118 |
119 def __init__(self): | 119 def __init__(self): |
120 super(ChromeProxyCorsBypass, self).__init__( | 120 super(ChromeProxyCorsBypass, self).__init__( |
121 restart_after_each_page=True, | 121 restart_after_each_page=True, |
122 metrics=metrics.ChromeProxyMetric()) | 122 metrics=metrics.ChromeProxyMetric()) |
123 | 123 |
124 def ValidateAndMeasurePage(self, page, tab, results): | 124 def ValidateAndMeasurePage(self, page, tab, results): |
125 # The test page sets window.xhrRequestCompleted to true when the XHR fetch | 125 # The test page sets window.xhrRequestCompleted to true when the XHR fetch |
126 # finishes. | 126 # finishes. |
127 tab.WaitForJavaScriptCondition2('window.xhrRequestCompleted', timeout=300) | 127 tab.WaitForJavaScriptCondition('window.xhrRequestCompleted', timeout=300) |
128 super(ChromeProxyCorsBypass, | 128 super(ChromeProxyCorsBypass, |
129 self).ValidateAndMeasurePage(page, tab, results) | 129 self).ValidateAndMeasurePage(page, tab, results) |
130 | 130 |
131 def AddResults(self, tab, results): | 131 def AddResults(self, tab, results): |
132 self._metrics.AddResultsForCorsBypass(tab, results) | 132 self._metrics.AddResultsForCorsBypass(tab, results) |
133 | 133 |
134 | 134 |
135 class ChromeProxyBlockOnce(ChromeProxyValidation): | 135 class ChromeProxyBlockOnce(ChromeProxyValidation): |
136 """Correctness measurement for block-once responses.""" | 136 """Correctness measurement for block-once responses.""" |
137 | 137 |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 self._is_lo_fi_enabled = False | 359 self._is_lo_fi_enabled = False |
360 | 360 |
361 def WillNavigateToPage(self, page, tab): | 361 def WillNavigateToPage(self, page, tab): |
362 super(ChromeProxyCacheLoFiDisabled, self).WillNavigateToPage(page, tab) | 362 super(ChromeProxyCacheLoFiDisabled, self).WillNavigateToPage(page, tab) |
363 if self._is_lo_fi_enabled: | 363 if self._is_lo_fi_enabled: |
364 # Clear cache for the first page to pick LoFi image from server. | 364 # Clear cache for the first page to pick LoFi image from server. |
365 tab.ClearCache(force=True) | 365 tab.ClearCache(force=True) |
366 | 366 |
367 def DidNavigateToPage(self, page, tab): | 367 def DidNavigateToPage(self, page, tab): |
368 if not self._is_lo_fi_enabled: | 368 if not self._is_lo_fi_enabled: |
369 tab.ExecuteJavaScript2('window.location.reload()') | 369 tab.ExecuteJavaScript('window.location.reload()') |
370 util.WaitFor(tab.HasReachedQuiescence, 3) | 370 util.WaitFor(tab.HasReachedQuiescence, 3) |
371 | 371 |
372 class ChromeProxyCacheProxyDisabled(ChromeProxyValidation): | 372 class ChromeProxyCacheProxyDisabled(ChromeProxyValidation): |
373 """ | 373 """ |
374 Correctness measurement for Lo-Fi placeholder is not loaded from cache when a | 374 Correctness measurement for Lo-Fi placeholder is not loaded from cache when a |
375 page is reloaded with data reduction proxy disabled. First a test page is | 375 page is reloaded with data reduction proxy disabled. First a test page is |
376 opened with LoFi and chrome proxy enabled. This allows Chrome to cache the | 376 opened with LoFi and chrome proxy enabled. This allows Chrome to cache the |
377 LoFi placeholder image. The browser is restarted with chrome proxy disabled | 377 LoFi placeholder image. The browser is restarted with chrome proxy disabled |
378 and the same test page is loaded. This second page load should not pick the | 378 and the same test page is loaded. This second page load should not pick the |
379 LoFi placeholder from cache and original image should be loaded. This test | 379 LoFi placeholder from cache and original image should be loaded. This test |
(...skipping 26 matching lines...) Expand all Loading... |
406 self.DisableChromeProxy() | 406 self.DisableChromeProxy() |
407 | 407 |
408 def WillNavigateToPage(self, page, tab): | 408 def WillNavigateToPage(self, page, tab): |
409 super(ChromeProxyCacheProxyDisabled, self).WillNavigateToPage(page, tab) | 409 super(ChromeProxyCacheProxyDisabled, self).WillNavigateToPage(page, tab) |
410 if self._is_chrome_proxy_enabled: | 410 if self._is_chrome_proxy_enabled: |
411 # Clear cache for the first page to pick LoFi image from server. | 411 # Clear cache for the first page to pick LoFi image from server. |
412 tab.ClearCache(force=True) | 412 tab.ClearCache(force=True) |
413 | 413 |
414 def DidNavigateToPage(self, page, tab): | 414 def DidNavigateToPage(self, page, tab): |
415 if not self._is_chrome_proxy_enabled: | 415 if not self._is_chrome_proxy_enabled: |
416 tab.ExecuteJavaScript2('window.location.reload()') | 416 tab.ExecuteJavaScript('window.location.reload()') |
417 util.WaitFor(tab.HasReachedQuiescence, 3) | 417 util.WaitFor(tab.HasReachedQuiescence, 3) |
418 | 418 |
419 class ChromeProxyLitePage(ChromeProxyValidation): | 419 class ChromeProxyLitePage(ChromeProxyValidation): |
420 """Correctness measurement for lite pages in the Chrome-Proxy header.""" | 420 """Correctness measurement for lite pages in the Chrome-Proxy header.""" |
421 | 421 |
422 def __init__(self): | 422 def __init__(self): |
423 super(ChromeProxyLitePage, self).__init__( | 423 super(ChromeProxyLitePage, self).__init__( |
424 restart_after_each_page=True, | 424 restart_after_each_page=True, |
425 metrics=metrics.ChromeProxyMetric()) | 425 metrics=metrics.ChromeProxyMetric()) |
426 | 426 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 options.AppendExtraBrowserArgs( | 495 options.AppendExtraBrowserArgs( |
496 '--data-reduction-proxy-http-proxies=' | 496 '--data-reduction-proxy-http-proxies=' |
497 'http://nonexistent.googlezip.net;http://compress.googlezip.net') | 497 'http://nonexistent.googlezip.net;http://compress.googlezip.net') |
498 | 498 |
499 def WillNavigateToPage(self, page, tab): | 499 def WillNavigateToPage(self, page, tab): |
500 super(ChromeProxyHTTPToDirectFallback, self).WillNavigateToPage(page, tab) | 500 super(ChromeProxyHTTPToDirectFallback, self).WillNavigateToPage(page, tab) |
501 # Attempt to load a page through the nonexistent primary proxy in order to | 501 # Attempt to load a page through the nonexistent primary proxy in order to |
502 # cause a proxy fallback, and have this test run starting from the HTTP | 502 # cause a proxy fallback, and have this test run starting from the HTTP |
503 # fallback proxy. | 503 # fallback proxy. |
504 tab.Navigate(_TEST_SERVER_DEFAULT_URL) | 504 tab.Navigate(_TEST_SERVER_DEFAULT_URL) |
505 tab.WaitForJavaScriptCondition2( | 505 tab.WaitForJavaScriptCondition( |
506 'performance.timing.loadEventStart', timeout=300) | 506 'performance.timing.loadEventStart', timeout=300) |
507 | 507 |
508 def AddResults(self, tab, results): | 508 def AddResults(self, tab, results): |
509 self._metrics.AddResultsForHTTPToDirectFallback(tab, results, _TEST_SERVER) | 509 self._metrics.AddResultsForHTTPToDirectFallback(tab, results, _TEST_SERVER) |
510 | 510 |
511 | 511 |
512 class ChromeProxyReenableAfterBypass(ChromeProxyValidation): | 512 class ChromeProxyReenableAfterBypass(ChromeProxyValidation): |
513 """Correctness measurement for re-enabling proxies after bypasses. | 513 """Correctness measurement for re-enabling proxies after bypasses. |
514 | 514 |
515 This test loads a page that causes all data reduction proxies to be bypassed | 515 This test loads a page that causes all data reduction proxies to be bypassed |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
597 options.AppendExtraBrowserArgs('--enable-spdy-proxy-auth') | 597 options.AppendExtraBrowserArgs('--enable-spdy-proxy-auth') |
598 | 598 |
599 def WillNavigateToPage(self, page, tab): | 599 def WillNavigateToPage(self, page, tab): |
600 if self._enable_proxy: | 600 if self._enable_proxy: |
601 measurements.WaitForViaHeader(tab) | 601 measurements.WaitForViaHeader(tab) |
602 tab.ClearCache(force=True) | 602 tab.ClearCache(force=True) |
603 self._metrics.Start(page, tab) | 603 self._metrics.Start(page, tab) |
604 | 604 |
605 def ValidateAndMeasurePage(self, page, tab, results): | 605 def ValidateAndMeasurePage(self, page, tab, results): |
606 # Wait for the load event. | 606 # Wait for the load event. |
607 tab.WaitForJavaScriptCondition2( | 607 tab.WaitForJavaScriptCondition( |
608 'performance.timing.loadEventStart', timeout=300) | 608 'performance.timing.loadEventStart', timeout=300) |
609 self._metrics.Stop(page, tab) | 609 self._metrics.Stop(page, tab) |
610 page_to_metrics = { | 610 page_to_metrics = { |
611 'header validation': [self._metrics.AddResultsForHeaderValidation], | 611 'header validation': [self._metrics.AddResultsForHeaderValidation], |
612 'compression: image': [ | 612 'compression: image': [ |
613 self._metrics.AddResultsForHeaderValidation, | 613 self._metrics.AddResultsForHeaderValidation, |
614 self._metrics.AddResultsForDataSaving, | 614 self._metrics.AddResultsForDataSaving, |
615 ], | 615 ], |
616 'compression: javascript': [ | 616 'compression: javascript': [ |
617 self._metrics.AddResultsForHeaderValidation, | 617 self._metrics.AddResultsForHeaderValidation, |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
796 '--enable-stats-collection-bindings') | 796 '--enable-stats-collection-bindings') |
797 | 797 |
798 def WillNavigateToPage(self, page, tab): | 798 def WillNavigateToPage(self, page, tab): |
799 if self._enable_proxy: | 799 if self._enable_proxy: |
800 measurements.WaitForViaHeader(tab) | 800 measurements.WaitForViaHeader(tab) |
801 tab.ClearCache(force=True) | 801 tab.ClearCache(force=True) |
802 self._metrics.Start(page, tab) | 802 self._metrics.Start(page, tab) |
803 | 803 |
804 def ValidateAndMeasurePage(self, page, tab, results): | 804 def ValidateAndMeasurePage(self, page, tab, results): |
805 # Wait for the load event. | 805 # Wait for the load event. |
806 tab.WaitForJavaScriptCondition2( | 806 tab.WaitForJavaScriptCondition( |
807 'performance.timing.loadEventStart', timeout=300) | 807 'performance.timing.loadEventStart', timeout=300) |
808 self._metrics.Stop(page, tab) | 808 self._metrics.Stop(page, tab) |
809 self._metrics.AddResultsForQuicTransaction(tab, results) | 809 self._metrics.AddResultsForQuicTransaction(tab, results) |
OLD | NEW |