| 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) {
|
|
|