| Index: tools/chrome_proxy/webdriver/lite_page.py
|
| diff --git a/tools/chrome_proxy/webdriver/lite_page.py b/tools/chrome_proxy/webdriver/lite_page.py
|
| index f758acfee178a0ff641283cd3032bfbba64f2c51..039218308d1356fd7a58526667c70cab5fb8b19d 100644
|
| --- a/tools/chrome_proxy/webdriver/lite_page.py
|
| +++ b/tools/chrome_proxy/webdriver/lite_page.py
|
| @@ -128,9 +128,10 @@ class LitePage(IntegrationTest):
|
| self.assertHasChromeProxyViaHeader(response)
|
| self.assertIn(response.status, [200, 204])
|
|
|
| - # Lo-Fi fallback is not currently supported via the client. Check that
|
| - # no Lo-Fi response is received if a Lite Page is not served.
|
| - def testLitePageFallback(self):
|
| + # Lo-Fi fallback is not supported without the
|
| + # DataReductionProxyDecidesTransform feature. Check that no Lo-Fi response
|
| + # is received if a Lite Page is not served.
|
| + def testLitePageNoFallback(self):
|
| with TestDriver() as test_driver:
|
| test_driver.AddChromeArg('--enable-spdy-proxy-auth')
|
| test_driver.AddChromeArg('--force-fieldtrials='
|
| @@ -165,5 +166,114 @@ class LitePage(IntegrationTest):
|
| # Verify that a Lite Page was requested.
|
| self.assertEqual(1, lite_page_requests)
|
|
|
| + # Verifies Lo-Fi fallback via the page-policies server directive.
|
| + # Note: this test is for the CPAT protocol change in M-61.
|
| + def testLitePageFallbackViaPagePolicies(self):
|
| + with TestDriver() as test_driver:
|
| + test_driver.AddChromeArg('--enable-spdy-proxy-auth')
|
| + test_driver.AddChromeArg('--enable-features='
|
| + 'DataReductionProxyDecidesTransform')
|
| + test_driver.AddChromeArg('--force-fieldtrial-params='
|
| + 'NetworkQualityEstimator.Enabled:'
|
| + 'force_effective_connection_type/Slow2G,'
|
| + 'DataCompressionProxyLoFi.Enabled_Preview:'
|
| + 'effective_connection_type/2G')
|
| + test_driver.AddChromeArg('--force-fieldtrials='
|
| + 'NetworkQualityEstimator/Enabled/'
|
| + 'DataCompressionProxyLoFi/Enabled_Preview')
|
| +
|
| + test_driver.LoadURL('http://check.googlezip.net/lite-page-fallback')
|
| +
|
| + lite_page_responses = 0
|
| + lofi_resource = 0
|
| + for response in test_driver.GetHTTPResponses():
|
| + self.assertEqual('Slow-2G',
|
| + response.request_headers['chrome-proxy-ect'])
|
| +
|
| + if response.url.endswith('html'):
|
| + # Verify that the server provides the fallback directive
|
| + self.assertIn('page-policies=empty-image',
|
| + response.response_headers['chrome-proxy'])
|
| + # Main resource should not accept and transform to lite page.
|
| + if self.checkLitePageResponse(response):
|
| + lite_page_responses = lite_page_responses + 1
|
| + if response.url.endswith('png'):
|
| + if self.checkLoFiResponse(response, True):
|
| + lofi_resource = lofi_resource + 1
|
| +
|
| + self.assertEqual(0, lite_page_responses)
|
| + self.assertNotEqual(0, lofi_resource)
|
| + self.assertNotEqual(0, lofi_resource)
|
| +
|
| + # Checks that the server provides Lite Page for a 2G connection.
|
| + # Note: this test is for the CPAT protocol change in M-61.
|
| + def testLitePageProvidedForSlowConnection(self):
|
| + with TestDriver() as test_driver:
|
| + test_driver.AddChromeArg('--enable-spdy-proxy-auth')
|
| + test_driver.AddChromeArg('--enable-features='
|
| + 'DataReductionProxyDecidesTransform')
|
| + test_driver.AddChromeArg('--force-fieldtrial-params='
|
| + 'NetworkQualityEstimator.Enabled:'
|
| + 'force_effective_connection_type/2G,'
|
| + 'DataCompressionProxyLoFi.Enabled_Preview:'
|
| + 'effective_connection_type/2G')
|
| + test_driver.AddChromeArg('--force-fieldtrials='
|
| + 'NetworkQualityEstimator/Enabled/'
|
| + 'DataCompressionProxyLoFi/Enabled_Preview')
|
| +
|
| + test_driver.LoadURL('http://check.googlezip.net/test.html')
|
| +
|
| + lite_page_responses = 0
|
| + page_policies_responses = 0
|
| + for response in test_driver.GetHTTPResponses():
|
| + self.assertEqual('2G', response.request_headers['chrome-proxy-ect'])
|
| + if response.url.endswith('html'):
|
| + if self.checkLitePageResponse(response):
|
| + lite_page_responses = lite_page_responses + 1
|
| + elif 'chrome-proxy' in response.response_headers:
|
| + self.assertIn('page-policies',
|
| + response.response_headers['chrome-proxy'])
|
| + page_policies_responses = page_policies_responses + 1
|
| +
|
| + # TODO(dougarnett): add specific response check if we can control
|
| + # whether weblite supported or not for the client (b/62444738).
|
| + self.assertTrue(lite_page_responses == 1 or page_policies_responses == 1)
|
| +
|
| + # Checks that the server does not provide Lite Page nor fallback
|
| + # for a fast connection.
|
| + # Note: this test is for the CPAT protocol change in M-61.
|
| + def testLitePageNotProvidedForFastConnection(self):
|
| + with TestDriver() as test_driver:
|
| + test_driver.AddChromeArg('--enable-spdy-proxy-auth')
|
| + test_driver.AddChromeArg('--enable-features='
|
| + 'DataReductionProxyDecidesTransform')
|
| + test_driver.AddChromeArg('--force-fieldtrial-params='
|
| + 'NetworkQualityEstimator.Enabled:'
|
| + 'force_effective_connection_type/4G,'
|
| + 'DataCompressionProxyLoFi.Enabled_Preview:'
|
| + 'effective_connection_type/2G')
|
| + test_driver.AddChromeArg('--force-fieldtrials='
|
| + 'NetworkQualityEstimator/Enabled/'
|
| + 'DataCompressionProxyLoFi/Enabled_Preview')
|
| +
|
| + test_driver.LoadURL('http://check.googlezip.net/test.html')
|
| +
|
| + for response in test_driver.GetHTTPResponses():
|
| + self.assertEqual('4G', response.request_headers['chrome-proxy-ect'])
|
| + if response.url.endswith('html'):
|
| + # Main resource should accept lite page but not be transformed.
|
| + self.assertEqual('lite-page',
|
| + response.request_headers['chrome-proxy-accept-transform'])
|
| + self.assertNotIn('chrome-proxy-content-transform',
|
| + response.response_headers)
|
| + # Expect no fallback page policy
|
| + if 'chrome-proxy' in response.response_headers:
|
| + self.assertNotIn('page-policies',
|
| + response.response_headers['chrome-proxy'])
|
| + else:
|
| + # No subresources should accept transforms.
|
| + self.assertNotIn('chrome-proxy-accept-transform',
|
| + response.request_headers)
|
| +
|
| if __name__ == '__main__':
|
| IntegrationTest.RunAllTests()
|
|
|