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

Side by Side Diff: tools/chrome_proxy/webdriver/lite_page.py

Issue 2802843003: Update CPAT protocol to send lite-page transform acceptance with ect
Patch Set: Fixed testLitePageNoFallback integration test (fixed forcing ECT) Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 # Copyright 2017 The Chromium Authors. All rights reserved. 1 # Copyright 2017 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 common 5 import common
6 from common import TestDriver 6 from common import TestDriver
7 from common import IntegrationTest 7 from common import IntegrationTest
8 8
9 9
10 class LitePage(IntegrationTest): 10 class LitePage(IntegrationTest):
(...skipping 13 matching lines...) Expand all
24 test_driver.LoadURL('http://check.googlezip.net/test.html') 24 test_driver.LoadURL('http://check.googlezip.net/test.html')
25 25
26 lite_page_responses = 0 26 lite_page_responses = 0
27 for response in test_driver.GetHTTPResponses(): 27 for response in test_driver.GetHTTPResponses():
28 # Skip CSI requests when validating Lite Page headers. CSI requests 28 # Skip CSI requests when validating Lite Page headers. CSI requests
29 # aren't expected to have LoFi headers. 29 # aren't expected to have LoFi headers.
30 if '/csi?' in response.url: 30 if '/csi?' in response.url:
31 continue 31 continue
32 if response.url.startswith('data:'): 32 if response.url.startswith('data:'):
33 continue 33 continue
34 self.assertIn('exp=ignore_preview_blacklist', 34 # Main resource should force lite page.
35 response.request_headers['chrome-proxy']) 35 if response.url.endswith('html'):
36 self.assertIn('exp=force_lite_page',
37 response.request_headers['chrome-proxy'])
36 if (self.checkLitePageResponse(response)): 38 if (self.checkLitePageResponse(response)):
37 lite_page_responses = lite_page_responses + 1 39 lite_page_responses = lite_page_responses + 1
38 40
39 # Verify that a Lite Page response for the main frame was seen. 41 # Verify that a Lite Page response for the main frame was seen.
40 self.assertEqual(1, lite_page_responses) 42 self.assertEqual(1, lite_page_responses)
41 43
42 # Checks that Lo-Fi images are used when the user is in the 44 # Checks that Lo-Fi images are used when the user is in the
43 # DataCompressionProxyLitePageFallback field trial and a Lite Page is not 45 # DataCompressionProxyLitePageFallback field trial and a Lite Page is not
44 # served. 46 # served.
45 def testLitePageFallback(self): 47 def testLitePageFallback(self):
46 with TestDriver() as test_driver: 48 with TestDriver() as test_driver:
47 test_driver.AddChromeArg('--enable-spdy-proxy-auth') 49 test_driver.AddChromeArg('--enable-spdy-proxy-auth')
50 test_driver.AddChromeArg('--force-fieldtrial-params='
51 'NetworkQualityEstimator.Enabled:'
52 'force_effective_connection_type/Slow2G,'
53 'DataCompressionProxyLoFi.Enabled_Preview:'
54 'effective_connection_type/4G')
48 test_driver.AddChromeArg('--force-fieldtrials=' 55 test_driver.AddChromeArg('--force-fieldtrials='
56 'NetworkQualityEstimator/Enabled/'
49 'DataCompressionProxyLoFi/Enabled_Preview/' 57 'DataCompressionProxyLoFi/Enabled_Preview/'
50 'DataCompressionProxyLitePageFallback/Enabled') 58 'DataCompressionProxyLitePageFallback/Enabled')
51 test_driver.AddChromeArg('--force-fieldtrial-params='
52 'DataCompressionProxyLoFi.Enabled_Preview:'
53 'effective_connection_type/4G')
54 test_driver.AddChromeArg('--force-net-effective-connection-type=2g')
55 59
56 test_driver.LoadURL('http://check.googlezip.net/lite-page-fallback') 60 test_driver.LoadURL('http://check.googlezip.net/lite-page-fallback')
57 61
58 lite_page_requests = 0 62 lite_page_requests = 0
59 lo_fi_responses = 0 63 lo_fi_responses = 0
60 for response in test_driver.GetHTTPResponses(): 64 for response in test_driver.GetHTTPResponses():
61 if not response.request_headers: 65 if not response.request_headers:
62 continue 66 continue
63 67
68 self.assertEqual("Slow-2G",
69 response.request_headers['chrome-proxy-ect'])
70
64 cpat_request = response.request_headers['chrome-proxy-accept-transform'] 71 cpat_request = response.request_headers['chrome-proxy-accept-transform']
65 if ('lite-page' in cpat_request): 72 if ('lite-page' in cpat_request):
66 lite_page_requests = lite_page_requests + 1 73 lite_page_requests = lite_page_requests + 1
67 self.assertFalse(self.checkLitePageResponse(response)) 74 self.assertFalse(self.checkLitePageResponse(response))
68 75
69 if not response.url.endswith('png'): 76 if not response.url.endswith('png'):
70 continue 77 continue
71 78
72 if (self.checkLoFiResponse(response, True)): 79 if (self.checkLoFiResponse(response, True)):
73 lo_fi_responses = lo_fi_responses + 1 80 lo_fi_responses = lo_fi_responses + 1
74 81
75 # Verify that a Lite Page was requested and that the page fell back to 82 # Verify that a Lite Page was requested and that the page fell back to
76 # Lo-Fi images. 83 # Lo-Fi images.
77 self.assertEqual(1, lite_page_requests) 84 self.assertEqual(1, lite_page_requests)
78 self.assertEqual(1, lo_fi_responses) 85 self.assertEqual(1, lo_fi_responses)
79 86
80 # Checks that Lo-Fi images are not used when the user is not in the 87 # Checks that Lo-Fi images are not used when the user is not in the
81 # DataCompressionProxyLitePageFallback field trial and a Lite Page is not 88 # DataCompressionProxyLitePageFallback field trial and a Lite Page is not
82 # served. 89 # served.
83 def testLitePageNoFallback(self): 90 def testLitePageNoFallback(self):
84 with TestDriver() as test_driver: 91 with TestDriver() as test_driver:
85 test_driver.AddChromeArg('--enable-spdy-proxy-auth') 92 test_driver.AddChromeArg('--enable-spdy-proxy-auth')
86 # Lite Pages must be enabled via the field trial because the Lite Page 93 # Lite Pages must be enabled via the field trial because the Lite Page
87 # flag always falls back to Lo-Fi. 94 # flag always falls back to Lo-Fi.
88 test_driver.AddChromeArg('--force-fieldtrials='
89 'DataCompressionProxyLoFi/Enabled_Preview')
90 test_driver.AddChromeArg('--force-fieldtrial-params=' 95 test_driver.AddChromeArg('--force-fieldtrial-params='
96 'NetworkQualityEstimator.Enabled:'
97 'force_effective_connection_type/Slow2G,'
91 'DataCompressionProxyLoFi.Enabled_Preview:' 98 'DataCompressionProxyLoFi.Enabled_Preview:'
92 'effective_connection_type/4G') 99 'effective_connection_type/4G')
93 test_driver.AddChromeArg('--force-net-effective-connection-type=2g') 100 test_driver.AddChromeArg('--force-fieldtrials='
101 'NetworkQualityEstimator/Enabled/'
102 'DataCompressionProxyLoFi/Enabled_Preview')
94 103
95 test_driver.LoadURL('http://check.googlezip.net/lite-page-fallback') 104 test_driver.LoadURL('http://check.googlezip.net/lite-page-fallback')
96 105
97 lite_page_requests = 0 106 lite_page_requests = 0
98 for response in test_driver.GetHTTPResponses(): 107 for response in test_driver.GetHTTPResponses():
99 if not response.request_headers: 108 if not response.request_headers:
100 continue 109 continue
101 110
111 self.assertEqual("Slow-2G",
112 response.request_headers['chrome-proxy-ect'])
113
102 if ('chrome-proxy-accept-transform' in response.request_headers): 114 if ('chrome-proxy-accept-transform' in response.request_headers):
103 cpat_request = response.request_headers[ 115 cpat_request = response.request_headers[
104 'chrome-proxy-accept-transform'] 116 'chrome-proxy-accept-transform']
105 if ('lite-page' in cpat_request): 117 if ('lite-page' in cpat_request):
106 lite_page_requests = lite_page_requests + 1 118 lite_page_requests = lite_page_requests + 1
107 self.assertFalse(self.checkLitePageResponse(response)) 119 self.assertFalse(self.checkLitePageResponse(response))
108 120
109 if not response.url.endswith('png'): 121 if not response.url.endswith('png'):
110 continue 122 continue
111 123
112 self.checkLoFiResponse(response, False) 124 self.checkLoFiResponse(response, False)
113 125
114 # Verify that a Lite Page was requested and that the page fell back to 126 # Verify that a Lite Page was requested and that the page fell back to
115 # Lo-Fi images. 127 # Lo-Fi images.
116 self.assertEqual(1, lite_page_requests) 128 self.assertEqual(1, lite_page_requests)
117 129
118 if __name__ == '__main__': 130 if __name__ == '__main__':
119 IntegrationTest.RunAllTests() 131 IntegrationTest.RunAllTests()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698