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

Unified Diff: net/http/http_stream_factory_impl_unittest.cc

Issue 939083003: Bypass QUIC proxy on ERR_QUIC_HANDSHAKE_FAILED (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/http/http_stream_factory_impl_job.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_stream_factory_impl_unittest.cc
diff --git a/net/http/http_stream_factory_impl_unittest.cc b/net/http/http_stream_factory_impl_unittest.cc
index 29ee6413199cdc4baae415f1891f2fe5ab8b0a00..417b6b45604fc369eecae782cc57bec06c50a61c 100644
--- a/net/http/http_stream_factory_impl_unittest.cc
+++ b/net/http/http_stream_factory_impl_unittest.cc
@@ -617,61 +617,66 @@ TEST_P(HttpStreamFactoryTest, JobNotifiesProxy) {
}
TEST_P(HttpStreamFactoryTest, UnreachableQuicProxyMarkedAsBad) {
- scoped_ptr<ProxyService> proxy_service_;
- proxy_service_.reset(
- ProxyService::CreateFixedFromPacResult("QUIC bad:99; DIRECT"));
-
- HttpNetworkSession::Params params_;
- params_.enable_quic = true;
- scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_(
- new SSLConfigServiceDefaults);
- HttpServerPropertiesImpl http_server_properties;
- MockClientSocketFactory socket_factory_;
- params_.client_socket_factory = &socket_factory_;
- MockHostResolver host_resolver_;
- params_.host_resolver = &host_resolver_;
- TransportSecurityState transport_security_state_;
- params_.transport_security_state = &transport_security_state_;
- params_.proxy_service = proxy_service_.get();
- params_.ssl_config_service = ssl_config_service_.get();
- params_.http_server_properties = http_server_properties.GetWeakPtr();
-
- scoped_refptr<HttpNetworkSession> session;
- session = new HttpNetworkSession(params_);
- session->quic_stream_factory()->set_require_confirmation(false);
-
- StaticSocketDataProvider socket_data1;
- socket_data1.set_connect_data(MockConnect(ASYNC, ERR_QUIC_PROTOCOL_ERROR));
- socket_factory_.AddSocketDataProvider(&socket_data1);
-
- // Second connection attempt succeeds
- StaticSocketDataProvider socket_data2;
- socket_data2.set_connect_data(MockConnect(ASYNC, OK));
- socket_factory_.AddSocketDataProvider(&socket_data2);
-
- // Now request a stream. It should succeed using the second proxy in the
- // list.
- HttpRequestInfo request_info;
- request_info.method = "GET";
- request_info.url = GURL("http://www.google.com");
-
- SSLConfig ssl_config;
- StreamRequestWaiter waiter;
- scoped_ptr<HttpStreamRequest> request(
- session->http_stream_factory()->RequestStream(
- request_info, DEFAULT_PRIORITY, ssl_config, ssl_config, &waiter,
- BoundNetLog()));
- waiter.WaitForStream();
-
- // The proxy that failed should now be known to the proxy_service as bad.
- const ProxyRetryInfoMap& retry_info =
- session->proxy_service()->proxy_retry_info();
- // proxy_headers_handler.proxy_info_used.proxy_retry_info();
- EXPECT_EQ(1u, retry_info.size());
- EXPECT_TRUE(waiter.used_proxy_info().is_direct());
-
- ProxyRetryInfoMap::const_iterator iter = retry_info.find("quic://bad:99");
- EXPECT_TRUE(iter != retry_info.end());
+ for (int i = 1; i <= 2; i++) {
+ int mock_error =
+ i == 1 ? ERR_QUIC_PROTOCOL_ERROR : ERR_QUIC_HANDSHAKE_FAILED;
+
+ scoped_ptr<ProxyService> proxy_service;
+ proxy_service.reset(
+ ProxyService::CreateFixedFromPacResult("QUIC bad:99; DIRECT"));
+
+ HttpNetworkSession::Params params;
+ params.enable_quic = true;
+ scoped_refptr<SSLConfigServiceDefaults> ssl_config_service(
+ new SSLConfigServiceDefaults);
+ HttpServerPropertiesImpl http_server_properties;
+ MockClientSocketFactory socket_factory;
+ params.client_socket_factory = &socket_factory;
+ MockHostResolver host_resolver;
+ params.host_resolver = &host_resolver;
+ TransportSecurityState transport_security_state;
+ params.transport_security_state = &transport_security_state;
+ params.proxy_service = proxy_service.get();
+ params.ssl_config_service = ssl_config_service.get();
+ params.http_server_properties = http_server_properties.GetWeakPtr();
+
+ scoped_refptr<HttpNetworkSession> session;
+ session = new HttpNetworkSession(params);
+ session->quic_stream_factory()->set_require_confirmation(false);
+
+ StaticSocketDataProvider socket_data1;
+ socket_data1.set_connect_data(MockConnect(ASYNC, mock_error));
+ socket_factory.AddSocketDataProvider(&socket_data1);
+
+ // Second connection attempt succeeds.
+ StaticSocketDataProvider socket_data2;
+ socket_data2.set_connect_data(MockConnect(ASYNC, OK));
+ socket_factory.AddSocketDataProvider(&socket_data2);
+
+ // Now request a stream. It should succeed using the second proxy in the
+ // list.
+ HttpRequestInfo request_info;
+ request_info.method = "GET";
+ request_info.url = GURL("http://www.google.com");
+
+ SSLConfig ssl_config;
+ StreamRequestWaiter waiter;
+ scoped_ptr<HttpStreamRequest> request(
+ session->http_stream_factory()->RequestStream(
+ request_info, DEFAULT_PRIORITY, ssl_config, ssl_config, &waiter,
+ BoundNetLog()));
+ waiter.WaitForStream();
+
+ // The proxy that failed should now be known to the proxy_service as bad.
+ const ProxyRetryInfoMap& retry_info =
+ session->proxy_service()->proxy_retry_info();
+ // proxy_headers_handler.proxy_info_used.proxy_retry_info();
+ EXPECT_EQ(1u, retry_info.size()) << i;
+ // EXPECT_TRUE(waiter.used_proxy_info().is_direct());
+
+ ProxyRetryInfoMap::const_iterator iter = retry_info.find("quic://bad:99");
+ EXPECT_TRUE(iter != retry_info.end()) << i;
+ }
}
TEST_P(HttpStreamFactoryTest, PrivacyModeDisablesChannelId) {
« no previous file with comments | « net/http/http_stream_factory_impl_job.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698