Chromium Code Reviews| 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 <ostream> | 7 #include <ostream> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 43 #include "net/ssl/default_channel_id_store.h" | 43 #include "net/ssl/default_channel_id_store.h" |
| 44 #include "net/test/cert_test_util.h" | 44 #include "net/test/cert_test_util.h" |
| 45 #include "net/test/test_data_directory.h" | 45 #include "net/test/test_data_directory.h" |
| 46 #include "testing/gtest/include/gtest/gtest.h" | 46 #include "testing/gtest/include/gtest/gtest.h" |
| 47 | 47 |
| 48 using std::string; | 48 using std::string; |
| 49 using std::vector; | 49 using std::vector; |
| 50 | 50 |
| 51 namespace net { | 51 namespace net { |
| 52 | 52 |
| 53 namespace { | |
| 54 | |
| 55 class MockSSLConfigService : public SSLConfigService { | |
| 56 public: | |
| 57 MockSSLConfigService() {} | |
| 58 | |
| 59 void GetSSLConfig(SSLConfig* config) override { *config = config_; } | |
| 60 | |
| 61 private: | |
| 62 ~MockSSLConfigService() override {} | |
| 63 | |
| 64 SSLConfig config_; | |
| 65 }; | |
| 66 | |
| 67 } // namespace | |
| 68 | |
| 53 namespace test { | 69 namespace test { |
| 54 | 70 |
| 55 namespace { | 71 namespace { |
| 56 | 72 |
| 57 enum DestinationType { | 73 enum DestinationType { |
| 58 // In pooling tests with two requests for different origins to the same | 74 // In pooling tests with two requests for different origins to the same |
| 59 // destination, the destination should be | 75 // destination, the destination should be |
| 60 SAME_AS_FIRST, // the same as the first origin, | 76 SAME_AS_FIRST, // the same as the first origin, |
| 61 SAME_AS_SECOND, // the same as the second origin, or | 77 SAME_AS_SECOND, // the same as the second origin, or |
| 62 DIFFERENT, // different from both. | 78 DIFFERENT, // different from both. |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 245 | 261 |
| 246 private: | 262 private: |
| 247 std::unique_ptr<NetworkChangeNotifier::DisableForTest> | 263 std::unique_ptr<NetworkChangeNotifier::DisableForTest> |
| 248 disable_network_change_notifier_for_tests_; | 264 disable_network_change_notifier_for_tests_; |
| 249 std::unique_ptr<MockNetworkChangeNotifier> mock_network_change_notifier_; | 265 std::unique_ptr<MockNetworkChangeNotifier> mock_network_change_notifier_; |
| 250 }; | 266 }; |
| 251 | 267 |
| 252 class QuicStreamFactoryTestBase { | 268 class QuicStreamFactoryTestBase { |
| 253 protected: | 269 protected: |
| 254 QuicStreamFactoryTestBase(QuicVersion version, bool enable_connection_racing) | 270 QuicStreamFactoryTestBase(QuicVersion version, bool enable_connection_racing) |
| 255 : random_generator_(0), | 271 : ssl_config_service_(new MockSSLConfigService), |
| 272 random_generator_(0), | |
| 256 clock_(new MockClock()), | 273 clock_(new MockClock()), |
| 257 runner_(new TestTaskRunner(clock_)), | 274 runner_(new TestTaskRunner(clock_)), |
| 258 version_(version), | 275 version_(version), |
| 259 client_maker_(version_, | 276 client_maker_(version_, |
| 260 0, | 277 0, |
| 261 clock_, | 278 clock_, |
| 262 kDefaultServerHostName, | 279 kDefaultServerHostName, |
| 263 Perspective::IS_CLIENT), | 280 Perspective::IS_CLIENT), |
| 264 server_maker_(version_, | 281 server_maker_(version_, |
| 265 0, | 282 0, |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 306 // If |factory_| was initialized, then it took over ownership of |clock_|. | 323 // If |factory_| was initialized, then it took over ownership of |clock_|. |
| 307 // If |factory_| was not initialized, then |clock_| needs to be destroyed. | 324 // If |factory_| was not initialized, then |clock_| needs to be destroyed. |
| 308 if (!factory_) { | 325 if (!factory_) { |
| 309 delete clock_; | 326 delete clock_; |
| 310 } | 327 } |
| 311 } | 328 } |
| 312 | 329 |
| 313 void Initialize() { | 330 void Initialize() { |
| 314 DCHECK(!factory_); | 331 DCHECK(!factory_); |
| 315 factory_.reset(new QuicStreamFactory( | 332 factory_.reset(new QuicStreamFactory( |
| 316 net_log_.net_log(), &host_resolver_, &socket_factory_, | 333 net_log_.net_log(), &host_resolver_, ssl_config_service_.get(), |
| 317 &http_server_properties_, cert_verifier_.get(), &ct_policy_enforcer_, | 334 &socket_factory_, &http_server_properties_, cert_verifier_.get(), |
| 318 channel_id_service_.get(), &transport_security_state_, | 335 &ct_policy_enforcer_, channel_id_service_.get(), |
| 319 cert_transparency_verifier_.get(), | 336 &transport_security_state_, cert_transparency_verifier_.get(), |
| 320 /*SocketPerformanceWatcherFactory*/ nullptr, | 337 /*SocketPerformanceWatcherFactory*/ nullptr, |
| 321 &crypto_client_stream_factory_, &random_generator_, clock_, | 338 &crypto_client_stream_factory_, &random_generator_, clock_, |
| 322 kDefaultMaxPacketSize, string(), SupportedVersions(version_), | 339 kDefaultMaxPacketSize, string(), SupportedVersions(version_), |
| 323 enable_port_selection_, always_require_handshake_confirmation_, | 340 enable_port_selection_, always_require_handshake_confirmation_, |
| 324 disable_connection_pooling_, load_server_info_timeout_srtt_multiplier_, | 341 disable_connection_pooling_, load_server_info_timeout_srtt_multiplier_, |
| 325 enable_connection_racing_, enable_non_blocking_io_, disable_disk_cache_, | 342 enable_connection_racing_, enable_non_blocking_io_, disable_disk_cache_, |
| 326 prefer_aes_, max_number_of_lossy_connections_, packet_loss_threshold_, | 343 prefer_aes_, max_number_of_lossy_connections_, packet_loss_threshold_, |
| 327 max_disabled_reasons_, threshold_timeouts_with_open_streams_, | 344 max_disabled_reasons_, threshold_timeouts_with_open_streams_, |
| 328 threshold_public_resets_post_handshake_, receive_buffer_size_, | 345 threshold_public_resets_post_handshake_, receive_buffer_size_, |
| 329 delay_tcp_race_, /*max_server_configs_stored_in_properties*/ 0, | 346 delay_tcp_race_, /*max_server_configs_stored_in_properties*/ 0, |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 467 bool should_include_version, | 484 bool should_include_version, |
| 468 bool fin) { | 485 bool fin) { |
| 469 SpdyHeaderBlock headers = server_maker_.GetResponseHeaders("200 OK"); | 486 SpdyHeaderBlock headers = server_maker_.GetResponseHeaders("200 OK"); |
| 470 size_t spdy_headers_frame_len; | 487 size_t spdy_headers_frame_len; |
| 471 return server_maker_.MakeResponseHeadersPacket( | 488 return server_maker_.MakeResponseHeadersPacket( |
| 472 packet_number, stream_id, should_include_version, fin, | 489 packet_number, stream_id, should_include_version, fin, |
| 473 std::move(headers), &spdy_headers_frame_len); | 490 std::move(headers), &spdy_headers_frame_len); |
| 474 } | 491 } |
| 475 | 492 |
| 476 MockHostResolver host_resolver_; | 493 MockHostResolver host_resolver_; |
| 494 scoped_refptr<SSLConfigService> ssl_config_service_; | |
| 477 MockClientSocketFactory socket_factory_; | 495 MockClientSocketFactory socket_factory_; |
| 478 MockCryptoClientStreamFactory crypto_client_stream_factory_; | 496 MockCryptoClientStreamFactory crypto_client_stream_factory_; |
| 479 MockRandom random_generator_; | 497 MockRandom random_generator_; |
| 480 MockClock* clock_; // Owned by |factory_| once created. | 498 MockClock* clock_; // Owned by |factory_| once created. |
| 481 scoped_refptr<TestTaskRunner> runner_; | 499 scoped_refptr<TestTaskRunner> runner_; |
| 482 QuicVersion version_; | 500 QuicVersion version_; |
| 483 QuicTestPacketMaker client_maker_; | 501 QuicTestPacketMaker client_maker_; |
| 484 QuicTestPacketMaker server_maker_; | 502 QuicTestPacketMaker server_maker_; |
| 485 HttpServerPropertiesImpl http_server_properties_; | 503 HttpServerPropertiesImpl http_server_properties_; |
| 486 std::unique_ptr<CertVerifier> cert_verifier_; | 504 std::unique_ptr<CertVerifier> cert_verifier_; |
| (...skipping 1908 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2395 request.Request(host_port_pair_, privacy_mode_, | 2413 request.Request(host_port_pair_, privacy_mode_, |
| 2396 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2414 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
| 2397 callback_.callback())); | 2415 callback_.callback())); |
| 2398 | 2416 |
| 2399 EXPECT_EQ(OK, callback_.WaitForResult()); | 2417 EXPECT_EQ(OK, callback_.WaitForResult()); |
| 2400 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2418 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
| 2401 HttpRequestInfo request_info; | 2419 HttpRequestInfo request_info; |
| 2402 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2420 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
| 2403 net_log_, CompletionCallback())); | 2421 net_log_, CompletionCallback())); |
| 2404 | 2422 |
| 2405 factory_->OnSSLConfigChanged(); | 2423 ssl_config_service_->NotifySSLConfigChange(); |
|
Ryan Hamilton
2016/06/29 23:16:15
Well, that was easy!
| |
| 2406 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, | 2424 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, |
| 2407 stream->ReadResponseHeaders(callback_.callback())); | 2425 stream->ReadResponseHeaders(callback_.callback())); |
| 2408 EXPECT_FALSE(factory_->require_confirmation()); | 2426 EXPECT_FALSE(factory_->require_confirmation()); |
| 2409 | 2427 |
| 2410 // Now attempting to request a stream to the same origin should create | 2428 // Now attempting to request a stream to the same origin should create |
| 2411 // a new session. | 2429 // a new session. |
| 2412 | 2430 |
| 2413 QuicStreamRequest request2(factory_.get()); | 2431 QuicStreamRequest request2(factory_.get()); |
| 2414 EXPECT_EQ(ERR_IO_PENDING, | 2432 EXPECT_EQ(ERR_IO_PENDING, |
| 2415 request2.Request(host_port_pair_, privacy_mode_, | 2433 request2.Request(host_port_pair_, privacy_mode_, |
| (...skipping 1915 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4331 EXPECT_NE(session1, session2); | 4349 EXPECT_NE(session1, session2); |
| 4332 | 4350 |
| 4333 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id()); | 4351 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id()); |
| 4334 EXPECT_EQ(QuicServerId(origin2_, privacy_mode_), session2->server_id()); | 4352 EXPECT_EQ(QuicServerId(origin2_, privacy_mode_), session2->server_id()); |
| 4335 | 4353 |
| 4336 EXPECT_TRUE(AllDataConsumed()); | 4354 EXPECT_TRUE(AllDataConsumed()); |
| 4337 } | 4355 } |
| 4338 | 4356 |
| 4339 } // namespace test | 4357 } // namespace test |
| 4340 } // namespace net | 4358 } // namespace net |
| OLD | NEW |