| Index: tools/chrome_proxy/webdriver/bypass.py
|
| diff --git a/tools/chrome_proxy/webdriver/bypass.py b/tools/chrome_proxy/webdriver/bypass.py
|
| index 3b7798ae6c16c719aacbf11045b8b13656ca37da..6000687d46641bb277526de559b93583de2c2982 100644
|
| --- a/tools/chrome_proxy/webdriver/bypass.py
|
| +++ b/tools/chrome_proxy/webdriver/bypass.py
|
| @@ -102,6 +102,39 @@ class Bypass(IntegrationTest):
|
| for response in responses:
|
| self.assertHasChromeProxyViaHeader(response)
|
|
|
| + # Verify that when Chrome receives a 4xx response through a Data Reduction
|
| + # Proxy that doesn't set a proper via header, Chrome bypasses all proxies and
|
| + # retries the request over direct.
|
| + def testMissingViaHeader4xxBypass(self):
|
| + with TestDriver() as test_driver:
|
| + test_driver.AddChromeArg('--enable-spdy-proxy-auth')
|
| +
|
| + # Set the primary Data Reduction Proxy to be the test server, which does
|
| + # not add any Via headers.
|
| + test_driver.AddChromeArg('--data-reduction-proxy-http-proxies='
|
| + 'https://chromeproxy-test.appspot.com;'
|
| + 'http://compress.googlezip.net')
|
| +
|
| + # Load a page that will come back with a 4xx response code and without the
|
| + # proper via header. Chrome should bypass all proxies and retry the
|
| + # request.
|
| + test_driver.LoadURL(
|
| + 'http://chromeproxy-test.appspot.com/default?respStatus=414')
|
| + responses = test_driver.GetHTTPResponses()
|
| + self.assertNotEqual(0, len(responses))
|
| + for response in responses:
|
| + self.assertNotHasChromeProxyViaHeader(response)
|
| + self.assertEqual(u'http/1.1', response.protocol)
|
| +
|
| + # Check that the BlockTypePrimary histogram has a single entry in the
|
| + # MissingViaHeader4xx category (which is enum value 4), to make sure that
|
| + # the bypass was caused by the missing via header logic and not something
|
| + # else.
|
| + histogram = test_driver.GetHistogram(
|
| + "DataReductionProxy.BlockTypePrimary")
|
| + self.assertEqual(1, histogram['count'])
|
| + self.assertIn({'count': 1, 'high': 5, 'low': 4}, histogram['buckets'])
|
| +
|
|
|
| if __name__ == '__main__':
|
| IntegrationTest.RunAllTests()
|
|
|