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

Unified Diff: net/quic/quic_stream_factory_test.cc

Issue 1866613002: QUIC - Android - Fix the bug in QuicServerInfoMap iteration when server (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix comments for PatchSet 1 Created 4 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/quic_stream_factory.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_stream_factory_test.cc
diff --git a/net/quic/quic_stream_factory_test.cc b/net/quic/quic_stream_factory_test.cc
index 3651bf6c7baf3eed9098952fcdd3fc233465d17b..e6fffabfbedc27b8d777b751c85a10c71b74431a 100644
--- a/net/quic/quic_stream_factory_test.cc
+++ b/net/quic/quic_stream_factory_test.cc
@@ -3801,6 +3801,16 @@ TEST_P(QuicStreamFactoryTest, MaybeInitialize) {
http_server_properties_.SetAlternativeServices(
host_port_pair_, alternative_service_info_vector);
+
+ HostPortPair host_port_pair2(kServer2HostName, kDefaultServerPort);
+ const AlternativeService alternative_service2(QUIC, host_port_pair2.host(),
+ host_port_pair2.port());
+ AlternativeServiceInfoVector alternative_service_info_vector2;
+ alternative_service_info_vector2.push_back(
+ AlternativeServiceInfo(alternative_service2, expiration));
+ http_server_properties_.SetAlternativeServices(
+ host_port_pair2, alternative_service_info_vector2);
+
http_server_properties_.SetMaxServerConfigsStoredInProperties(
kMaxQuicServersToPersist);
@@ -3848,8 +3858,58 @@ TEST_P(QuicStreamFactoryTest, MaybeInitialize) {
quic_server_info->Persist();
+ QuicServerId quic_server_id2(kServer2HostName, 80, PRIVACY_MODE_DISABLED);
+ scoped_ptr<QuicServerInfo> quic_server_info2(
+ quic_server_info_factory->GetForServer(quic_server_id2));
+
+ // Update quic_server_info2's server_config and persist it.
+ QuicServerInfo::State* state2 = quic_server_info2->mutable_state();
+
+ // Minimum SCFG that passes config validation checks.
+ const char scfg2[] = {// SCFG
+ 0x53, 0x43, 0x46, 0x47,
+ // num entries
+ 0x01, 0x00,
+ // padding
+ 0x00, 0x00,
+ // EXPY
+ 0x45, 0x58, 0x50, 0x59,
+ // EXPY end offset
+ 0x08, 0x00, 0x00, 0x00,
+ // Value
+ '8', '7', '3', '4', '5', '6', '2', '1'};
+
+ // Create temporary strings becasue Persist() clears string data in |state2|.
+ string server_config2(reinterpret_cast<const char*>(&scfg2), sizeof(scfg2));
+ string source_address_token2("test_source_address_token2");
+ string cert_sct2("test_cert_sct2");
+ string chlo_hash2("test_chlo_hash2");
+ string signature2("test_signature2");
+ string test_cert2("test_cert2");
+ vector<string> certs2;
+ certs2.push_back(test_cert2);
+ state2->server_config = server_config2;
+ state2->source_address_token = source_address_token2;
+ state2->cert_sct = cert_sct2;
+ state2->chlo_hash = chlo_hash2;
+ state2->server_config_sig = signature2;
+ state2->certs = certs2;
+
+ 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();
+ EXPECT_EQ(2u, quic_server_info_map.size());
+ QuicServerInfoMap::const_iterator quic_server_info_map_it =
+ quic_server_info_map.begin();
+ EXPECT_EQ(quic_server_info_map_it->first, quic_server_id2);
+ ++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_));
EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty(factory_.get(),
@@ -3867,6 +3927,22 @@ TEST_P(QuicStreamFactoryTest, MaybeInitialize) {
EXPECT_EQ(signature, cached->signature());
ASSERT_EQ(1U, cached->certs().size());
EXPECT_EQ(test_cert, cached->certs()[0]);
+
+ EXPECT_TRUE(QuicStreamFactoryPeer::SupportsQuicAtStartUp(factory_.get(),
+ host_port_pair2));
+ EXPECT_FALSE(QuicStreamFactoryPeer::CryptoConfigCacheIsEmpty(
+ factory_.get(), quic_server_id2));
+ QuicCryptoClientConfig::CachedState* cached2 =
+ crypto_config->LookupOrCreate(quic_server_id2);
+ EXPECT_FALSE(cached2->server_config().empty());
+ EXPECT_TRUE(cached2->GetServerConfig());
+ EXPECT_EQ(server_config2, cached2->server_config());
+ EXPECT_EQ(source_address_token2, cached2->source_address_token());
+ EXPECT_EQ(cert_sct2, cached2->cert_sct());
+ EXPECT_EQ(chlo_hash2, cached2->chlo_hash());
+ EXPECT_EQ(signature2, cached2->signature());
+ ASSERT_EQ(1U, cached->certs().size());
+ EXPECT_EQ(test_cert2, cached2->certs()[0]);
}
TEST_P(QuicStreamFactoryTest, QuicDoingZeroRTT) {
« no previous file with comments | « net/quic/quic_stream_factory.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698