Chromium Code Reviews| 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..8f631156e3227b1bfd86fbc13cc2ac30518cfd07 100644 |
| --- a/tools/chrome_proxy/webdriver/bypass.py |
| +++ b/tools/chrome_proxy/webdriver/bypass.py |
| @@ -102,6 +102,37 @@ class Bypass(IntegrationTest): |
| for response in responses: |
| self.assertHasChromeProxyViaHeader(response) |
| + # Verify that when Chrome receives a non-4xx response through a Data Reduction |
| + # Proxy that doesn't set a proper via header, Chrome falls back to the next |
| + # available proxy. |
| + def testMissingViaHeaderNon4xxFallback(self): |
|
Robert Ogden
2017/03/14 18:17:03
This belongs in fallback.py.
sclittle
2017/03/14 19:22:28
Done.
|
| + 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. The fallback Data Reduction Proxy is set to the |
| + # canonical Data Reduction Proxy target. |
| + test_driver.AddChromeArg('--data-reduction-proxy-http-proxies=' |
| + 'https://chromeproxy-test.appspot.com;' |
| + 'http://compress.googlezip.net') |
| + |
| + # Load a page that should fall back off of the test server proxy, and onto |
| + # the canonical proxy that will set the correct Via header. |
| + test_driver.LoadURL('http://chromeproxy-test.appspot.com/default') |
| + responses = test_driver.GetHTTPResponses() |
| + self.assertNotEqual(0, len(responses)) |
| + for response in responses: |
| + self.assertHasChromeProxyViaHeader(response) |
| + self.assertEqual(u'http/1.1', response.protocol) |
| + |
| + # Check that the BypassTypePrimary histogram has a single entry in the |
| + # MissingViaHeaderOther category (which is enum value 5), to make sure |
| + # that the bypass was caused by the missing via header logic and not |
| + # something else. |
| + histogram = test_driver.GetHistogram( |
| + "DataReductionProxy.BypassTypePrimary") |
| + self.assertEqual(1, histogram['count']) |
| + self.assertIn({'count': 1, 'high': 6, 'low': 5}, histogram['buckets']) |
| if __name__ == '__main__': |
| IntegrationTest.RunAllTests() |