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

Unified Diff: net/http/http_stream_factory_impl_unittest.cc

Issue 1502453003: QUIC - Disable Preconnect when QUIC can be spoken to a server with 0RTT (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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
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 637b612401c128e757e14e12b87b6b25f62de690..c0286b34b6651e99f720687cdffb750010c7a297 100644
--- a/net/http/http_stream_factory_impl_unittest.cc
+++ b/net/http/http_stream_factory_impl_unittest.cc
@@ -27,6 +27,7 @@
#include "net/log/net_log.h"
#include "net/proxy/proxy_info.h"
#include "net/proxy/proxy_service.h"
+#include "net/quic/test_tools/quic_stream_factory_peer.h"
#include "net/socket/client_socket_handle.h"
#include "net/socket/mock_client_socket_pool_manager.h"
#include "net/socket/next_proto.h"
@@ -116,7 +117,6 @@ class MockHttpStreamFactoryImplForPreconnect : public HttpStreamFactoryImpl {
preconnect_done_(false),
waiting_for_preconnect_(false) {}
-
void WaitForPreconnects() {
while (!preconnect_done_) {
waiting_for_preconnect_ = true;
@@ -639,6 +639,7 @@ TEST_P(HttpStreamFactoryTest, UnreachableQuicProxyMarkedAsBad) {
HttpNetworkSession::Params params;
params.enable_quic = true;
+ params.disable_preconnects = false;
params.enable_quic_for_proxies = true;
scoped_refptr<SSLConfigServiceDefaults> ssl_config_service(
new SSLConfigServiceDefaults);
@@ -700,6 +701,7 @@ TEST_P(HttpStreamFactoryTest, QuicLossyProxyMarkedAsBad) {
HttpNetworkSession::Params params;
params.enable_quic = true;
params.enable_quic_for_proxies = true;
+ params.disable_preconnects = false;
scoped_refptr<SSLConfigServiceDefaults> ssl_config_service(
new SSLConfigServiceDefaults);
HttpServerPropertiesImpl http_server_properties;
@@ -748,6 +750,56 @@ TEST_P(HttpStreamFactoryTest, QuicLossyProxyMarkedAsBad) {
EXPECT_TRUE(iter != retry_info.end());
}
+TEST_P(HttpStreamFactoryTest, PreconnectDisabled) {
Ryan Hamilton 2015/12/05 04:16:17 It'd be good to have a test where preconnect works
ramant (doing other things) 2015/12/07 20:05:39 Done.
+ // Set up QUIC as alternative_service.
+ HttpServerPropertiesImpl http_server_properties;
+ const AlternativeService alternative_service1(QUIC, "www.google.com", 443);
+ AlternativeServiceInfoVector alternative_service_info_vector;
+ base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
+ alternative_service_info_vector.push_back(
+ AlternativeServiceInfo(alternative_service1, 1.0, expiration));
+ HostPortPair host_port_pair(alternative_service1.host_port_pair());
+ http_server_properties.SetAlternativeServices(
+ host_port_pair, alternative_service_info_vector);
+
+ SpdySessionDependencies session_deps(GetParam());
+
+ // Setup params.
+ HttpNetworkSession::Params params =
+ SpdySessionDependencies::CreateSessionParams(&session_deps);
+ params.enable_quic = true;
+ params.disable_preconnects = true;
+ params.http_server_properties = http_server_properties.GetWeakPtr();
+
+ scoped_ptr<HttpNetworkSession> session(new HttpNetworkSession(params));
+
+ // Setup 0RTT for QUIC.
+ QuicStreamFactory* factory = session->quic_stream_factory();
+ factory->set_require_confirmation(false);
+ test::QuicStreamFactoryPeer::CacheDummyServerConfig(factory, host_port_pair,
+ PRIVACY_MODE_DISABLED);
+
+ HttpNetworkSessionPeer peer(session.get());
+ CapturePreconnectsTransportSocketPool* transport_conn_pool =
+ new CapturePreconnectsTransportSocketPool(
+ session_deps.host_resolver.get(), session_deps.cert_verifier.get());
+ scoped_ptr<MockClientSocketPoolManager> mock_pool_manager(
+ new MockClientSocketPoolManager);
+ mock_pool_manager->SetTransportSocketPool(transport_conn_pool);
+ peer.SetClientSocketPoolManager(mock_pool_manager.Pass());
+
+ HttpRequestInfo request;
+ request.method = "GET";
+ request.url = GURL("https://www.google.com:443");
Ryan Hamilton 2015/12/05 04:16:17 nit: do you need :443?
ramant (doing other things) 2015/12/07 20:05:39 Done.
+ request.load_flags = 0;
+
+ SSLConfig ssl_config;
+ session->ssl_config_service()->GetSSLConfig(&ssl_config);
+ session->http_stream_factory()->PreconnectStreams(1, request, ssl_config,
+ ssl_config);
+ EXPECT_EQ(-1, transport_conn_pool->last_num_streams());
+}
+
namespace {
TEST_P(HttpStreamFactoryTest, PrivacyModeDisablesChannelId) {

Powered by Google App Engine
This is Rietveld 408576698