OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/quic/quic_stream_factory.h" | 5 #include "net/quic/quic_stream_factory.h" |
6 | 6 |
7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
9 #include "base/thread_task_runner_handle.h" | 9 #include "base/thread_task_runner_handle.h" |
10 #include "net/base/test_data_directory.h" | 10 #include "net/base/test_data_directory.h" |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 enable_non_blocking_io_(true), | 210 enable_non_blocking_io_(true), |
211 disable_disk_cache_(false), | 211 disable_disk_cache_(false), |
212 prefer_aes_(false), | 212 prefer_aes_(false), |
213 max_number_of_lossy_connections_(0), | 213 max_number_of_lossy_connections_(0), |
214 packet_loss_threshold_(1.0f), | 214 packet_loss_threshold_(1.0f), |
215 max_disabled_reasons_(3), | 215 max_disabled_reasons_(3), |
216 threshold_timeouts_with_open_streams_(2), | 216 threshold_timeouts_with_open_streams_(2), |
217 threshold_public_resets_post_handshake_(2), | 217 threshold_public_resets_post_handshake_(2), |
218 receive_buffer_size_(0), | 218 receive_buffer_size_(0), |
219 delay_tcp_race_(false), | 219 delay_tcp_race_(false), |
220 store_server_configs_in_properties_(false), | |
221 close_sessions_on_ip_change_(false), | 220 close_sessions_on_ip_change_(false), |
222 idle_connection_timeout_seconds_(kIdleConnectionTimeoutSeconds), | 221 idle_connection_timeout_seconds_(kIdleConnectionTimeoutSeconds), |
223 migrate_sessions_on_network_change_(false) { | 222 migrate_sessions_on_network_change_(false) { |
224 clock_->AdvanceTime(QuicTime::Delta::FromSeconds(1)); | 223 clock_->AdvanceTime(QuicTime::Delta::FromSeconds(1)); |
225 } | 224 } |
226 | 225 |
227 void Initialize() { | 226 void Initialize() { |
228 factory_.reset(new QuicStreamFactory( | 227 factory_.reset(new QuicStreamFactory( |
229 &host_resolver_, &socket_factory_, http_server_properties_.GetWeakPtr(), | 228 &host_resolver_, &socket_factory_, http_server_properties_.GetWeakPtr(), |
230 cert_verifier_.get(), nullptr, channel_id_service_.get(), | 229 cert_verifier_.get(), nullptr, channel_id_service_.get(), |
231 &transport_security_state_, cert_transparency_verifier_.get(), | 230 &transport_security_state_, cert_transparency_verifier_.get(), |
232 /*SocketPerformanceWatcherFactory*/ nullptr, | 231 /*SocketPerformanceWatcherFactory*/ nullptr, |
233 &crypto_client_stream_factory_, &random_generator_, clock_, | 232 &crypto_client_stream_factory_, &random_generator_, clock_, |
234 kDefaultMaxPacketSize, std::string(), | 233 kDefaultMaxPacketSize, std::string(), |
235 SupportedVersions(GetParam().version), enable_port_selection_, | 234 SupportedVersions(GetParam().version), enable_port_selection_, |
236 always_require_handshake_confirmation_, disable_connection_pooling_, | 235 always_require_handshake_confirmation_, disable_connection_pooling_, |
237 load_server_info_timeout_srtt_multiplier_, enable_connection_racing_, | 236 load_server_info_timeout_srtt_multiplier_, enable_connection_racing_, |
238 enable_non_blocking_io_, disable_disk_cache_, prefer_aes_, | 237 enable_non_blocking_io_, disable_disk_cache_, prefer_aes_, |
239 max_number_of_lossy_connections_, packet_loss_threshold_, | 238 max_number_of_lossy_connections_, packet_loss_threshold_, |
240 max_disabled_reasons_, threshold_timeouts_with_open_streams_, | 239 max_disabled_reasons_, threshold_timeouts_with_open_streams_, |
241 threshold_public_resets_post_handshake_, receive_buffer_size_, | 240 threshold_public_resets_post_handshake_, receive_buffer_size_, |
242 delay_tcp_race_, store_server_configs_in_properties_, | 241 delay_tcp_race_, /*max_server_configs_stored_in_properties*/ 0, |
243 close_sessions_on_ip_change_, idle_connection_timeout_seconds_, | 242 close_sessions_on_ip_change_, idle_connection_timeout_seconds_, |
244 migrate_sessions_on_network_change_, QuicTagVector())); | 243 migrate_sessions_on_network_change_, QuicTagVector())); |
245 factory_->set_require_confirmation(false); | 244 factory_->set_require_confirmation(false); |
| 245 EXPECT_FALSE(factory_->has_quic_server_info_factory()); |
246 factory_->set_quic_server_info_factory(new MockQuicServerInfoFactory()); | 246 factory_->set_quic_server_info_factory(new MockQuicServerInfoFactory()); |
| 247 EXPECT_TRUE(factory_->has_quic_server_info_factory()); |
247 } | 248 } |
248 | 249 |
249 void InitializeConnectionMigrationTest( | 250 void InitializeConnectionMigrationTest( |
250 NetworkChangeNotifier::NetworkList connected_networks) { | 251 NetworkChangeNotifier::NetworkList connected_networks) { |
251 scoped_mock_network_change_notifier_.reset( | 252 scoped_mock_network_change_notifier_.reset( |
252 new ScopedMockNetworkChangeNotifier()); | 253 new ScopedMockNetworkChangeNotifier()); |
253 MockNetworkChangeNotifier* mock_ncn = | 254 MockNetworkChangeNotifier* mock_ncn = |
254 scoped_mock_network_change_notifier_->mock_network_change_notifier(); | 255 scoped_mock_network_change_notifier_->mock_network_change_notifier(); |
255 mock_ncn->ForceNetworkHandlesSupported(); | 256 mock_ncn->ForceNetworkHandlesSupported(); |
256 mock_ncn->SetConnectedNetworksList(connected_networks); | 257 mock_ncn->SetConnectedNetworksList(connected_networks); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 bool enable_non_blocking_io_; | 405 bool enable_non_blocking_io_; |
405 bool disable_disk_cache_; | 406 bool disable_disk_cache_; |
406 bool prefer_aes_; | 407 bool prefer_aes_; |
407 int max_number_of_lossy_connections_; | 408 int max_number_of_lossy_connections_; |
408 double packet_loss_threshold_; | 409 double packet_loss_threshold_; |
409 int max_disabled_reasons_; | 410 int max_disabled_reasons_; |
410 int threshold_timeouts_with_open_streams_; | 411 int threshold_timeouts_with_open_streams_; |
411 int threshold_public_resets_post_handshake_; | 412 int threshold_public_resets_post_handshake_; |
412 int receive_buffer_size_; | 413 int receive_buffer_size_; |
413 bool delay_tcp_race_; | 414 bool delay_tcp_race_; |
414 bool store_server_configs_in_properties_; | |
415 bool close_sessions_on_ip_change_; | 415 bool close_sessions_on_ip_change_; |
416 int idle_connection_timeout_seconds_; | 416 int idle_connection_timeout_seconds_; |
417 bool migrate_sessions_on_network_change_; | 417 bool migrate_sessions_on_network_change_; |
418 }; | 418 }; |
419 | 419 |
420 INSTANTIATE_TEST_CASE_P(Version, | 420 INSTANTIATE_TEST_CASE_P(Version, |
421 QuicStreamFactoryTest, | 421 QuicStreamFactoryTest, |
422 ::testing::ValuesIn(GetTestParams())); | 422 ::testing::ValuesIn(GetTestParams())); |
423 | 423 |
424 TEST_P(QuicStreamFactoryTest, Create) { | 424 TEST_P(QuicStreamFactoryTest, Create) { |
(...skipping 2667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3092 EXPECT_EQ(OK, callback_.WaitForResult()); | 3092 EXPECT_EQ(OK, callback_.WaitForResult()); |
3093 | 3093 |
3094 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 3094 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
3095 EXPECT_TRUE(stream.get()); | 3095 EXPECT_TRUE(stream.get()); |
3096 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 3096 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
3097 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 3097 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
3098 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), delay_tcp_race); | 3098 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), delay_tcp_race); |
3099 } | 3099 } |
3100 | 3100 |
3101 TEST_P(QuicStreamFactoryTest, MaybeInitialize) { | 3101 TEST_P(QuicStreamFactoryTest, MaybeInitialize) { |
3102 store_server_configs_in_properties_ = true; | |
3103 idle_connection_timeout_seconds_ = 500; | 3102 idle_connection_timeout_seconds_ = 500; |
3104 Initialize(); | 3103 Initialize(); |
3105 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 3104 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
3106 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 3105 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
3107 const QuicConfig* config = QuicStreamFactoryPeer::GetConfig(factory_.get()); | 3106 const QuicConfig* config = QuicStreamFactoryPeer::GetConfig(factory_.get()); |
3108 EXPECT_EQ(500, config->IdleConnectionStateLifetime().ToSeconds()); | 3107 EXPECT_EQ(500, config->IdleConnectionStateLifetime().ToSeconds()); |
3109 | 3108 |
3110 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); | 3109 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); |
3111 | 3110 |
3112 const AlternativeService alternative_service1(QUIC, host_port_pair_.host(), | 3111 const AlternativeService alternative_service1(QUIC, host_port_pair_.host(), |
3113 host_port_pair_.port()); | 3112 host_port_pair_.port()); |
3114 AlternativeServiceInfoVector alternative_service_info_vector; | 3113 AlternativeServiceInfoVector alternative_service_info_vector; |
3115 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 3114 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
3116 alternative_service_info_vector.push_back( | 3115 alternative_service_info_vector.push_back( |
3117 AlternativeServiceInfo(alternative_service1, 1.0, expiration)); | 3116 AlternativeServiceInfo(alternative_service1, 1.0, expiration)); |
3118 | 3117 |
3119 http_server_properties_.SetAlternativeServices( | 3118 http_server_properties_.SetAlternativeServices( |
3120 host_port_pair_, alternative_service_info_vector); | 3119 host_port_pair_, alternative_service_info_vector); |
| 3120 http_server_properties_.SetMaxServerConfigsStoredInProperties( |
| 3121 kMaxQuicServersToPersist); |
3121 | 3122 |
3122 QuicServerId quic_server_id(kDefaultServerHostName, 80, | 3123 QuicServerId quic_server_id(kDefaultServerHostName, 80, |
3123 PRIVACY_MODE_DISABLED); | 3124 PRIVACY_MODE_DISABLED); |
3124 QuicServerInfoFactory* quic_server_info_factory = | 3125 QuicServerInfoFactory* quic_server_info_factory = |
3125 new PropertiesBasedQuicServerInfoFactory( | 3126 new PropertiesBasedQuicServerInfoFactory( |
3126 http_server_properties_.GetWeakPtr()); | 3127 http_server_properties_.GetWeakPtr()); |
3127 factory_->set_quic_server_info_factory(quic_server_info_factory); | 3128 factory_->set_quic_server_info_factory(quic_server_info_factory); |
3128 | 3129 |
3129 scoped_ptr<QuicServerInfo> quic_server_info( | 3130 scoped_ptr<QuicServerInfo> quic_server_info( |
3130 quic_server_info_factory->GetForServer(quic_server_id)); | 3131 quic_server_info_factory->GetForServer(quic_server_id)); |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3281 EXPECT_EQ(1u, observer.executed_count()); | 3282 EXPECT_EQ(1u, observer.executed_count()); |
3282 | 3283 |
3283 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 3284 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
3284 EXPECT_TRUE(stream.get()); | 3285 EXPECT_TRUE(stream.get()); |
3285 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 3286 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
3286 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 3287 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
3287 } | 3288 } |
3288 | 3289 |
3289 } // namespace test | 3290 } // namespace test |
3290 } // namespace net | 3291 } // namespace net |
OLD | NEW |