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

Unified Diff: net/quic/chromium/quic_stream_factory_test.cc

Issue 2820573004: Remove the code to store and load QUIC server configs in the disk cache. (Closed)
Patch Set: Fix Created 3 years, 8 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/quic/chromium/quic_stream_factory_peer.cc ('k') | net/url_request/url_request_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/chromium/quic_stream_factory_test.cc
diff --git a/net/quic/chromium/quic_stream_factory_test.cc b/net/quic/chromium/quic_stream_factory_test.cc
index f3acc6071646fb9a70f97d251a339d32cb641de3..877411d5300e9d28f7e75a3ef0c3b75a6a35226d 100644
--- a/net/quic/chromium/quic_stream_factory_test.cc
+++ b/net/quic/chromium/quic_stream_factory_test.cc
@@ -101,23 +101,18 @@ const char kServer4Url[] = "https://images.example.org/";
// and enable_connection_racting.
struct TestParams {
friend std::ostream& operator<<(std::ostream& os, const TestParams& p) {
- os << "{ version: " << QuicVersionToString(p.version)
- << ", enable_connection_racing: "
- << (p.enable_connection_racing ? "true" : "false") << " }";
+ os << "{ version: " << QuicVersionToString(p.version) << " }";
return os;
}
QuicVersion version;
- bool enable_connection_racing;
};
std::vector<TestParams> GetTestParams() {
std::vector<TestParams> params;
QuicVersionVector all_supported_versions = AllSupportedVersions();
- for (const QuicVersion version : all_supported_versions) {
- params.push_back(TestParams{version, false});
- params.push_back(TestParams{version, true});
- }
+ for (const auto& version : all_supported_versions)
+ params.push_back(TestParams{version});
return params;
}
@@ -127,8 +122,6 @@ struct PoolingTestParams {
friend std::ostream& operator<<(std::ostream& os,
const PoolingTestParams& p) {
os << "{ version: " << QuicVersionToString(p.version)
- << ", enable_connection_racing: "
- << (p.enable_connection_racing ? "true" : "false")
<< ", destination_type: ";
switch (p.destination_type) {
case SAME_AS_FIRST:
@@ -146,7 +139,6 @@ struct PoolingTestParams {
}
QuicVersion version;
- bool enable_connection_racing;
DestinationType destination_type;
};
@@ -154,12 +146,9 @@ std::vector<PoolingTestParams> GetPoolingTestParams() {
std::vector<PoolingTestParams> params;
QuicVersionVector all_supported_versions = AllSupportedVersions();
for (const QuicVersion version : all_supported_versions) {
- params.push_back(PoolingTestParams{version, false, SAME_AS_FIRST});
- params.push_back(PoolingTestParams{version, false, SAME_AS_SECOND});
- params.push_back(PoolingTestParams{version, false, DIFFERENT});
- params.push_back(PoolingTestParams{version, true, SAME_AS_FIRST});
- params.push_back(PoolingTestParams{version, true, SAME_AS_SECOND});
- params.push_back(PoolingTestParams{version, true, DIFFERENT});
+ params.push_back(PoolingTestParams{version, SAME_AS_FIRST});
+ params.push_back(PoolingTestParams{version, SAME_AS_SECOND});
+ params.push_back(PoolingTestParams{version, DIFFERENT});
}
return params;
}
@@ -173,50 +162,9 @@ class QuicHttpStreamPeer {
}
};
-class MockQuicServerInfo : public QuicServerInfo {
- public:
- explicit MockQuicServerInfo(const QuicServerId& server_id)
- : QuicServerInfo(server_id) {}
- ~MockQuicServerInfo() override {}
-
- void Start() override {}
-
- int WaitForDataReady(const CompletionCallback& callback) override {
- return ERR_IO_PENDING;
- }
-
- void ResetWaitForDataReadyCallback() override {}
-
- void CancelWaitForDataReadyCallback() override {}
-
- bool IsDataReady() override { return false; }
-
- bool IsReadyToPersist() override { return false; }
-
- void Persist() override {}
-
- void OnExternalCacheHit() override {}
-
- size_t EstimateMemoryUsage() const override {
- NOTREACHED();
- return 0;
- }
-};
-
-class MockQuicServerInfoFactory : public QuicServerInfoFactory {
- public:
- MockQuicServerInfoFactory() {}
- ~MockQuicServerInfoFactory() override {}
-
- std::unique_ptr<QuicServerInfo> GetForServer(
- const QuicServerId& server_id) override {
- return base::MakeUnique<MockQuicServerInfo>(server_id);
- }
-};
-
class QuicStreamFactoryTestBase {
protected:
- QuicStreamFactoryTestBase(QuicVersion version, bool enable_connection_racing)
+ explicit QuicStreamFactoryTestBase(QuicVersion version)
: ssl_config_service_(new MockSSLConfigService),
random_generator_(0),
runner_(new TestTaskRunner(&clock_)),
@@ -243,10 +191,8 @@ class QuicStreamFactoryTestBase {
url3_(kServer3Url),
url4_(kServer4Url),
privacy_mode_(PRIVACY_MODE_DISABLED),
- load_server_info_timeout_srtt_multiplier_(0.0f),
- enable_connection_racing_(enable_connection_racing),
enable_non_blocking_io_(true),
- disable_disk_cache_(false),
+ store_server_configs_in_properties_(false),
close_sessions_on_ip_change_(false),
idle_connection_timeout_seconds_(kIdleConnectionTimeoutSeconds),
reduced_ping_timeout_seconds_(kPingTimeoutSecs),
@@ -271,9 +217,7 @@ class QuicStreamFactoryTestBase {
/*SocketPerformanceWatcherFactory*/ nullptr,
&crypto_client_stream_factory_, &random_generator_, &clock_,
kDefaultMaxPacketSize, string(), SupportedVersions(version_),
- load_server_info_timeout_srtt_multiplier_, enable_connection_racing_,
- enable_non_blocking_io_, disable_disk_cache_,
- /*max_server_configs_stored_in_properties*/ 0,
+ enable_non_blocking_io_, store_server_configs_in_properties_,
close_sessions_on_ip_change_,
/*mark_quic_broken_when_network_blackholes*/ false,
idle_connection_timeout_seconds_, reduced_ping_timeout_seconds_,
@@ -283,9 +227,6 @@ class QuicStreamFactoryTestBase {
/*do_not_fragment*/ true, estimate_initial_rtt_, QuicTagVector(),
/*enable_token_binding*/ false));
factory_->set_require_confirmation(false);
- EXPECT_FALSE(factory_->has_quic_server_info_factory());
- factory_->set_quic_server_info_factory(new MockQuicServerInfoFactory());
- EXPECT_TRUE(factory_->has_quic_server_info_factory());
}
void InitializeConnectionMigrationTest(
@@ -541,10 +482,14 @@ class QuicStreamFactoryTestBase {
// a non proxy server that support alternative services is added to the
// HttpServerProperties map.
void VerifyInitialization(bool proxy_delegate_provides_quic_supported_proxy) {
+ store_server_configs_in_properties_ = true;
idle_connection_timeout_seconds_ = 500;
Initialize();
ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
+ crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
+ crypto_client_stream_factory_.set_handshake_mode(
+ MockCryptoClientStream::ZERO_RTT);
const QuicConfig* config = QuicStreamFactoryPeer::GetConfig(factory_.get());
EXPECT_EQ(500, config->IdleNetworkTimeout().ToSeconds());
@@ -584,14 +529,11 @@ class QuicStreamFactoryTestBase {
http_server_properties_.SetMaxServerConfigsStoredInProperties(
kMaxQuicServersToPersist);
- QuicServerId quic_server_id(kDefaultServerHostName, 80,
+ QuicServerId quic_server_id(kDefaultServerHostName, 443,
PRIVACY_MODE_DISABLED);
- QuicServerInfoFactory* quic_server_info_factory =
- new PropertiesBasedQuicServerInfoFactory(&http_server_properties_);
- factory_->set_quic_server_info_factory(quic_server_info_factory);
-
- std::unique_ptr<QuicServerInfo> quic_server_info(
- quic_server_info_factory->GetForServer(quic_server_id));
+ std::unique_ptr<QuicServerInfo> quic_server_info =
+ base::MakeUnique<PropertiesBasedQuicServerInfo>(
+ quic_server_id, &http_server_properties_);
// Update quic_server_info's server_config and persist it.
QuicServerInfo::State* state = quic_server_info->mutable_state();
@@ -627,10 +569,10 @@ class QuicStreamFactoryTestBase {
quic_server_info->Persist();
- QuicServerId quic_server_id2(kServer2HostName, 80, PRIVACY_MODE_DISABLED);
- std::unique_ptr<QuicServerInfo> quic_server_info2(
- quic_server_info_factory->GetForServer(quic_server_id2));
-
+ QuicServerId quic_server_id2(kServer2HostName, 443, PRIVACY_MODE_DISABLED);
+ std::unique_ptr<QuicServerInfo> quic_server_info2 =
+ base::MakeUnique<PropertiesBasedQuicServerInfo>(
+ quic_server_id2, &http_server_properties_);
// Update quic_server_info2's server_config and persist it.
QuicServerInfo::State* state2 = quic_server_info2->mutable_state();
@@ -667,9 +609,6 @@ class QuicStreamFactoryTestBase {
quic_server_info2->Persist();
- QuicStreamFactoryPeer::MaybeInitialize(factory_.get());
- EXPECT_TRUE(QuicStreamFactoryPeer::HasInitializedData(factory_.get()));
-
// Verify the MRU order is maintained.
const QuicServerInfoMap& quic_server_info_map =
http_server_properties_.quic_server_info_map();
@@ -680,8 +619,21 @@ class QuicStreamFactoryTestBase {
++quic_server_info_map_it;
EXPECT_EQ(quic_server_info_map_it->first, quic_server_id);
- EXPECT_TRUE(QuicStreamFactoryPeer::SupportsQuicAtStartUp(factory_.get(),
- host_port_pair_));
+ host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
+ "192.168.0.1", "");
+
+ // Create a session and verify that the cached state is loaded.
+ MockQuicData socket_data;
+ socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
+ socket_data.AddSocketDataToFactory(&socket_factory_);
+
+ QuicStreamRequest request(factory_.get(), &http_server_properties_);
+ EXPECT_EQ(ERR_IO_PENDING,
+ request.Request(quic_server_id.host_port_pair(), privacy_mode_,
+ /*cert_verify_flags=*/0, url_, "GET", net_log_,
+ callback_.callback()));
+ EXPECT_THAT(callback_.WaitForResult(), IsOk());
+
EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty(
factory_.get(), quic_server_id));
QuicCryptoClientConfig* crypto_config =
@@ -698,8 +650,24 @@ class QuicStreamFactoryTestBase {
ASSERT_EQ(1U, cached->certs().size());
EXPECT_EQ(test_cert, cached->certs()[0]);
- EXPECT_TRUE(QuicStreamFactoryPeer::SupportsQuicAtStartUp(factory_.get(),
- host_port_pair2));
+ EXPECT_TRUE(socket_data.AllWriteDataConsumed());
+
+ // Create a session and verify that the cached state is loaded.
+ MockQuicData socket_data2;
+ socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
+ socket_data2.AddSocketDataToFactory(&socket_factory_);
+
+ host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
+ "192.168.0.2", "");
+
+ QuicStreamRequest request2(factory_.get(), &http_server_properties_);
+ EXPECT_EQ(ERR_IO_PENDING,
+ request2.Request(quic_server_id2.host_port_pair(), privacy_mode_,
+ /*cert_verify_flags=*/0,
+ GURL("https://mail.example.org/"), "GET",
+ net_log_, callback_.callback()));
+ EXPECT_THAT(callback_.WaitForResult(), IsOk());
+
EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty(
factory_.get(), quic_server_id2));
QuicCryptoClientConfig::CachedState* cached2 =
@@ -769,10 +737,8 @@ class QuicStreamFactoryTestBase {
TestCompletionCallback callback_;
// Variables to configure QuicStreamFactory.
- double load_server_info_timeout_srtt_multiplier_;
- bool enable_connection_racing_;
bool enable_non_blocking_io_;
- bool disable_disk_cache_;
+ bool store_server_configs_in_properties_;
bool close_sessions_on_ip_change_;
int idle_connection_timeout_seconds_;
int reduced_ping_timeout_seconds_;
@@ -788,9 +754,7 @@ class QuicStreamFactoryTestBase {
class QuicStreamFactoryTest : public QuicStreamFactoryTestBase,
public ::testing::TestWithParam<TestParams> {
protected:
- QuicStreamFactoryTest()
- : QuicStreamFactoryTestBase(GetParam().version,
- GetParam().enable_connection_racing) {}
+ QuicStreamFactoryTest() : QuicStreamFactoryTestBase(GetParam().version) {}
};
INSTANTIATE_TEST_CASE_P(Version,
@@ -4417,62 +4381,7 @@ TEST_P(QuicStreamFactoryTest, CryptoConfigWhenProofIsInvalid) {
}
}
-TEST_P(QuicStreamFactoryTest, RacingConnections) {
- disable_disk_cache_ = false;
- Initialize();
- ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
- crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
-
- if (!enable_connection_racing_)
- return;
-
- QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
-
- MockQuicData socket_data;
- socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
- socket_data.AddSocketDataToFactory(&socket_factory_);
-
- MockQuicData socket_data2;
- socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
- socket_data2.AddSocketDataToFactory(&socket_factory_);
-
- const AlternativeService alternative_service1(
- kProtoQUIC, host_port_pair_.host(), host_port_pair_.port());
- AlternativeServiceInfoVector alternative_service_info_vector;
- base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
- alternative_service_info_vector.push_back(
- AlternativeServiceInfo(alternative_service1, expiration));
-
- http_server_properties_.SetAlternativeServices(
- url::SchemeHostPort(url_), alternative_service_info_vector);
-
- crypto_client_stream_factory_.set_handshake_mode(
- MockCryptoClientStream::ZERO_RTT);
- host_resolver_.set_synchronous_mode(true);
- host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
- "192.168.0.1", "");
-
- QuicStreamRequest request(factory_.get(), &http_server_properties_);
- QuicServerId server_id(host_port_pair_, privacy_mode_);
- EXPECT_EQ(ERR_IO_PENDING,
- request.Request(host_port_pair_, privacy_mode_,
- /*cert_verify_flags=*/0, url_, "GET", net_log_,
- callback_.callback()));
- EXPECT_EQ(2u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(),
- server_id));
-
- runner_->RunNextTask();
-
- std::unique_ptr<QuicHttpStream> stream = request.CreateStream();
- EXPECT_TRUE(stream.get());
- EXPECT_TRUE(socket_data.AllReadDataConsumed());
- EXPECT_TRUE(socket_data.AllWriteDataConsumed());
- EXPECT_EQ(0u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(),
- server_id));
-}
-
TEST_P(QuicStreamFactoryTest, EnableNotLoadFromDiskCache) {
- disable_disk_cache_ = true;
Initialize();
ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
@@ -4506,7 +4415,6 @@ TEST_P(QuicStreamFactoryTest, EnableNotLoadFromDiskCache) {
TEST_P(QuicStreamFactoryTest, ReducePingTimeoutOnConnectionTimeOutOpenStreams) {
reduced_ping_timeout_seconds_ = 10;
- disable_disk_cache_ = true;
Initialize();
ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
@@ -4598,50 +4506,6 @@ TEST_P(QuicStreamFactoryTest, ReducePingTimeoutOnConnectionTimeOutOpenStreams) {
EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
}
-TEST_P(QuicStreamFactoryTest, DelayTcpRace) {
- Initialize();
- ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
- crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
- MockQuicData socket_data;
- socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
- socket_data.AddWrite(
- ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE,
- kDefaultMaxUncompressedHeaderSize, nullptr));
- socket_data.AddSocketDataToFactory(&socket_factory_);
-
- ServerNetworkStats stats1;
- stats1.srtt = base::TimeDelta::FromMicroseconds(10);
- http_server_properties_.SetServerNetworkStats(url::SchemeHostPort(url_),
- stats1);
-
- crypto_client_stream_factory_.set_handshake_mode(
- MockCryptoClientStream::COLD_START);
- host_resolver_.set_synchronous_mode(true);
- host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
- "192.168.0.1", "");
-
- QuicStreamRequest request(factory_.get(), &http_server_properties_);
- EXPECT_EQ(ERR_IO_PENDING,
- request.Request(host_port_pair_, privacy_mode_,
- /*cert_verify_flags=*/0, url_, "POST", net_log_,
- callback_.callback()));
-
- // Verify delay is one RTT and that server supports QUIC.
- EXPECT_EQ(base::TimeDelta::FromMicroseconds(15),
- request.GetTimeDelayForWaitingJob());
-
- // Confirm the handshake and verify that the stream is created.
- crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
- QuicSession::HANDSHAKE_CONFIRMED);
-
- EXPECT_THAT(callback_.WaitForResult(), IsOk());
-
- std::unique_ptr<QuicHttpStream> stream = request.CreateStream();
- EXPECT_TRUE(stream.get());
- EXPECT_TRUE(socket_data.AllReadDataConsumed());
- EXPECT_TRUE(socket_data.AllWriteDataConsumed());
-}
-
// Verifies that the QUIC stream factory is initialized correctly.
TEST_P(QuicStreamFactoryTest, MaybeInitialize) {
VerifyInitialization(false);
@@ -4993,8 +4857,7 @@ class QuicStreamFactoryWithDestinationTest
public ::testing::TestWithParam<PoolingTestParams> {
protected:
QuicStreamFactoryWithDestinationTest()
- : QuicStreamFactoryTestBase(GetParam().version,
- GetParam().enable_connection_racing),
+ : QuicStreamFactoryTestBase(GetParam().version),
destination_type_(GetParam().destination_type),
hanging_read_(SYNCHRONOUS, ERR_IO_PENDING, 0) {}
« no previous file with comments | « net/quic/chromium/quic_stream_factory_peer.cc ('k') | net/url_request/url_request_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698