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

Unified Diff: net/http/http_stream_factory_impl_job_controller_unittest.cc

Issue 2964603002: JobController: do not create alternative job for those AlternativeServiceInfo (Closed)
Patch Set: Created 3 years, 6 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
Index: net/http/http_stream_factory_impl_job_controller_unittest.cc
diff --git a/net/http/http_stream_factory_impl_job_controller_unittest.cc b/net/http/http_stream_factory_impl_job_controller_unittest.cc
index 1a46a9523fbdc76732d1b9cbc8a1c85f618eb7df..846855a6c2426aa417e0060e96a560a0d6e361da 100644
--- a/net/http/http_stream_factory_impl_job_controller_unittest.cc
+++ b/net/http/http_stream_factory_impl_job_controller_unittest.cc
@@ -706,6 +706,35 @@ TEST_F(HttpStreamFactoryImplJobControllerTest, CancelJobsBeforeBinding) {
EXPECT_TRUE(HttpStreamFactoryImplPeer::IsJobControllerDeleted(factory_));
}
+// Test we do not create alternative job when the advertised versions in
Ryan Hamilton 2017/06/30 02:45:11 nit: avoid first person. "Test that the controller
Zhongyi Shi 2017/06/30 21:08:43 Done.
+// AlternativeServiceInfo do not contain any version supported by the net
+// stack.
+TEST_F(HttpStreamFactoryImplJobControllerTest,
+ DoNotCreateAltJobIfQuicVersionsUnsupported) {
+ tcp_data_ = base::MakeUnique<SequencedSocketData>(nullptr, 0, nullptr, 0);
+ tcp_data_->set_connect_data(MockConnect(ASYNC, OK));
+ HttpRequestInfo request_info;
+ request_info.method = "GET";
+ request_info.url = GURL("https://www.google.com");
+
+ Initialize(request_info);
+ url::SchemeHostPort server(request_info.url);
+ AlternativeService alternative_service(kProtoQUIC, server.host(), 443);
+ base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
+ session_->http_server_properties()->SetQuicAlternativeService(
+ server, alternative_service, expiration, {QUIC_VERSION_UNSUPPORTED});
+
+ request_ =
+ job_controller_->Start(&request_delegate_, nullptr, net_log_.bound(),
+ HttpStreamRequest::HTTP_STREAM, DEFAULT_PRIORITY);
+ EXPECT_TRUE(job_controller_->main_job());
+ EXPECT_FALSE(job_controller_->alternative_job());
+
+ request_.reset();
+ VerifyBrokenAlternateProtocolMapping(request_info, false);
+ EXPECT_TRUE(HttpStreamFactoryImplPeer::IsJobControllerDeleted(factory_));
+}
+
TEST_F(HttpStreamFactoryImplJobControllerTest, OnStreamFailedForBothJobs) {
quic_data_ = base::MakeUnique<MockQuicData>();
quic_data_->AddConnect(ASYNC, ERR_FAILED);
@@ -2086,7 +2115,8 @@ TEST_P(HttpStreamFactoryImplJobControllerPreconnectTest,
}
// Test that GetAlternativeServiceInfoFor will include a list of advertised
-// versions. Returns an empty list if advertised versions are missing in
+// versions, which contains a version that is supported by the net stack.
+// Returns an empty list if advertised versions are missing in
// HttpServerProperties.
TEST_F(HttpStreamFactoryImplJobControllerTest, GetAlternativeServiceInfoFor) {
HttpRequestInfo request_info;
@@ -2110,22 +2140,25 @@ TEST_F(HttpStreamFactoryImplJobControllerTest, GetAlternativeServiceInfoFor) {
// Verify that JobController get an empty list of supported QUIC versions.
EXPECT_TRUE(alt_svc_info.advertised_versions().empty());
- // Set alternative service for the same server with QUIC_VERSION_39 specified.
+ // Set alternative service for the same server with the same list of versions
+ // that is supported by the net stack.
+ QuicVersionVector supported_versions =
+ session_->params().quic_supported_versions;
ASSERT_TRUE(session_->http_server_properties()->SetQuicAlternativeService(
- server, alternative_service, expiration, {QUIC_VERSION_39}));
+ server, alternative_service, expiration, supported_versions));
alt_svc_info = JobControllerPeer::GetAlternativeServiceInfoFor(
job_controller_, request_info, &request_delegate_,
HttpStreamRequest::HTTP_STREAM);
- EXPECT_EQ(1u, alt_svc_info.advertised_versions().size());
- // Verify that JobController returns the single version specified in set.
- EXPECT_EQ(QUIC_VERSION_39, alt_svc_info.advertised_versions()[0]);
+ std::sort(supported_versions.begin(), supported_versions.end());
+ EXPECT_EQ(supported_versions, alt_svc_info.advertised_versions());
// Set alternative service for the same server with two QUIC versions:
- // QUIC_VERSION_35, QUIC_VERSION_39.
+ // - one unsupported version: QUIC_VERSION_35,
+ // - one supported version: session_->params().quic_supported_versions[0].
ASSERT_TRUE(session_->http_server_properties()->SetQuicAlternativeService(
server, alternative_service, expiration,
- {QUIC_VERSION_35, QUIC_VERSION_39}));
+ {QUIC_VERSION_35, session_->params().quic_supported_versions[0]}));
alt_svc_info = JobControllerPeer::GetAlternativeServiceInfoFor(
job_controller_, request_info, &request_delegate_,
@@ -2133,7 +2166,21 @@ TEST_F(HttpStreamFactoryImplJobControllerTest, GetAlternativeServiceInfoFor) {
EXPECT_EQ(2u, alt_svc_info.advertised_versions().size());
// Verify that JobController returns the list of versions specified in set.
EXPECT_EQ(QUIC_VERSION_35, alt_svc_info.advertised_versions()[0]);
- EXPECT_EQ(QUIC_VERSION_39, alt_svc_info.advertised_versions()[1]);
+ EXPECT_EQ(session_->params().quic_supported_versions[0],
+ alt_svc_info.advertised_versions()[1]);
+
+ // Set alternative service for the same server with two unsupported QUIC
+ // versions: QUIC_VERSION_35, QUIC_VERSION_36.
+ ASSERT_TRUE(session_->http_server_properties()->SetQuicAlternativeService(
+ server, alternative_service, expiration,
+ {QUIC_VERSION_35, QUIC_VERSION_36}));
+
+ alt_svc_info = JobControllerPeer::GetAlternativeServiceInfoFor(
+ job_controller_, request_info, &request_delegate_,
+ HttpStreamRequest::HTTP_STREAM);
+ // Verify that JobController returns no valid alternative service.
+ EXPECT_EQ(kProtoUnknown, alt_svc_info.alternative_service().protocol);
+ EXPECT_EQ(0u, alt_svc_info.advertised_versions().size());
}
} // namespace test

Powered by Google App Engine
This is Rietveld 408576698