Chromium Code Reviews| Index: components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc |
| diff --git a/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc b/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc |
| index 65535764d755a29ebeb81c0ecee72aa95f1c79cd..1f573c896859b81f827f9de404e2cc42200b8e51 100644 |
| --- a/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc |
| +++ b/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc |
| @@ -57,8 +57,10 @@ namespace data_reduction_proxy { |
| class TestDataReductionProxyNetworkDelegate : public net::NetworkDelegate { |
| public: |
| TestDataReductionProxyNetworkDelegate( |
| - TestDataReductionProxyParams* test_params) |
| - : net::NetworkDelegate(), test_data_reduction_proxy_params_(test_params) { |
| + TestDataReductionProxyParams* test_params, |
| + ProxyService::DataReductionProxyBypassType* bypass_type) |
| + : net::NetworkDelegate(), test_data_reduction_proxy_params_(test_params), |
|
bengr
2014/07/19 00:13:01
move test_data... to the next line
megjablon
2014/07/21 19:44:45
Done.
|
| + bypass_type_(bypass_type) { |
| } |
| virtual int OnHeadersReceived( |
| @@ -71,11 +73,13 @@ class TestDataReductionProxyNetworkDelegate : public net::NetworkDelegate { |
| test_data_reduction_proxy_params_, |
| request, |
| original_response_headers, |
| - override_response_headers); |
| + override_response_headers, |
| + bypass_type_); |
| return net::OK; |
| } |
| TestDataReductionProxyParams* test_data_reduction_proxy_params_; |
| + ProxyService::DataReductionProxyBypassType* bypass_type_; |
| }; |
| // Constructs a |TestURLRequestContext| that uses a |MockSocketFactory| to |
| @@ -93,13 +97,15 @@ class DataReductionProxyProtocolTest : public testing::Test { |
| } |
| // Sets up the |TestURLRequestContext| with the provided |ProxyService|. |
| - void ConfigureTestDependencies(ProxyService* proxy_service) { |
| + void ConfigureTestDependencies( |
| + ProxyService* proxy_service, |
| + ProxyService::DataReductionProxyBypassType* bypass_type) { |
| // Create a context with delayed initialization. |
| context_.reset(new TestURLRequestContext(true)); |
| proxy_service_.reset(proxy_service); |
| network_delegate_.reset(new TestDataReductionProxyNetworkDelegate( |
| - proxy_params_.get())); |
| + proxy_params_.get(), bypass_type)); |
| context_->set_client_socket_factory(&mock_socket_factory_); |
| context_->set_proxy_service(proxy_service_.get()); |
| @@ -359,6 +365,7 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| size_t expected_bad_proxy_count; |
| bool expect_response_body; |
| int expected_duration; |
| + ProxyService::DataReductionProxyBypassType expected_bypass_type; |
| } tests[] = { |
| // Valid data reduction proxy response with no bypass message. |
| { "GET", |
| @@ -368,7 +375,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| false, |
| 0u, |
| true, |
| - -1 |
| + -1, |
| + ProxyService::BYPASS_EVENT_TYPE_MAX, |
| }, |
| // Valid data reduction proxy response with older, but still valid via |
| // header. |
| @@ -379,7 +387,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| false, |
| 0u, |
| true, |
| - -1 |
| + -1, |
| + ProxyService::BYPASS_EVENT_TYPE_MAX |
| }, |
| // Valid data reduction proxy response with chained via header, |
| // no bypass message. |
| @@ -390,7 +399,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| false, |
| 0u, |
| true, |
| - -1 |
| + -1, |
| + ProxyService::BYPASS_EVENT_TYPE_MAX |
| }, |
| // Valid data reduction proxy response with a bypass message. |
| { "GET", |
| @@ -401,7 +411,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| true, |
| - 0 |
| + 0, |
| + ProxyService::MEDIUM_BYPASS |
| }, |
| // Valid data reduction proxy response with a bypass message. |
| { "GET", |
| @@ -412,7 +423,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| true, |
| - 1 |
| + 1, |
| + ProxyService::SHORT_BYPASS |
| }, |
| // Same as above with the OPTIONS method, which is idempotent. |
| { "OPTIONS", |
| @@ -423,7 +435,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| true, |
| - 0 |
| + 0, |
| + ProxyService::MEDIUM_BYPASS |
| }, |
| // Same as above with the HEAD method, which is idempotent. |
| { "HEAD", |
| @@ -434,7 +447,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| false, |
| - 0 |
| + 0, |
| + ProxyService::MEDIUM_BYPASS |
| }, |
| // Same as above with the PUT method, which is idempotent. |
| { "PUT", |
| @@ -445,7 +459,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| true, |
| - 0 |
| + 0, |
| + ProxyService::MEDIUM_BYPASS |
| }, |
| // Same as above with the DELETE method, which is idempotent. |
| { "DELETE", |
| @@ -456,7 +471,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| true, |
| - 0 |
| + 0, |
| + ProxyService::MEDIUM_BYPASS |
| }, |
| // Same as above with the TRACE method, which is idempotent. |
| { "TRACE", |
| @@ -467,7 +483,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| true, |
| - 0 |
| + 0, |
| + ProxyService::MEDIUM_BYPASS |
| }, |
| // 500 responses should be bypassed. |
| { "GET", |
| @@ -477,7 +494,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| true, |
| - 0 |
| + 0, |
| + ProxyService::STATUS_500_HTTP_INTERNAL_SERVER_ERROR |
| }, |
| // 502 responses should be bypassed. |
| { "GET", |
| @@ -487,7 +505,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| true, |
| - 0 |
| + 0, |
| + ProxyService::STATUS_502_HTTP_BAD_GATEWAY |
| }, |
| // 503 responses should be bypassed. |
| { "GET", |
| @@ -497,7 +516,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| true, |
| - 0 |
| + 0, |
| + ProxyService::STATUS_503_HTTP_SERVICE_UNAVAILABLE |
| }, |
| // Invalid data reduction proxy response. Missing Via header. |
| { "GET", |
| @@ -506,7 +526,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| true, |
| - 0 |
| + 0, |
| + ProxyService::MISSING_VIA_HEADER_OTHER |
| }, |
| // Invalid data reduction proxy response. Wrong Via header. |
| { "GET", |
| @@ -516,7 +537,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 1u, |
| true, |
| - 0 |
| + 0, |
| + ProxyService::MISSING_VIA_HEADER_OTHER |
| }, |
| // Valid data reduction proxy response. 304 missing Via header. |
| { "GET", |
| @@ -525,7 +547,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| false, |
| 0u, |
| false, |
| - 0 |
| + 0, |
| + ProxyService::BYPASS_EVENT_TYPE_MAX |
| }, |
| // Valid data reduction proxy response with a bypass message. It will |
| // not be retried because the request is non-idempotent. |
| @@ -537,7 +560,8 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| false, |
| 1u, |
| true, |
| - 0 |
| + 0, |
| + ProxyService::MEDIUM_BYPASS |
| }, |
| // Valid data reduction proxy response with block message. Both proxies |
| // should be on the retry list when it completes. |
| @@ -549,21 +573,26 @@ TEST_F(DataReductionProxyProtocolTest, BypassLogic) { |
| true, |
| 2u, |
| true, |
| - 1 |
| + 1, |
| + ProxyService::SHORT_BYPASS |
| } |
| }; |
| std::string primary = proxy_params_->DefaultOrigin(); |
| std::string fallback = proxy_params_->DefaultFallbackOrigin(); |
| for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { |
| + ProxyService::DataReductionProxyBypassType bypass_type; |
| ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult( |
| "PROXY " + |
| HostPortPair::FromURL(GURL(primary)).ToString() + "; PROXY " + |
| - HostPortPair::FromURL(GURL(fallback)).ToString() + "; DIRECT")); |
| + HostPortPair::FromURL(GURL(fallback)).ToString() + "; DIRECT"), |
| + &bypass_type); |
| TestProxyFallback(tests[i].method, |
| tests[i].first_response, |
| tests[i].expected_retry, |
| tests[i].expect_response_body); |
| + EXPECT_EQ(tests[i].expected_bypass_type, bypass_type); |
| + |
| // We should also observe the bad proxy in the retry list. |
| TestBadProxies(tests[i].expected_bad_proxy_count, |
| tests[i].expected_duration, |
| @@ -575,7 +604,8 @@ TEST_F(DataReductionProxyProtocolTest, |
| ProxyBypassIgnoredOnDirectConnection) { |
| // Verify that a Chrome-Proxy header is ignored when returned from a directly |
| // connected origin server. |
| - ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult("DIRECT")); |
| + ConfigureTestDependencies(ProxyService::CreateFixedFromPacResult("DIRECT"), |
| + NULL); |
| MockRead data_reads[] = { |
| MockRead("HTTP/1.1 200 OK\r\n" |