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

Side by Side Diff: net/quic/quic_stream_factory_test.cc

Issue 1692253004: QUIC - chromium server push support. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review feedback round 1 Created 4 years, 10 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 unified diff | Download patch
OLDNEW
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"
11 #include "net/cert/cert_verifier.h" 11 #include "net/cert/cert_verifier.h"
12 #include "net/cert/multi_log_ct_verifier.h" 12 #include "net/cert/multi_log_ct_verifier.h"
13 #include "net/dns/mock_host_resolver.h" 13 #include "net/dns/mock_host_resolver.h"
14 #include "net/http/http_response_headers.h" 14 #include "net/http/http_response_headers.h"
15 #include "net/http/http_response_info.h" 15 #include "net/http/http_response_info.h"
16 #include "net/http/http_server_properties_impl.h" 16 #include "net/http/http_server_properties_impl.h"
17 #include "net/http/http_util.h" 17 #include "net/http/http_util.h"
18 #include "net/http/transport_security_state.h" 18 #include "net/http/transport_security_state.h"
19 #include "net/quic/crypto/crypto_handshake.h" 19 #include "net/quic/crypto/crypto_handshake.h"
20 #include "net/quic/crypto/proof_verifier_chromium.h" 20 #include "net/quic/crypto/proof_verifier_chromium.h"
21 #include "net/quic/crypto/properties_based_quic_server_info.h" 21 #include "net/quic/crypto/properties_based_quic_server_info.h"
22 #include "net/quic/crypto/quic_crypto_client_config.h" 22 #include "net/quic/crypto/quic_crypto_client_config.h"
23 #include "net/quic/crypto/quic_decrypter.h" 23 #include "net/quic/crypto/quic_decrypter.h"
24 #include "net/quic/crypto/quic_encrypter.h" 24 #include "net/quic/crypto/quic_encrypter.h"
25 #include "net/quic/crypto/quic_server_info.h" 25 #include "net/quic/crypto/quic_server_info.h"
26 #include "net/quic/quic_client_promised_info.h"
26 #include "net/quic/quic_http_stream.h" 27 #include "net/quic/quic_http_stream.h"
27 #include "net/quic/quic_http_utils.h" 28 #include "net/quic/quic_http_utils.h"
28 #include "net/quic/quic_server_id.h" 29 #include "net/quic/quic_server_id.h"
29 #include "net/quic/test_tools/mock_clock.h" 30 #include "net/quic/test_tools/mock_clock.h"
30 #include "net/quic/test_tools/mock_crypto_client_stream_factory.h" 31 #include "net/quic/test_tools/mock_crypto_client_stream_factory.h"
31 #include "net/quic/test_tools/mock_random.h" 32 #include "net/quic/test_tools/mock_random.h"
32 #include "net/quic/test_tools/quic_stream_factory_peer.h" 33 #include "net/quic/test_tools/quic_stream_factory_peer.h"
33 #include "net/quic/test_tools/quic_test_packet_maker.h" 34 #include "net/quic/test_tools/quic_test_packet_maker.h"
34 #include "net/quic/test_tools/quic_test_utils.h" 35 #include "net/quic/test_tools/quic_test_utils.h"
35 #include "net/quic/test_tools/test_task_runner.h" 36 #include "net/quic/test_tools/test_task_runner.h"
(...skipping 13 matching lines...) Expand all
49 namespace net { 50 namespace net {
50 51
51 namespace test { 52 namespace test {
52 53
53 namespace { 54 namespace {
54 const char kDefaultServerHostName[] = "www.example.org"; 55 const char kDefaultServerHostName[] = "www.example.org";
55 const char kServer2HostName[] = "mail.example.org"; 56 const char kServer2HostName[] = "mail.example.org";
56 const char kServer3HostName[] = "docs.example.org"; 57 const char kServer3HostName[] = "docs.example.org";
57 const char kServer4HostName[] = "images.example.org"; 58 const char kServer4HostName[] = "images.example.org";
58 const int kDefaultServerPort = 443; 59 const int kDefaultServerPort = 443;
60 const char kDefaultUrl[] = "https://www.example.org/";
61 const char kServer2Url[] = "https://mail.example.org/";
62 const char kServer3Url[] = "https://docs.example.org/";
63 const char kServer4Url[] = "https://images.example.org/";
59 64
60 // Run all tests with all the combinations of versions and 65 // Run all tests with all the combinations of versions and
61 // enable_connection_racing. 66 // enable_connection_racing.
62 struct TestParams { 67 struct TestParams {
63 TestParams(const QuicVersion version, bool enable_connection_racing) 68 TestParams(const QuicVersion version, bool enable_connection_racing)
64 : version(version), enable_connection_racing(enable_connection_racing) {} 69 : version(version), enable_connection_racing(enable_connection_racing) {}
65 70
66 friend ostream& operator<<(ostream& os, const TestParams& p) { 71 friend ostream& operator<<(ostream& os, const TestParams& p) {
67 os << "{ version: " << QuicVersionToString(p.version); 72 os << "{ version: " << QuicVersionToString(p.version);
68 os << " enable_connection_racing: " << p.enable_connection_racing << " }"; 73 os << " enable_connection_racing: " << p.enable_connection_racing << " }";
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 runner_(new TestTaskRunner(clock_)), 199 runner_(new TestTaskRunner(clock_)),
195 maker_(GetParam().version, 0, clock_, kDefaultServerHostName), 200 maker_(GetParam().version, 0, clock_, kDefaultServerHostName),
196 cert_verifier_(CertVerifier::CreateDefault()), 201 cert_verifier_(CertVerifier::CreateDefault()),
197 channel_id_service_( 202 channel_id_service_(
198 new ChannelIDService(new DefaultChannelIDStore(nullptr), 203 new ChannelIDService(new DefaultChannelIDStore(nullptr),
199 base::ThreadTaskRunnerHandle::Get())), 204 base::ThreadTaskRunnerHandle::Get())),
200 cert_transparency_verifier_(new MultiLogCTVerifier()), 205 cert_transparency_verifier_(new MultiLogCTVerifier()),
201 scoped_mock_network_change_notifier_(nullptr), 206 scoped_mock_network_change_notifier_(nullptr),
202 factory_(nullptr), 207 factory_(nullptr),
203 host_port_pair_(kDefaultServerHostName, kDefaultServerPort), 208 host_port_pair_(kDefaultServerHostName, kDefaultServerPort),
209 url_(kDefaultUrl),
210 url2_(kServer2Url),
211 url3_(kServer3Url),
212 url4_(kServer4Url),
204 privacy_mode_(PRIVACY_MODE_DISABLED), 213 privacy_mode_(PRIVACY_MODE_DISABLED),
205 enable_port_selection_(true), 214 enable_port_selection_(true),
206 always_require_handshake_confirmation_(false), 215 always_require_handshake_confirmation_(false),
207 disable_connection_pooling_(false), 216 disable_connection_pooling_(false),
208 load_server_info_timeout_srtt_multiplier_(0.0f), 217 load_server_info_timeout_srtt_multiplier_(0.0f),
209 enable_connection_racing_(true), 218 enable_connection_racing_(true),
210 enable_non_blocking_io_(true), 219 enable_non_blocking_io_(true),
211 disable_disk_cache_(false), 220 disable_disk_cache_(false),
212 prefer_aes_(false), 221 prefer_aes_(false),
213 max_number_of_lossy_connections_(0), 222 max_number_of_lossy_connections_(0),
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 bool goaway_received) { 297 bool goaway_received) {
289 // Should only be called if there is no active session for this destination. 298 // Should only be called if there is no active session for this destination.
290 EXPECT_FALSE(HasActiveSession(destination)); 299 EXPECT_FALSE(HasActiveSession(destination));
291 size_t socket_count = socket_factory_.udp_client_socket_ports().size(); 300 size_t socket_count = socket_factory_.udp_client_socket_ports().size();
292 301
293 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 302 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
294 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 303 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
295 socket_factory_.AddSocketDataProvider(&socket_data); 304 socket_factory_.AddSocketDataProvider(&socket_data);
296 305
297 QuicStreamRequest request(factory_.get()); 306 QuicStreamRequest request(factory_.get());
307 GURL url("https://" + destination.host() + "/");
298 EXPECT_EQ(ERR_IO_PENDING, 308 EXPECT_EQ(ERR_IO_PENDING,
299 request.Request(destination, privacy_mode_, 309 request.Request(destination, privacy_mode_,
300 /*cert_verify_flags=*/0, destination.host(), 310 /*cert_verify_flags=*/0, url, "GET", net_log_,
301 "GET", net_log_, callback_.callback())); 311 callback_.callback()));
302 312
303 EXPECT_EQ(OK, callback_.WaitForResult()); 313 EXPECT_EQ(OK, callback_.WaitForResult());
304 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 314 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
305 EXPECT_TRUE(stream.get()); 315 EXPECT_TRUE(stream.get());
306 stream.reset(); 316 stream.reset();
307 317
308 QuicChromiumClientSession* session = 318 QuicChromiumClientSession* session =
309 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), destination); 319 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), destination);
310 320
311 if (socket_count + 1 != socket_factory_.udp_client_socket_ports().size()) { 321 if (socket_count + 1 != socket_factory_.udp_client_socket_ports().size()) {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 QuicTestPacketMaker maker_; 400 QuicTestPacketMaker maker_;
391 HttpServerPropertiesImpl http_server_properties_; 401 HttpServerPropertiesImpl http_server_properties_;
392 scoped_ptr<CertVerifier> cert_verifier_; 402 scoped_ptr<CertVerifier> cert_verifier_;
393 scoped_ptr<ChannelIDService> channel_id_service_; 403 scoped_ptr<ChannelIDService> channel_id_service_;
394 TransportSecurityState transport_security_state_; 404 TransportSecurityState transport_security_state_;
395 scoped_ptr<CTVerifier> cert_transparency_verifier_; 405 scoped_ptr<CTVerifier> cert_transparency_verifier_;
396 scoped_ptr<ScopedMockNetworkChangeNotifier> 406 scoped_ptr<ScopedMockNetworkChangeNotifier>
397 scoped_mock_network_change_notifier_; 407 scoped_mock_network_change_notifier_;
398 scoped_ptr<QuicStreamFactory> factory_; 408 scoped_ptr<QuicStreamFactory> factory_;
399 HostPortPair host_port_pair_; 409 HostPortPair host_port_pair_;
410 GURL url_;
411 GURL url2_;
412 GURL url3_;
413 GURL url4_;
414
400 PrivacyMode privacy_mode_; 415 PrivacyMode privacy_mode_;
401 BoundNetLog net_log_; 416 BoundNetLog net_log_;
402 TestCompletionCallback callback_; 417 TestCompletionCallback callback_;
403 418
404 // Variables to configure QuicStreamFactory. 419 // Variables to configure QuicStreamFactory.
405 bool enable_port_selection_; 420 bool enable_port_selection_;
406 bool always_require_handshake_confirmation_; 421 bool always_require_handshake_confirmation_;
407 bool disable_connection_pooling_; 422 bool disable_connection_pooling_;
408 double load_server_info_timeout_srtt_multiplier_; 423 double load_server_info_timeout_srtt_multiplier_;
409 bool enable_connection_racing_; 424 bool enable_connection_racing_;
(...skipping 23 matching lines...) Expand all
433 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 448 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
434 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 449 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
435 450
436 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 451 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
437 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 452 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
438 socket_factory_.AddSocketDataProvider(&socket_data); 453 socket_factory_.AddSocketDataProvider(&socket_data);
439 454
440 QuicStreamRequest request(factory_.get()); 455 QuicStreamRequest request(factory_.get());
441 EXPECT_EQ(ERR_IO_PENDING, 456 EXPECT_EQ(ERR_IO_PENDING,
442 request.Request(host_port_pair_, privacy_mode_, 457 request.Request(host_port_pair_, privacy_mode_,
443 /*cert_verify_flags=*/0, host_port_pair_.host(), 458 /*cert_verify_flags=*/0, url_, "GET", net_log_,
444 "GET", net_log_, callback_.callback())); 459 callback_.callback()));
445 460
446 EXPECT_EQ(OK, callback_.WaitForResult()); 461 EXPECT_EQ(OK, callback_.WaitForResult());
447 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 462 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
448 EXPECT_TRUE(stream.get()); 463 EXPECT_TRUE(stream.get());
449 464
450 // Will reset stream 3. 465 // Will reset stream 3.
451 stream = CreateFromSession(host_port_pair_); 466 stream = CreateFromSession(host_port_pair_);
452 EXPECT_TRUE(stream.get()); 467 EXPECT_TRUE(stream.get());
453 468
454 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result 469 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result
455 // in streams on different sessions. 470 // in streams on different sessions.
456 QuicStreamRequest request2(factory_.get()); 471 QuicStreamRequest request2(factory_.get());
457 EXPECT_EQ(OK, 472 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_,
458 request2.Request(host_port_pair_, privacy_mode_, 473 /*cert_verify_flags=*/0, url_, "GET", net_log_,
459 /*cert_verify_flags=*/0, host_port_pair_.host(), 474 callback_.callback()));
460 "GET", net_log_, callback_.callback()));
461 stream = request2.ReleaseStream(); // Will reset stream 5. 475 stream = request2.ReleaseStream(); // Will reset stream 5.
462 stream.reset(); // Will reset stream 7. 476 stream.reset(); // Will reset stream 7.
463 477
464 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 478 EXPECT_TRUE(socket_data.AllReadDataConsumed());
465 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 479 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
466 } 480 }
467 481
468 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) { 482 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) {
469 Initialize(); 483 Initialize();
470 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 484 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
471 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 485 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
472 486
473 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 487 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
474 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 488 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
475 socket_factory_.AddSocketDataProvider(&socket_data); 489 socket_factory_.AddSocketDataProvider(&socket_data);
476 490
477 crypto_client_stream_factory_.set_handshake_mode( 491 crypto_client_stream_factory_.set_handshake_mode(
478 MockCryptoClientStream::ZERO_RTT); 492 MockCryptoClientStream::ZERO_RTT);
479 host_resolver_.set_synchronous_mode(true); 493 host_resolver_.set_synchronous_mode(true);
480 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 494 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
481 "192.168.0.1", ""); 495 "192.168.0.1", "");
482 496
483 QuicStreamRequest request(factory_.get()); 497 QuicStreamRequest request(factory_.get());
484 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 498 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
485 /*cert_verify_flags=*/0, host_port_pair_.host(), 499 /*cert_verify_flags=*/0, url_, "GET", net_log_,
486 "GET", net_log_, callback_.callback())); 500 callback_.callback()));
487 501
488 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 502 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
489 EXPECT_TRUE(stream.get()); 503 EXPECT_TRUE(stream.get());
490 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 504 EXPECT_TRUE(socket_data.AllReadDataConsumed());
491 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 505 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
492 } 506 }
493 507
494 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) { 508 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) {
495 Initialize(); 509 Initialize();
496 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 510 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
497 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 511 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
498 512
499 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 513 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
500 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 514 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
501 socket_factory_.AddSocketDataProvider(&socket_data); 515 socket_factory_.AddSocketDataProvider(&socket_data);
502 516
503 crypto_client_stream_factory_.set_handshake_mode( 517 crypto_client_stream_factory_.set_handshake_mode(
504 MockCryptoClientStream::ZERO_RTT); 518 MockCryptoClientStream::ZERO_RTT);
505 host_resolver_.set_synchronous_mode(true); 519 host_resolver_.set_synchronous_mode(true);
506 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 520 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
507 "192.168.0.1", ""); 521 "192.168.0.1", "");
508 522
509 QuicStreamRequest request(factory_.get()); 523 QuicStreamRequest request(factory_.get());
510 // Posts require handshake confirmation, so this will return asynchronously. 524 // Posts require handshake confirmation, so this will return asynchronously.
511 EXPECT_EQ(ERR_IO_PENDING, 525 EXPECT_EQ(ERR_IO_PENDING,
512 request.Request(host_port_pair_, privacy_mode_, 526 request.Request(host_port_pair_, privacy_mode_,
513 /*cert_verify_flags=*/0, host_port_pair_.host(), 527 /*cert_verify_flags=*/0, url_, "POST", net_log_,
514 "POST", net_log_, callback_.callback())); 528 callback_.callback()));
515 529
516 // Confirm the handshake and verify that the stream is created. 530 // Confirm the handshake and verify that the stream is created.
517 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 531 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
518 QuicSession::HANDSHAKE_CONFIRMED); 532 QuicSession::HANDSHAKE_CONFIRMED);
519 533
520 EXPECT_EQ(OK, callback_.WaitForResult()); 534 EXPECT_EQ(OK, callback_.WaitForResult());
521 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 535 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
522 EXPECT_TRUE(stream.get()); 536 EXPECT_TRUE(stream.get());
523 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 537 EXPECT_TRUE(socket_data.AllReadDataConsumed());
524 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 538 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
525 } 539 }
526 540
527 TEST_P(QuicStreamFactoryTest, NoZeroRttForDifferentHost) { 541 TEST_P(QuicStreamFactoryTest, NoZeroRttForDifferentHost) {
528 Initialize(); 542 Initialize();
529 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 543 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
530 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 544 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
531 545
532 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 546 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
533 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 547 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
534 socket_factory_.AddSocketDataProvider(&socket_data); 548 socket_factory_.AddSocketDataProvider(&socket_data);
535 549
536 crypto_client_stream_factory_.set_handshake_mode( 550 crypto_client_stream_factory_.set_handshake_mode(
537 MockCryptoClientStream::ZERO_RTT); 551 MockCryptoClientStream::ZERO_RTT);
538 host_resolver_.set_synchronous_mode(true); 552 host_resolver_.set_synchronous_mode(true);
539 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 553 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
540 "192.168.0.1", ""); 554 "192.168.0.1", "");
541 555
542 QuicStreamRequest request(factory_.get()); 556 QuicStreamRequest request(factory_.get());
543 int rv = 557 int rv = request.Request(host_port_pair_, privacy_mode_,
544 request.Request(host_port_pair_, privacy_mode_, /*cert_verify_flags=*/0, 558 /*cert_verify_flags=*/0, url2_, "GET", net_log_,
545 kServer2HostName, "GET", net_log_, callback_.callback()); 559 callback_.callback());
546 // If server and origin have different hostnames, then handshake confirmation 560 // If server and origin have different hostnames, then handshake confirmation
547 // should be required, so Request will return asynchronously. 561 // should be required, so Request will return asynchronously.
548 EXPECT_EQ(ERR_IO_PENDING, rv); 562 EXPECT_EQ(ERR_IO_PENDING, rv);
549 // Confirm handshake. 563 // Confirm handshake.
550 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 564 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
551 QuicSession::HANDSHAKE_CONFIRMED); 565 QuicSession::HANDSHAKE_CONFIRMED);
552 EXPECT_EQ(OK, callback_.WaitForResult()); 566 EXPECT_EQ(OK, callback_.WaitForResult());
553 567
554 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 568 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
555 EXPECT_TRUE(stream.get()); 569 EXPECT_TRUE(stream.get());
556 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 570 EXPECT_TRUE(socket_data.AllReadDataConsumed());
557 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 571 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
558 } 572 }
559 573
560 TEST_P(QuicStreamFactoryTest, GoAway) { 574 TEST_P(QuicStreamFactoryTest, GoAway) {
561 Initialize(); 575 Initialize();
562 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 576 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
563 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 577 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
564 578
565 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 579 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
566 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 580 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
567 socket_factory_.AddSocketDataProvider(&socket_data); 581 socket_factory_.AddSocketDataProvider(&socket_data);
568 582
569 QuicStreamRequest request(factory_.get()); 583 QuicStreamRequest request(factory_.get());
570 EXPECT_EQ(ERR_IO_PENDING, 584 EXPECT_EQ(ERR_IO_PENDING,
571 request.Request(host_port_pair_, privacy_mode_, 585 request.Request(host_port_pair_, privacy_mode_,
572 /*cert_verify_flags=*/0, host_port_pair_.host(), 586 /*cert_verify_flags=*/0, url_, "GET", net_log_,
573 "GET", net_log_, callback_.callback())); 587 callback_.callback()));
574 588
575 EXPECT_EQ(OK, callback_.WaitForResult()); 589 EXPECT_EQ(OK, callback_.WaitForResult());
576 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 590 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
577 EXPECT_TRUE(stream.get()); 591 EXPECT_TRUE(stream.get());
578 592
579 QuicChromiumClientSession* session = 593 QuicChromiumClientSession* session =
580 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 594 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
581 595
582 session->OnGoAway(QuicGoAwayFrame()); 596 session->OnGoAway(QuicGoAwayFrame());
583 597
(...skipping 14 matching lines...) Expand all
598 socket_factory_.AddSocketDataProvider(&socket_data); 612 socket_factory_.AddSocketDataProvider(&socket_data);
599 613
600 HostPortPair server2(kServer2HostName, kDefaultServerPort); 614 HostPortPair server2(kServer2HostName, kDefaultServerPort);
601 host_resolver_.set_synchronous_mode(true); 615 host_resolver_.set_synchronous_mode(true);
602 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 616 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
603 "192.168.0.1", ""); 617 "192.168.0.1", "");
604 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 618 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
605 619
606 QuicStreamRequest request(factory_.get()); 620 QuicStreamRequest request(factory_.get());
607 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 621 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
608 /*cert_verify_flags=*/0, host_port_pair_.host(), 622 /*cert_verify_flags=*/0, url_, "GET", net_log_,
609 "GET", net_log_, callback_.callback())); 623 callback_.callback()));
610 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 624 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
611 EXPECT_TRUE(stream.get()); 625 EXPECT_TRUE(stream.get());
612 626
613 TestCompletionCallback callback; 627 TestCompletionCallback callback;
614 QuicStreamRequest request2(factory_.get()); 628 QuicStreamRequest request2(factory_.get());
615 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 629 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
616 /*cert_verify_flags=*/0, server2.host(), "GET", 630 /*cert_verify_flags=*/0, url2_, "GET",
617 net_log_, callback.callback())); 631 net_log_, callback.callback()));
618 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 632 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
619 EXPECT_TRUE(stream2.get()); 633 EXPECT_TRUE(stream2.get());
620 634
621 EXPECT_EQ( 635 EXPECT_EQ(
622 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_), 636 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_),
623 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 637 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
624 638
625 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 639 EXPECT_TRUE(socket_data.AllReadDataConsumed());
626 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 640 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
(...skipping 13 matching lines...) Expand all
640 socket_factory_.AddSocketDataProvider(&socket_data2); 654 socket_factory_.AddSocketDataProvider(&socket_data2);
641 655
642 HostPortPair server2(kServer2HostName, kDefaultServerPort); 656 HostPortPair server2(kServer2HostName, kDefaultServerPort);
643 host_resolver_.set_synchronous_mode(true); 657 host_resolver_.set_synchronous_mode(true);
644 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 658 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
645 "192.168.0.1", ""); 659 "192.168.0.1", "");
646 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 660 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
647 661
648 QuicStreamRequest request(factory_.get()); 662 QuicStreamRequest request(factory_.get());
649 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 663 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
650 /*cert_verify_flags=*/0, host_port_pair_.host(), 664 /*cert_verify_flags=*/0, url_, "GET", net_log_,
651 "GET", net_log_, callback_.callback())); 665 callback_.callback()));
652 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 666 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
653 EXPECT_TRUE(stream.get()); 667 EXPECT_TRUE(stream.get());
654 668
655 TestCompletionCallback callback; 669 TestCompletionCallback callback;
656 QuicStreamRequest request2(factory_.get()); 670 QuicStreamRequest request2(factory_.get());
657 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 671 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
658 /*cert_verify_flags=*/0, server2.host(), "GET", 672 /*cert_verify_flags=*/0, url2_, "GET",
659 net_log_, callback.callback())); 673 net_log_, callback.callback()));
660 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 674 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
661 EXPECT_TRUE(stream2.get()); 675 EXPECT_TRUE(stream2.get());
662 676
663 EXPECT_NE( 677 EXPECT_NE(
664 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_), 678 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_),
665 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 679 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
666 680
667 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 681 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
668 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 682 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
(...skipping 14 matching lines...) Expand all
683 socket_factory_.AddSocketDataProvider(&socket_data2); 697 socket_factory_.AddSocketDataProvider(&socket_data2);
684 698
685 HostPortPair server2(kServer2HostName, kDefaultServerPort); 699 HostPortPair server2(kServer2HostName, kDefaultServerPort);
686 host_resolver_.set_synchronous_mode(true); 700 host_resolver_.set_synchronous_mode(true);
687 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 701 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
688 "192.168.0.1", ""); 702 "192.168.0.1", "");
689 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 703 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
690 704
691 QuicStreamRequest request(factory_.get()); 705 QuicStreamRequest request(factory_.get());
692 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 706 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
693 /*cert_verify_flags=*/0, host_port_pair_.host(), 707 /*cert_verify_flags=*/0, url_, "GET", net_log_,
694 "GET", net_log_, callback_.callback())); 708 callback_.callback()));
695 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 709 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
696 EXPECT_TRUE(stream.get()); 710 EXPECT_TRUE(stream.get());
697 711
698 TestCompletionCallback callback; 712 TestCompletionCallback callback;
699 QuicStreamRequest request2(factory_.get()); 713 QuicStreamRequest request2(factory_.get());
700 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 714 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
701 /*cert_verify_flags=*/0, server2.host(), "GET", 715 /*cert_verify_flags=*/0, url2_, "GET",
702 net_log_, callback.callback())); 716 net_log_, callback.callback()));
703 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 717 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
704 EXPECT_TRUE(stream2.get()); 718 EXPECT_TRUE(stream2.get());
705 719
706 factory_->OnSessionGoingAway( 720 factory_->OnSessionGoingAway(
707 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_)); 721 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_));
708 EXPECT_FALSE( 722 EXPECT_FALSE(
709 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 723 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
710 EXPECT_FALSE( 724 EXPECT_FALSE(
711 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2)); 725 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2));
712 726
713 TestCompletionCallback callback3; 727 TestCompletionCallback callback3;
714 QuicStreamRequest request3(factory_.get()); 728 QuicStreamRequest request3(factory_.get());
715 EXPECT_EQ(OK, request3.Request(server2, privacy_mode_, 729 EXPECT_EQ(OK, request3.Request(server2, privacy_mode_,
716 /*cert_verify_flags=*/0, server2.host(), "GET", 730 /*cert_verify_flags=*/0, url2_, "GET",
717 net_log_, callback3.callback())); 731 net_log_, callback3.callback()));
718 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); 732 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream();
719 EXPECT_TRUE(stream3.get()); 733 EXPECT_TRUE(stream3.get());
720 734
721 EXPECT_TRUE(QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2)); 735 EXPECT_TRUE(QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2));
722 736
723 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 737 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
724 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 738 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
725 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 739 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
726 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 740 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
(...skipping 11 matching lines...) Expand all
738 752
739 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 753 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
740 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 754 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
741 755
742 host_resolver_.set_synchronous_mode(true); 756 host_resolver_.set_synchronous_mode(true);
743 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 757 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
744 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 758 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
745 759
746 QuicStreamRequest request(factory_.get()); 760 QuicStreamRequest request(factory_.get());
747 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 761 EXPECT_EQ(OK, request.Request(server1, privacy_mode_,
748 /*cert_verify_flags=*/0, server1.host(), "GET", 762 /*cert_verify_flags=*/0, url_, "GET", net_log_,
749 net_log_, callback_.callback())); 763 callback_.callback()));
750 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 764 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
751 EXPECT_TRUE(stream.get()); 765 EXPECT_TRUE(stream.get());
752 766
753 TestCompletionCallback callback; 767 TestCompletionCallback callback;
754 QuicStreamRequest request2(factory_.get()); 768 QuicStreamRequest request2(factory_.get());
755 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 769 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
756 /*cert_verify_flags=*/0, server2.host(), "GET", 770 /*cert_verify_flags=*/0, url2_, "GET",
757 net_log_, callback_.callback())); 771 net_log_, callback_.callback()));
758 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 772 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
759 EXPECT_TRUE(stream2.get()); 773 EXPECT_TRUE(stream2.get());
760 774
761 EXPECT_EQ(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1), 775 EXPECT_EQ(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1),
762 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 776 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
763 777
764 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 778 EXPECT_TRUE(socket_data.AllReadDataConsumed());
765 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 779 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
766 } 780 }
(...skipping 14 matching lines...) Expand all
781 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 795 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
782 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 796 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
783 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 797 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
784 798
785 host_resolver_.set_synchronous_mode(true); 799 host_resolver_.set_synchronous_mode(true);
786 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 800 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
787 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 801 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
788 802
789 QuicStreamRequest request(factory_.get()); 803 QuicStreamRequest request(factory_.get());
790 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 804 EXPECT_EQ(OK, request.Request(server1, privacy_mode_,
791 /*cert_verify_flags=*/0, server1.host(), "GET", 805 /*cert_verify_flags=*/0, url_, "GET", net_log_,
792 net_log_, callback_.callback())); 806 callback_.callback()));
793 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 807 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
794 EXPECT_TRUE(stream.get()); 808 EXPECT_TRUE(stream.get());
795 809
796 TestCompletionCallback callback; 810 TestCompletionCallback callback;
797 QuicStreamRequest request2(factory_.get()); 811 QuicStreamRequest request2(factory_.get());
798 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 812 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
799 /*cert_verify_flags=*/0, server2.host(), "GET", 813 /*cert_verify_flags=*/0, url2_, "GET",
800 net_log_, callback_.callback())); 814 net_log_, callback_.callback()));
801 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 815 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
802 EXPECT_TRUE(stream2.get()); 816 EXPECT_TRUE(stream2.get());
803 817
804 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1), 818 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1),
805 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 819 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
806 820
807 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 821 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
808 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 822 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
809 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 823 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
810 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 824 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
811 } 825 }
812 826
813 class QuicAlternativeServiceCertificateValidationPooling 827 class QuicAlternativeServiceCertificateValidationPooling
814 : public QuicStreamFactoryTest { 828 : public QuicStreamFactoryTest {
815 public: 829 public:
816 void Run(bool valid) { 830 void Run(bool valid) {
817 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 831 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
818 SequencedSocketData socket_data1(reads, arraysize(reads), nullptr, 0); 832 SequencedSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
819 socket_factory_.AddSocketDataProvider(&socket_data1); 833 socket_factory_.AddSocketDataProvider(&socket_data1);
820 834
821 HostPortPair server1(kDefaultServerHostName, 443); 835 HostPortPair server1(kDefaultServerHostName, 443);
822 HostPortPair server2(kServer2HostName, 443); 836 HostPortPair server2(kServer2HostName, 443);
823 837
824 std::string origin_host(valid ? kServer2HostName : "invalid.example.com"); 838 GURL url(valid ? url2_ : GURL("http://invalid.example.com/"));
825 HostPortPair alternative(kDefaultServerHostName, 443); 839 HostPortPair alternative(kDefaultServerHostName, 443);
826 840
827 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 841 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
828 bool common_name_fallback_used; 842 bool common_name_fallback_used;
829 EXPECT_EQ(valid, 843 EXPECT_EQ(valid,
830 verify_details.cert_verify_result.verified_cert->VerifyNameMatch( 844 verify_details.cert_verify_result.verified_cert->VerifyNameMatch(
831 origin_host, &common_name_fallback_used)); 845 url.host(), &common_name_fallback_used));
832 EXPECT_TRUE( 846 EXPECT_TRUE(
833 verify_details.cert_verify_result.verified_cert->VerifyNameMatch( 847 verify_details.cert_verify_result.verified_cert->VerifyNameMatch(
834 alternative.host(), &common_name_fallback_used)); 848 alternative.host(), &common_name_fallback_used));
835 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 849 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
836 850
837 host_resolver_.set_synchronous_mode(true); 851 host_resolver_.set_synchronous_mode(true);
838 host_resolver_.rules()->AddIPLiteralRule(alternative.host(), "192.168.0.1", 852 host_resolver_.rules()->AddIPLiteralRule(alternative.host(), "192.168.0.1",
839 ""); 853 "");
840 854
841 // Open first stream to alternative. 855 // Open first stream to alternative.
842 QuicStreamRequest request1(factory_.get()); 856 QuicStreamRequest request1(factory_.get());
843 EXPECT_EQ(OK, request1.Request(alternative, privacy_mode_, 857 EXPECT_EQ(OK, request1.Request(alternative, privacy_mode_,
844 /*cert_verify_flags=*/0, alternative.host(), 858 /*cert_verify_flags=*/0, url_, "GET",
845 "GET", net_log_, callback_.callback())); 859 net_log_, callback_.callback()));
846 scoped_ptr<QuicHttpStream> stream1 = request1.ReleaseStream(); 860 scoped_ptr<QuicHttpStream> stream1 = request1.ReleaseStream();
847 EXPECT_TRUE(stream1.get()); 861 EXPECT_TRUE(stream1.get());
848 862
849 QuicStreamRequest request2(factory_.get()); 863 QuicStreamRequest request2(factory_.get());
850 int rv = request2.Request(alternative, privacy_mode_, 864 int rv = request2.Request(alternative, privacy_mode_,
851 /*cert_verify_flags=*/0, origin_host, "GET", 865 /*cert_verify_flags=*/0, url, "GET", net_log_,
852 net_log_, callback_.callback()); 866 callback_.callback());
853 if (valid) { 867 if (valid) {
854 // Alternative service of origin to |alternative| should pool to session 868 // Alternative service of origin to |alternative| should pool to session
855 // of |stream1| even if origin is different. Since only one 869 // of |stream1| even if origin is different. Since only one
856 // SocketDataProvider is set up, the second request succeeding means that 870 // SocketDataProvider is set up, the second request succeeding means that
857 // it pooled to the session opened by the first one. 871 // it pooled to the session opened by the first one.
858 EXPECT_EQ(OK, rv); 872 EXPECT_EQ(OK, rv);
859 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 873 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
860 EXPECT_TRUE(stream2.get()); 874 EXPECT_TRUE(stream2.get());
861 } else { 875 } else {
862 EXPECT_EQ(ERR_ALTERNATIVE_CERT_NOT_VALID_FOR_ORIGIN, rv); 876 EXPECT_EQ(ERR_ALTERNATIVE_CERT_NOT_VALID_FOR_ORIGIN, rv);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 verify_details.cert_verify_result.public_key_hashes.push_back( 912 verify_details.cert_verify_result.public_key_hashes.push_back(
899 test::GetTestHashValue(primary_pin)); 913 test::GetTestHashValue(primary_pin));
900 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 914 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
901 915
902 host_resolver_.set_synchronous_mode(true); 916 host_resolver_.set_synchronous_mode(true);
903 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 917 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
904 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 918 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
905 919
906 QuicStreamRequest request(factory_.get()); 920 QuicStreamRequest request(factory_.get());
907 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 921 EXPECT_EQ(OK, request.Request(server1, privacy_mode_,
908 /*cert_verify_flags=*/0, server1.host(), "GET", 922 /*cert_verify_flags=*/0, url_, "GET", net_log_,
909 net_log_, callback_.callback())); 923 callback_.callback()));
910 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 924 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
911 EXPECT_TRUE(stream.get()); 925 EXPECT_TRUE(stream.get());
912 926
913 TestCompletionCallback callback; 927 TestCompletionCallback callback;
914 QuicStreamRequest request2(factory_.get()); 928 QuicStreamRequest request2(factory_.get());
915 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 929 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
916 /*cert_verify_flags=*/0, server2.host(), "GET", 930 /*cert_verify_flags=*/0, url2_, "GET",
917 net_log_, callback_.callback())); 931 net_log_, callback_.callback()));
918 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 932 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
919 EXPECT_TRUE(stream2.get()); 933 EXPECT_TRUE(stream2.get());
920 934
921 EXPECT_EQ(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1), 935 EXPECT_EQ(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1),
922 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 936 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
923 937
924 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 938 EXPECT_TRUE(socket_data.AllReadDataConsumed());
925 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 939 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
926 } 940 }
(...skipping 20 matching lines...) Expand all
947 test::GetTestHashValue(primary_pin)); 961 test::GetTestHashValue(primary_pin));
948 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 962 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
949 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 963 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
950 964
951 host_resolver_.set_synchronous_mode(true); 965 host_resolver_.set_synchronous_mode(true);
952 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 966 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
953 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 967 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
954 968
955 QuicStreamRequest request(factory_.get()); 969 QuicStreamRequest request(factory_.get());
956 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 970 EXPECT_EQ(OK, request.Request(server1, privacy_mode_,
957 /*cert_verify_flags=*/0, server1.host(), "GET", 971 /*cert_verify_flags=*/0, url_, "GET", net_log_,
958 net_log_, callback_.callback())); 972 callback_.callback()));
959 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 973 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
960 EXPECT_TRUE(stream.get()); 974 EXPECT_TRUE(stream.get());
961 975
962 TestCompletionCallback callback; 976 TestCompletionCallback callback;
963 QuicStreamRequest request2(factory_.get()); 977 QuicStreamRequest request2(factory_.get());
964 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 978 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
965 /*cert_verify_flags=*/0, server2.host(), "GET", 979 /*cert_verify_flags=*/0, url2_, "GET",
966 net_log_, callback_.callback())); 980 net_log_, callback_.callback()));
967 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 981 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
968 EXPECT_TRUE(stream2.get()); 982 EXPECT_TRUE(stream2.get());
969 983
970 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1), 984 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1),
971 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 985 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
972 986
973 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 987 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
974 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 988 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
975 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 989 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
(...skipping 25 matching lines...) Expand all
1001 verify_details2.cert_verify_result.public_key_hashes.push_back( 1015 verify_details2.cert_verify_result.public_key_hashes.push_back(
1002 test::GetTestHashValue(primary_pin)); 1016 test::GetTestHashValue(primary_pin));
1003 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2); 1017 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2);
1004 1018
1005 host_resolver_.set_synchronous_mode(true); 1019 host_resolver_.set_synchronous_mode(true);
1006 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 1020 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
1007 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1021 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1008 1022
1009 QuicStreamRequest request(factory_.get()); 1023 QuicStreamRequest request(factory_.get());
1010 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 1024 EXPECT_EQ(OK, request.Request(server1, privacy_mode_,
1011 /*cert_verify_flags=*/0, server1.host(), "GET", 1025 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1012 net_log_, callback_.callback())); 1026 callback_.callback()));
1013 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1027 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1014 EXPECT_TRUE(stream.get()); 1028 EXPECT_TRUE(stream.get());
1015 1029
1016 TestCompletionCallback callback; 1030 TestCompletionCallback callback;
1017 QuicStreamRequest request2(factory_.get()); 1031 QuicStreamRequest request2(factory_.get());
1018 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1032 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
1019 /*cert_verify_flags=*/0, server2.host(), "GET", 1033 /*cert_verify_flags=*/0, url2_, "GET",
1020 net_log_, callback_.callback())); 1034 net_log_, callback_.callback()));
1021 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 1035 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
1022 EXPECT_TRUE(stream2.get()); 1036 EXPECT_TRUE(stream2.get());
1023 1037
1024 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1), 1038 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1),
1025 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 1039 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
1026 1040
1027 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 1041 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
1028 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 1042 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
1029 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1043 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1030 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1044 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1031 } 1045 }
1032 1046
1033 TEST_P(QuicStreamFactoryTest, Goaway) { 1047 TEST_P(QuicStreamFactoryTest, Goaway) {
1034 Initialize(); 1048 Initialize();
1035 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 1049 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
1036 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1050 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1037 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1051 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1038 1052
1039 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1053 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1040 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 1054 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1041 socket_factory_.AddSocketDataProvider(&socket_data); 1055 socket_factory_.AddSocketDataProvider(&socket_data);
1042 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0); 1056 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
1043 socket_factory_.AddSocketDataProvider(&socket_data2); 1057 socket_factory_.AddSocketDataProvider(&socket_data2);
1044 1058
1045 QuicStreamRequest request(factory_.get()); 1059 QuicStreamRequest request(factory_.get());
1046 EXPECT_EQ(ERR_IO_PENDING, 1060 EXPECT_EQ(ERR_IO_PENDING,
1047 request.Request(host_port_pair_, privacy_mode_, 1061 request.Request(host_port_pair_, privacy_mode_,
1048 /*cert_verify_flags=*/0, host_port_pair_.host(), 1062 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1049 "GET", net_log_, callback_.callback())); 1063 callback_.callback()));
1050 1064
1051 EXPECT_EQ(OK, callback_.WaitForResult()); 1065 EXPECT_EQ(OK, callback_.WaitForResult());
1052 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1066 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1053 EXPECT_TRUE(stream.get()); 1067 EXPECT_TRUE(stream.get());
1054 1068
1055 // Mark the session as going away. Ensure that while it is still alive 1069 // Mark the session as going away. Ensure that while it is still alive
1056 // that it is no longer active. 1070 // that it is no longer active.
1057 QuicChromiumClientSession* session = 1071 QuicChromiumClientSession* session =
1058 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1072 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
1059 factory_->OnSessionGoingAway(session); 1073 factory_->OnSessionGoingAway(session);
1060 EXPECT_EQ(true, 1074 EXPECT_EQ(true,
1061 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1075 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1062 EXPECT_FALSE( 1076 EXPECT_FALSE(
1063 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 1077 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
1064 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1078 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1065 1079
1066 // Create a new request for the same destination and verify that a 1080 // Create a new request for the same destination and verify that a
1067 // new session is created. 1081 // new session is created.
1068 QuicStreamRequest request2(factory_.get()); 1082 QuicStreamRequest request2(factory_.get());
1069 EXPECT_EQ(ERR_IO_PENDING, 1083 EXPECT_EQ(ERR_IO_PENDING,
1070 request2.Request(host_port_pair_, privacy_mode_, 1084 request2.Request(host_port_pair_, privacy_mode_,
1071 /*cert_verify_flags=*/0, host_port_pair_.host(), 1085 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1072 "GET", net_log_, callback_.callback())); 1086 callback_.callback()));
1073 EXPECT_EQ(OK, callback_.WaitForResult()); 1087 EXPECT_EQ(OK, callback_.WaitForResult());
1074 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 1088 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
1075 EXPECT_TRUE(stream2.get()); 1089 EXPECT_TRUE(stream2.get());
1076 1090
1077 EXPECT_TRUE( 1091 EXPECT_TRUE(
1078 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 1092 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
1079 EXPECT_NE(session, QuicStreamFactoryPeer::GetActiveSession(factory_.get(), 1093 EXPECT_NE(session, QuicStreamFactoryPeer::GetActiveSession(factory_.get(),
1080 host_port_pair_)); 1094 host_port_pair_));
1081 EXPECT_EQ(true, 1095 EXPECT_EQ(true,
1082 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1096 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
(...skipping 27 matching lines...) Expand all
1110 arraysize(writes)); 1124 arraysize(writes));
1111 socket_factory_.AddSocketDataProvider(&socket_data); 1125 socket_factory_.AddSocketDataProvider(&socket_data);
1112 1126
1113 HttpRequestInfo request_info; 1127 HttpRequestInfo request_info;
1114 std::vector<QuicHttpStream*> streams; 1128 std::vector<QuicHttpStream*> streams;
1115 // The MockCryptoClientStream sets max_open_streams to be 1129 // The MockCryptoClientStream sets max_open_streams to be
1116 // kDefaultMaxStreamsPerConnection / 2. 1130 // kDefaultMaxStreamsPerConnection / 2.
1117 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) { 1131 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) {
1118 QuicStreamRequest request(factory_.get()); 1132 QuicStreamRequest request(factory_.get());
1119 int rv = request.Request(host_port_pair_, privacy_mode_, 1133 int rv = request.Request(host_port_pair_, privacy_mode_,
1120 /*cert_verify_flags=*/0, host_port_pair_.host(), 1134 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1121 "GET", net_log_, callback_.callback()); 1135 callback_.callback());
1122 if (i == 0) { 1136 if (i == 0) {
1123 EXPECT_EQ(ERR_IO_PENDING, rv); 1137 EXPECT_EQ(ERR_IO_PENDING, rv);
1124 EXPECT_EQ(OK, callback_.WaitForResult()); 1138 EXPECT_EQ(OK, callback_.WaitForResult());
1125 } else { 1139 } else {
1126 EXPECT_EQ(OK, rv); 1140 EXPECT_EQ(OK, rv);
1127 } 1141 }
1128 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1142 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1129 EXPECT_TRUE(stream); 1143 EXPECT_TRUE(stream);
1130 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1144 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1131 net_log_, CompletionCallback())); 1145 net_log_, CompletionCallback()));
1132 streams.push_back(stream.release()); 1146 streams.push_back(stream.release());
1133 } 1147 }
1134 1148
1135 QuicStreamRequest request(factory_.get()); 1149 QuicStreamRequest request(factory_.get());
1136 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 1150 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
1137 /*cert_verify_flags=*/0, host_port_pair_.host(), 1151 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1138 "GET", net_log_, CompletionCallback())); 1152 CompletionCallback()));
1139 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1153 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1140 EXPECT_TRUE(stream); 1154 EXPECT_TRUE(stream);
1141 EXPECT_EQ(ERR_IO_PENDING, 1155 EXPECT_EQ(ERR_IO_PENDING,
1142 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_, 1156 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_,
1143 callback_.callback())); 1157 callback_.callback()));
1144 1158
1145 // Close the first stream. 1159 // Close the first stream.
1146 streams.front()->Close(false); 1160 streams.front()->Close(false);
1147 // Trigger exchange of RSTs that in turn allow progress for the last 1161 // Trigger exchange of RSTs that in turn allow progress for the last
1148 // stream. 1162 // stream.
(...skipping 16 matching lines...) Expand all
1165 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) { 1179 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) {
1166 Initialize(); 1180 Initialize();
1167 SequencedSocketData socket_data(nullptr, 0, nullptr, 0); 1181 SequencedSocketData socket_data(nullptr, 0, nullptr, 0);
1168 socket_factory_.AddSocketDataProvider(&socket_data); 1182 socket_factory_.AddSocketDataProvider(&socket_data);
1169 1183
1170 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName); 1184 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName);
1171 1185
1172 QuicStreamRequest request(factory_.get()); 1186 QuicStreamRequest request(factory_.get());
1173 EXPECT_EQ(ERR_IO_PENDING, 1187 EXPECT_EQ(ERR_IO_PENDING,
1174 request.Request(host_port_pair_, privacy_mode_, 1188 request.Request(host_port_pair_, privacy_mode_,
1175 /*cert_verify_flags=*/0, host_port_pair_.host(), 1189 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1176 "GET", net_log_, callback_.callback())); 1190 callback_.callback()));
1177 1191
1178 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult()); 1192 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult());
1179 1193
1180 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1194 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1181 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1195 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1182 } 1196 }
1183 1197
1184 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) { 1198 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) {
1185 Initialize(); 1199 Initialize();
1186 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE); 1200 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE);
1187 SequencedSocketData socket_data(nullptr, 0, nullptr, 0); 1201 SequencedSocketData socket_data(nullptr, 0, nullptr, 0);
1188 socket_data.set_connect_data(connect); 1202 socket_data.set_connect_data(connect);
1189 socket_factory_.AddSocketDataProvider(&socket_data); 1203 socket_factory_.AddSocketDataProvider(&socket_data);
1190 1204
1191 QuicStreamRequest request(factory_.get()); 1205 QuicStreamRequest request(factory_.get());
1192 EXPECT_EQ(ERR_IO_PENDING, 1206 EXPECT_EQ(ERR_IO_PENDING,
1193 request.Request(host_port_pair_, privacy_mode_, 1207 request.Request(host_port_pair_, privacy_mode_,
1194 /*cert_verify_flags=*/0, host_port_pair_.host(), 1208 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1195 "GET", net_log_, callback_.callback())); 1209 callback_.callback()));
1196 1210
1197 EXPECT_EQ(ERR_ADDRESS_IN_USE, callback_.WaitForResult()); 1211 EXPECT_EQ(ERR_ADDRESS_IN_USE, callback_.WaitForResult());
1198 1212
1199 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1213 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1200 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1214 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1201 } 1215 }
1202 1216
1203 TEST_P(QuicStreamFactoryTest, CancelCreate) { 1217 TEST_P(QuicStreamFactoryTest, CancelCreate) {
1204 Initialize(); 1218 Initialize();
1205 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1219 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1206 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 1220 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1207 socket_factory_.AddSocketDataProvider(&socket_data); 1221 socket_factory_.AddSocketDataProvider(&socket_data);
1208 { 1222 {
1209 QuicStreamRequest request(factory_.get()); 1223 QuicStreamRequest request(factory_.get());
1210 EXPECT_EQ(ERR_IO_PENDING, 1224 EXPECT_EQ(ERR_IO_PENDING,
1211 request.Request(host_port_pair_, privacy_mode_, 1225 request.Request(host_port_pair_, privacy_mode_,
1212 /*cert_verify_flags=*/0, host_port_pair_.host(), 1226 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1213 "GET", net_log_, callback_.callback())); 1227 callback_.callback()));
1214 } 1228 }
1215 1229
1216 base::RunLoop().RunUntilIdle(); 1230 base::RunLoop().RunUntilIdle();
1217 1231
1218 scoped_ptr<QuicHttpStream> stream(CreateFromSession(host_port_pair_)); 1232 scoped_ptr<QuicHttpStream> stream(CreateFromSession(host_port_pair_));
1219 EXPECT_TRUE(stream.get()); 1233 EXPECT_TRUE(stream.get());
1220 stream.reset(); 1234 stream.reset();
1221 1235
1222 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1236 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1223 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1237 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1273 writes.size()); 1287 writes.size());
1274 socket_factory_.AddSocketDataProvider(&socket_data); 1288 socket_factory_.AddSocketDataProvider(&socket_data);
1275 1289
1276 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1290 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1277 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 1291 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1278 socket_factory_.AddSocketDataProvider(&socket_data2); 1292 socket_factory_.AddSocketDataProvider(&socket_data2);
1279 1293
1280 QuicStreamRequest request(factory_.get()); 1294 QuicStreamRequest request(factory_.get());
1281 EXPECT_EQ(ERR_IO_PENDING, 1295 EXPECT_EQ(ERR_IO_PENDING,
1282 request.Request(host_port_pair_, privacy_mode_, 1296 request.Request(host_port_pair_, privacy_mode_,
1283 /*cert_verify_flags=*/0, host_port_pair_.host(), 1297 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1284 "GET", net_log_, callback_.callback())); 1298 callback_.callback()));
1285 1299
1286 EXPECT_EQ(OK, callback_.WaitForResult()); 1300 EXPECT_EQ(OK, callback_.WaitForResult());
1287 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1301 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1288 HttpRequestInfo request_info; 1302 HttpRequestInfo request_info;
1289 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1303 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1290 net_log_, CompletionCallback())); 1304 net_log_, CompletionCallback()));
1291 1305
1292 // Close the session and verify that stream saw the error. 1306 // Close the session and verify that stream saw the error.
1293 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR); 1307 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR);
1294 EXPECT_EQ(ERR_INTERNET_DISCONNECTED, 1308 EXPECT_EQ(ERR_INTERNET_DISCONNECTED,
1295 stream->ReadResponseHeaders(callback_.callback())); 1309 stream->ReadResponseHeaders(callback_.callback()));
1296 1310
1297 // Now attempting to request a stream to the same origin should create 1311 // Now attempting to request a stream to the same origin should create
1298 // a new session. 1312 // a new session.
1299 1313
1300 QuicStreamRequest request2(factory_.get()); 1314 QuicStreamRequest request2(factory_.get());
1301 EXPECT_EQ(ERR_IO_PENDING, 1315 EXPECT_EQ(ERR_IO_PENDING,
1302 request2.Request(host_port_pair_, privacy_mode_, 1316 request2.Request(host_port_pair_, privacy_mode_,
1303 /*cert_verify_flags=*/0, host_port_pair_.host(), 1317 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1304 "GET", net_log_, callback_.callback())); 1318 callback_.callback()));
1305 1319
1306 EXPECT_EQ(OK, callback_.WaitForResult()); 1320 EXPECT_EQ(OK, callback_.WaitForResult());
1307 stream = request2.ReleaseStream(); 1321 stream = request2.ReleaseStream();
1308 stream.reset(); // Will reset stream 3. 1322 stream.reset(); // Will reset stream 3.
1309 1323
1310 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1324 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1311 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1325 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1312 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1326 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1313 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1327 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1314 } 1328 }
(...skipping 14 matching lines...) Expand all
1329 writes.size()); 1343 writes.size());
1330 socket_factory_.AddSocketDataProvider(&socket_data); 1344 socket_factory_.AddSocketDataProvider(&socket_data);
1331 1345
1332 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1346 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1333 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 1347 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1334 socket_factory_.AddSocketDataProvider(&socket_data2); 1348 socket_factory_.AddSocketDataProvider(&socket_data2);
1335 1349
1336 QuicStreamRequest request(factory_.get()); 1350 QuicStreamRequest request(factory_.get());
1337 EXPECT_EQ(ERR_IO_PENDING, 1351 EXPECT_EQ(ERR_IO_PENDING,
1338 request.Request(host_port_pair_, privacy_mode_, 1352 request.Request(host_port_pair_, privacy_mode_,
1339 /*cert_verify_flags=*/0, host_port_pair_.host(), 1353 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1340 "GET", net_log_, callback_.callback())); 1354 callback_.callback()));
1341 1355
1342 EXPECT_EQ(OK, callback_.WaitForResult()); 1356 EXPECT_EQ(OK, callback_.WaitForResult());
1343 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1357 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1344 HttpRequestInfo request_info; 1358 HttpRequestInfo request_info;
1345 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1359 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1346 net_log_, CompletionCallback())); 1360 net_log_, CompletionCallback()));
1347 1361
1348 // Change the IP address and verify that stream saw the error. 1362 // Change the IP address and verify that stream saw the error.
1349 NotifyIPAddressChanged(); 1363 NotifyIPAddressChanged();
1350 EXPECT_EQ(ERR_NETWORK_CHANGED, 1364 EXPECT_EQ(ERR_NETWORK_CHANGED,
1351 stream->ReadResponseHeaders(callback_.callback())); 1365 stream->ReadResponseHeaders(callback_.callback()));
1352 EXPECT_TRUE(factory_->require_confirmation()); 1366 EXPECT_TRUE(factory_->require_confirmation());
1353 1367
1354 // Now attempting to request a stream to the same origin should create 1368 // Now attempting to request a stream to the same origin should create
1355 // a new session. 1369 // a new session.
1356 1370
1357 QuicStreamRequest request2(factory_.get()); 1371 QuicStreamRequest request2(factory_.get());
1358 EXPECT_EQ(ERR_IO_PENDING, 1372 EXPECT_EQ(ERR_IO_PENDING,
1359 request2.Request(host_port_pair_, privacy_mode_, 1373 request2.Request(host_port_pair_, privacy_mode_,
1360 /*cert_verify_flags=*/0, host_port_pair_.host(), 1374 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1361 "GET", net_log_, callback_.callback())); 1375 callback_.callback()));
1362 1376
1363 EXPECT_EQ(OK, callback_.WaitForResult()); 1377 EXPECT_EQ(OK, callback_.WaitForResult());
1364 stream = request2.ReleaseStream(); 1378 stream = request2.ReleaseStream();
1365 stream.reset(); // Will reset stream 3. 1379 stream.reset(); // Will reset stream 3.
1366 1380
1367 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1381 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1368 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1382 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1369 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1383 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1370 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1384 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1371 } 1385 }
(...skipping 11 matching lines...) Expand all
1383 MockWrite writes[] = {MockWrite(SYNCHRONOUS, request_packet->data(), 1397 MockWrite writes[] = {MockWrite(SYNCHRONOUS, request_packet->data(),
1384 request_packet->length(), 1)}; 1398 request_packet->length(), 1)};
1385 SequencedSocketData socket_data(reads, arraysize(reads), writes, 1399 SequencedSocketData socket_data(reads, arraysize(reads), writes,
1386 arraysize(writes)); 1400 arraysize(writes));
1387 socket_factory_.AddSocketDataProvider(&socket_data); 1401 socket_factory_.AddSocketDataProvider(&socket_data);
1388 1402
1389 // Create request and QuicHttpStream. 1403 // Create request and QuicHttpStream.
1390 QuicStreamRequest request(factory_.get()); 1404 QuicStreamRequest request(factory_.get());
1391 EXPECT_EQ(ERR_IO_PENDING, 1405 EXPECT_EQ(ERR_IO_PENDING,
1392 request.Request(host_port_pair_, privacy_mode_, 1406 request.Request(host_port_pair_, privacy_mode_,
1393 /*cert_verify_flags=*/0, host_port_pair_.host(), 1407 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1394 "GET", net_log_, callback_.callback())); 1408 callback_.callback()));
1395 EXPECT_EQ(OK, callback_.WaitForResult()); 1409 EXPECT_EQ(OK, callback_.WaitForResult());
1396 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1410 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1397 EXPECT_TRUE(stream.get()); 1411 EXPECT_TRUE(stream.get());
1398 1412
1399 // Cause QUIC stream to be created. 1413 // Cause QUIC stream to be created.
1400 HttpRequestInfo request_info; 1414 HttpRequestInfo request_info;
1401 request_info.method = "GET"; 1415 request_info.method = "GET";
1402 request_info.url = GURL("https://www.example.org/"); 1416 request_info.url = GURL("https://www.example.org/");
1403 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1417 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1404 net_log_, CompletionCallback())); 1418 net_log_, CompletionCallback()));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1448 1462
1449 // Create a new request for the same destination and verify that a 1463 // Create a new request for the same destination and verify that a
1450 // new session is created. 1464 // new session is created.
1451 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1465 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1452 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 1466 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1453 socket_factory_.AddSocketDataProvider(&socket_data2); 1467 socket_factory_.AddSocketDataProvider(&socket_data2);
1454 1468
1455 QuicStreamRequest request2(factory_.get()); 1469 QuicStreamRequest request2(factory_.get());
1456 EXPECT_EQ(ERR_IO_PENDING, 1470 EXPECT_EQ(ERR_IO_PENDING,
1457 request2.Request(host_port_pair_, privacy_mode_, 1471 request2.Request(host_port_pair_, privacy_mode_,
1458 /*cert_verify_flags=*/0, host_port_pair_.host(), 1472 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1459 "GET", net_log_, callback_.callback())); 1473 callback_.callback()));
1460 EXPECT_EQ(OK, callback_.WaitForResult()); 1474 EXPECT_EQ(OK, callback_.WaitForResult());
1461 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 1475 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
1462 EXPECT_TRUE(stream2.get()); 1476 EXPECT_TRUE(stream2.get());
1463 1477
1464 EXPECT_TRUE( 1478 EXPECT_TRUE(
1465 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 1479 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
1466 QuicChromiumClientSession* new_session = 1480 QuicChromiumClientSession* new_session =
1467 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1481 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
1468 EXPECT_NE(session, new_session); 1482 EXPECT_NE(session, new_session);
1469 1483
(...skipping 28 matching lines...) Expand all
1498 MockWrite writes[] = {MockWrite(SYNCHRONOUS, request_packet->data(), 1512 MockWrite writes[] = {MockWrite(SYNCHRONOUS, request_packet->data(),
1499 request_packet->length(), 1)}; 1513 request_packet->length(), 1)};
1500 SequencedSocketData socket_data(reads, arraysize(reads), writes, 1514 SequencedSocketData socket_data(reads, arraysize(reads), writes,
1501 arraysize(writes)); 1515 arraysize(writes));
1502 socket_factory_.AddSocketDataProvider(&socket_data); 1516 socket_factory_.AddSocketDataProvider(&socket_data);
1503 1517
1504 // Create request and QuicHttpStream. 1518 // Create request and QuicHttpStream.
1505 QuicStreamRequest request(factory_.get()); 1519 QuicStreamRequest request(factory_.get());
1506 EXPECT_EQ(ERR_IO_PENDING, 1520 EXPECT_EQ(ERR_IO_PENDING,
1507 request.Request(host_port_pair_, privacy_mode_, 1521 request.Request(host_port_pair_, privacy_mode_,
1508 /*cert_verify_flags=*/0, host_port_pair_.host(), 1522 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1509 "GET", net_log_, callback_.callback())); 1523 callback_.callback()));
1510 EXPECT_EQ(OK, callback_.WaitForResult()); 1524 EXPECT_EQ(OK, callback_.WaitForResult());
1511 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1525 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1512 EXPECT_TRUE(stream.get()); 1526 EXPECT_TRUE(stream.get());
1513 1527
1514 // Cause QUIC stream to be created. 1528 // Cause QUIC stream to be created.
1515 HttpRequestInfo request_info; 1529 HttpRequestInfo request_info;
1516 request_info.method = "GET"; 1530 request_info.method = "GET";
1517 request_info.url = GURL("https://www.example.org/"); 1531 request_info.url = GURL("https://www.example.org/");
1518 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1532 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1519 net_log_, CompletionCallback())); 1533 net_log_, CompletionCallback()));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 1573
1560 // Create a new request for the same destination and verify that a 1574 // Create a new request for the same destination and verify that a
1561 // new session is created. 1575 // new session is created.
1562 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1576 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1563 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 1577 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1564 socket_factory_.AddSocketDataProvider(&socket_data2); 1578 socket_factory_.AddSocketDataProvider(&socket_data2);
1565 1579
1566 QuicStreamRequest request2(factory_.get()); 1580 QuicStreamRequest request2(factory_.get());
1567 EXPECT_EQ(ERR_IO_PENDING, 1581 EXPECT_EQ(ERR_IO_PENDING,
1568 request2.Request(host_port_pair_, privacy_mode_, 1582 request2.Request(host_port_pair_, privacy_mode_,
1569 /*cert_verify_flags=*/0, host_port_pair_.host(), 1583 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1570 "GET", net_log_, callback_.callback())); 1584 callback_.callback()));
1571 EXPECT_EQ(OK, callback_.WaitForResult()); 1585 EXPECT_EQ(OK, callback_.WaitForResult());
1572 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 1586 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
1573 EXPECT_TRUE(stream2.get()); 1587 EXPECT_TRUE(stream2.get());
1574 1588
1575 EXPECT_TRUE( 1589 EXPECT_TRUE(
1576 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 1590 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
1577 EXPECT_NE(session, QuicStreamFactoryPeer::GetActiveSession(factory_.get(), 1591 EXPECT_NE(session, QuicStreamFactoryPeer::GetActiveSession(factory_.get(),
1578 host_port_pair_)); 1592 host_port_pair_));
1579 EXPECT_EQ(true, 1593 EXPECT_EQ(true,
1580 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1594 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
(...skipping 19 matching lines...) Expand all
1600 MockWrite(SYNCHRONOUS, client_rst->data(), client_rst->length(), 1), 1614 MockWrite(SYNCHRONOUS, client_rst->data(), client_rst->length(), 1),
1601 }; 1615 };
1602 SequencedSocketData socket_data(reads, arraysize(reads), writes, 1616 SequencedSocketData socket_data(reads, arraysize(reads), writes,
1603 arraysize(writes)); 1617 arraysize(writes));
1604 socket_factory_.AddSocketDataProvider(&socket_data); 1618 socket_factory_.AddSocketDataProvider(&socket_data);
1605 1619
1606 // Create request and QuicHttpStream. 1620 // Create request and QuicHttpStream.
1607 QuicStreamRequest request(factory_.get()); 1621 QuicStreamRequest request(factory_.get());
1608 EXPECT_EQ(ERR_IO_PENDING, 1622 EXPECT_EQ(ERR_IO_PENDING,
1609 request.Request(host_port_pair_, privacy_mode_, 1623 request.Request(host_port_pair_, privacy_mode_,
1610 /*cert_verify_flags=*/0, host_port_pair_.host(), 1624 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1611 "GET", net_log_, callback_.callback())); 1625 callback_.callback()));
1612 EXPECT_EQ(OK, callback_.WaitForResult()); 1626 EXPECT_EQ(OK, callback_.WaitForResult());
1613 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1627 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1614 EXPECT_TRUE(stream.get()); 1628 EXPECT_TRUE(stream.get());
1615 1629
1616 // Cause QUIC stream to be created. 1630 // Cause QUIC stream to be created.
1617 HttpRequestInfo request_info; 1631 HttpRequestInfo request_info;
1618 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1632 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1619 net_log_, CompletionCallback())); 1633 net_log_, CompletionCallback()));
1620 1634
1621 // Ensure that session is alive and active. 1635 // Ensure that session is alive and active.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1654 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 1), 1668 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 1),
1655 }; 1669 };
1656 SequencedSocketData socket_data(reads, arraysize(reads), writes, 1670 SequencedSocketData socket_data(reads, arraysize(reads), writes,
1657 arraysize(writes)); 1671 arraysize(writes));
1658 socket_factory_.AddSocketDataProvider(&socket_data); 1672 socket_factory_.AddSocketDataProvider(&socket_data);
1659 1673
1660 // Create request and QuicHttpStream. 1674 // Create request and QuicHttpStream.
1661 QuicStreamRequest request(factory_.get()); 1675 QuicStreamRequest request(factory_.get());
1662 EXPECT_EQ(ERR_IO_PENDING, 1676 EXPECT_EQ(ERR_IO_PENDING,
1663 request.Request(host_port_pair_, privacy_mode_, 1677 request.Request(host_port_pair_, privacy_mode_,
1664 /*cert_verify_flags=*/0, host_port_pair_.host(), 1678 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1665 "GET", net_log_, callback_.callback())); 1679 callback_.callback()));
1666 EXPECT_EQ(OK, callback_.WaitForResult()); 1680 EXPECT_EQ(OK, callback_.WaitForResult());
1667 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1681 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1668 EXPECT_TRUE(stream.get()); 1682 EXPECT_TRUE(stream.get());
1669 1683
1670 // Cause QUIC stream to be created. 1684 // Cause QUIC stream to be created.
1671 HttpRequestInfo request_info; 1685 HttpRequestInfo request_info;
1672 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1686 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1673 net_log_, CompletionCallback())); 1687 net_log_, CompletionCallback()));
1674 1688
1675 // Ensure that session is alive and active. 1689 // Ensure that session is alive and active.
(...skipping 27 matching lines...) Expand all
1703 MockWrite(SYNCHRONOUS, client_rst->data(), client_rst->length(), 1), 1717 MockWrite(SYNCHRONOUS, client_rst->data(), client_rst->length(), 1),
1704 }; 1718 };
1705 SequencedSocketData socket_data(reads, arraysize(reads), writes, 1719 SequencedSocketData socket_data(reads, arraysize(reads), writes,
1706 arraysize(writes)); 1720 arraysize(writes));
1707 socket_factory_.AddSocketDataProvider(&socket_data); 1721 socket_factory_.AddSocketDataProvider(&socket_data);
1708 1722
1709 // Create request and QuicHttpStream. 1723 // Create request and QuicHttpStream.
1710 QuicStreamRequest request(factory_.get()); 1724 QuicStreamRequest request(factory_.get());
1711 EXPECT_EQ(ERR_IO_PENDING, 1725 EXPECT_EQ(ERR_IO_PENDING,
1712 request.Request(host_port_pair_, privacy_mode_, 1726 request.Request(host_port_pair_, privacy_mode_,
1713 /*cert_verify_flags=*/0, host_port_pair_.host(), 1727 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1714 "GET", net_log_, callback_.callback())); 1728 callback_.callback()));
1715 EXPECT_EQ(OK, callback_.WaitForResult()); 1729 EXPECT_EQ(OK, callback_.WaitForResult());
1716 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1730 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1717 EXPECT_TRUE(stream.get()); 1731 EXPECT_TRUE(stream.get());
1718 1732
1719 // Cause QUIC stream to be created. 1733 // Cause QUIC stream to be created.
1720 HttpRequestInfo request_info; 1734 HttpRequestInfo request_info;
1721 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1735 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1722 net_log_, CompletionCallback())); 1736 net_log_, CompletionCallback()));
1723 1737
1724 // Ensure that session is alive and active. 1738 // Ensure that session is alive and active.
(...skipping 30 matching lines...) Expand all
1755 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 1), 1769 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 1),
1756 }; 1770 };
1757 SequencedSocketData socket_data(reads, arraysize(reads), writes, 1771 SequencedSocketData socket_data(reads, arraysize(reads), writes,
1758 arraysize(writes)); 1772 arraysize(writes));
1759 socket_factory_.AddSocketDataProvider(&socket_data); 1773 socket_factory_.AddSocketDataProvider(&socket_data);
1760 1774
1761 // Create request and QuicHttpStream. 1775 // Create request and QuicHttpStream.
1762 QuicStreamRequest request(factory_.get()); 1776 QuicStreamRequest request(factory_.get());
1763 EXPECT_EQ(ERR_IO_PENDING, 1777 EXPECT_EQ(ERR_IO_PENDING,
1764 request.Request(host_port_pair_, privacy_mode_, 1778 request.Request(host_port_pair_, privacy_mode_,
1765 /*cert_verify_flags=*/0, host_port_pair_.host(), 1779 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1766 "GET", net_log_, callback_.callback())); 1780 callback_.callback()));
1767 EXPECT_EQ(OK, callback_.WaitForResult()); 1781 EXPECT_EQ(OK, callback_.WaitForResult());
1768 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1782 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1769 EXPECT_TRUE(stream.get()); 1783 EXPECT_TRUE(stream.get());
1770 1784
1771 // Cause QUIC stream to be created. 1785 // Cause QUIC stream to be created.
1772 HttpRequestInfo request_info; 1786 HttpRequestInfo request_info;
1773 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1787 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1774 net_log_, CompletionCallback())); 1788 net_log_, CompletionCallback()));
1775 1789
1776 // Ensure that session is alive and active. 1790 // Ensure that session is alive and active.
(...skipping 22 matching lines...) Expand all
1799 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1813 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1800 1814
1801 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1815 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1802 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); 1816 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u);
1803 socket_factory_.AddSocketDataProvider(&socket_data); 1817 socket_factory_.AddSocketDataProvider(&socket_data);
1804 1818
1805 // Create request and QuicHttpStream. 1819 // Create request and QuicHttpStream.
1806 QuicStreamRequest request(factory_.get()); 1820 QuicStreamRequest request(factory_.get());
1807 EXPECT_EQ(ERR_IO_PENDING, 1821 EXPECT_EQ(ERR_IO_PENDING,
1808 request.Request(host_port_pair_, privacy_mode_, 1822 request.Request(host_port_pair_, privacy_mode_,
1809 /*cert_verify_flags=*/0, host_port_pair_.host(), 1823 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1810 "GET", net_log_, callback_.callback())); 1824 callback_.callback()));
1811 EXPECT_EQ(OK, callback_.WaitForResult()); 1825 EXPECT_EQ(OK, callback_.WaitForResult());
1812 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1826 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1813 EXPECT_TRUE(stream.get()); 1827 EXPECT_TRUE(stream.get());
1814 1828
1815 // Ensure that session is alive and active. 1829 // Ensure that session is alive and active.
1816 QuicChromiumClientSession* session = 1830 QuicChromiumClientSession* session =
1817 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1831 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
1818 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1832 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1819 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1833 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1820 1834
(...skipping 16 matching lines...) Expand all
1837 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 1851 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
1838 1852
1839 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1853 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1840 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); 1854 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u);
1841 socket_factory_.AddSocketDataProvider(&socket_data); 1855 socket_factory_.AddSocketDataProvider(&socket_data);
1842 1856
1843 // Create request and QuicHttpStream. 1857 // Create request and QuicHttpStream.
1844 QuicStreamRequest request(factory_.get()); 1858 QuicStreamRequest request(factory_.get());
1845 EXPECT_EQ(ERR_IO_PENDING, 1859 EXPECT_EQ(ERR_IO_PENDING,
1846 request.Request(host_port_pair_, privacy_mode_, 1860 request.Request(host_port_pair_, privacy_mode_,
1847 /*cert_verify_flags=*/0, host_port_pair_.host(), 1861 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1848 "GET", net_log_, callback_.callback())); 1862 callback_.callback()));
1849 EXPECT_EQ(OK, callback_.WaitForResult()); 1863 EXPECT_EQ(OK, callback_.WaitForResult());
1850 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1864 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1851 EXPECT_TRUE(stream.get()); 1865 EXPECT_TRUE(stream.get());
1852 1866
1853 // Ensure that session is alive and active. 1867 // Ensure that session is alive and active.
1854 QuicChromiumClientSession* session = 1868 QuicChromiumClientSession* session =
1855 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1869 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
1856 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1870 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1857 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1871 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1858 1872
(...skipping 22 matching lines...) Expand all
1881 MockWrite writes[] = {MockWrite(SYNCHRONOUS, request_packet->data(), 1895 MockWrite writes[] = {MockWrite(SYNCHRONOUS, request_packet->data(),
1882 request_packet->length(), 1)}; 1896 request_packet->length(), 1)};
1883 SequencedSocketData socket_data(reads, arraysize(reads), writes, 1897 SequencedSocketData socket_data(reads, arraysize(reads), writes,
1884 arraysize(writes)); 1898 arraysize(writes));
1885 socket_factory_.AddSocketDataProvider(&socket_data); 1899 socket_factory_.AddSocketDataProvider(&socket_data);
1886 1900
1887 // Create request and QuicHttpStream. 1901 // Create request and QuicHttpStream.
1888 QuicStreamRequest request(factory_.get()); 1902 QuicStreamRequest request(factory_.get());
1889 EXPECT_EQ(ERR_IO_PENDING, 1903 EXPECT_EQ(ERR_IO_PENDING,
1890 request.Request(host_port_pair_, privacy_mode_, 1904 request.Request(host_port_pair_, privacy_mode_,
1891 /*cert_verify_flags=*/0, host_port_pair_.host(), 1905 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1892 "GET", net_log_, callback_.callback())); 1906 callback_.callback()));
1893 EXPECT_EQ(OK, callback_.WaitForResult()); 1907 EXPECT_EQ(OK, callback_.WaitForResult());
1894 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1908 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1895 EXPECT_TRUE(stream.get()); 1909 EXPECT_TRUE(stream.get());
1896 1910
1897 // Cause QUIC stream to be created. 1911 // Cause QUIC stream to be created.
1898 HttpRequestInfo request_info; 1912 HttpRequestInfo request_info;
1899 request_info.method = "GET"; 1913 request_info.method = "GET";
1900 request_info.url = GURL("https://www.example.org/"); 1914 request_info.url = GURL("https://www.example.org/");
1901 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1915 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1902 net_log_, CompletionCallback())); 1916 net_log_, CompletionCallback()));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1949 1963
1950 // Create a new request for the same destination and verify that a 1964 // Create a new request for the same destination and verify that a
1951 // new session is created. 1965 // new session is created.
1952 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1966 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1953 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 1967 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1954 socket_factory_.AddSocketDataProvider(&socket_data2); 1968 socket_factory_.AddSocketDataProvider(&socket_data2);
1955 1969
1956 QuicStreamRequest request2(factory_.get()); 1970 QuicStreamRequest request2(factory_.get());
1957 EXPECT_EQ(ERR_IO_PENDING, 1971 EXPECT_EQ(ERR_IO_PENDING,
1958 request2.Request(host_port_pair_, privacy_mode_, 1972 request2.Request(host_port_pair_, privacy_mode_,
1959 /*cert_verify_flags=*/0, host_port_pair_.host(), 1973 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1960 "GET", net_log_, callback_.callback())); 1974 callback_.callback()));
1961 EXPECT_EQ(OK, callback_.WaitForResult()); 1975 EXPECT_EQ(OK, callback_.WaitForResult());
1962 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 1976 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
1963 EXPECT_TRUE(stream2.get()); 1977 EXPECT_TRUE(stream2.get());
1964 1978
1965 EXPECT_TRUE( 1979 EXPECT_TRUE(
1966 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 1980 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
1967 QuicChromiumClientSession* new_session = 1981 QuicChromiumClientSession* new_session =
1968 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1982 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
1969 EXPECT_NE(session, new_session); 1983 EXPECT_NE(session, new_session);
1970 1984
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2004 MockWrite(SYNCHRONOUS, client_rst->data(), client_rst->length(), 1), 2018 MockWrite(SYNCHRONOUS, client_rst->data(), client_rst->length(), 1),
2005 }; 2019 };
2006 SequencedSocketData socket_data(reads, arraysize(reads), writes, 2020 SequencedSocketData socket_data(reads, arraysize(reads), writes,
2007 arraysize(writes)); 2021 arraysize(writes));
2008 socket_factory_.AddSocketDataProvider(&socket_data); 2022 socket_factory_.AddSocketDataProvider(&socket_data);
2009 2023
2010 // Create request and QuicHttpStream. 2024 // Create request and QuicHttpStream.
2011 QuicStreamRequest request(factory_.get()); 2025 QuicStreamRequest request(factory_.get());
2012 EXPECT_EQ(ERR_IO_PENDING, 2026 EXPECT_EQ(ERR_IO_PENDING,
2013 request.Request(host_port_pair_, privacy_mode_, 2027 request.Request(host_port_pair_, privacy_mode_,
2014 /*cert_verify_flags=*/0, host_port_pair_.host(), 2028 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2015 "GET", net_log_, callback_.callback())); 2029 callback_.callback()));
2016 EXPECT_EQ(OK, callback_.WaitForResult()); 2030 EXPECT_EQ(OK, callback_.WaitForResult());
2017 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2031 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
2018 EXPECT_TRUE(stream.get()); 2032 EXPECT_TRUE(stream.get());
2019 2033
2020 // Cause QUIC stream to be created. 2034 // Cause QUIC stream to be created.
2021 HttpRequestInfo request_info; 2035 HttpRequestInfo request_info;
2022 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2036 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2023 net_log_, CompletionCallback())); 2037 net_log_, CompletionCallback()));
2024 2038
2025 // Ensure that session is alive and active. 2039 // Ensure that session is alive and active.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2062 writes.size()); 2076 writes.size());
2063 socket_factory_.AddSocketDataProvider(&socket_data); 2077 socket_factory_.AddSocketDataProvider(&socket_data);
2064 2078
2065 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 2079 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
2066 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 2080 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
2067 socket_factory_.AddSocketDataProvider(&socket_data2); 2081 socket_factory_.AddSocketDataProvider(&socket_data2);
2068 2082
2069 QuicStreamRequest request(factory_.get()); 2083 QuicStreamRequest request(factory_.get());
2070 EXPECT_EQ(ERR_IO_PENDING, 2084 EXPECT_EQ(ERR_IO_PENDING,
2071 request.Request(host_port_pair_, privacy_mode_, 2085 request.Request(host_port_pair_, privacy_mode_,
2072 /*cert_verify_flags=*/0, host_port_pair_.host(), 2086 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2073 "GET", net_log_, callback_.callback())); 2087 callback_.callback()));
2074 2088
2075 EXPECT_EQ(OK, callback_.WaitForResult()); 2089 EXPECT_EQ(OK, callback_.WaitForResult());
2076 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2090 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
2077 HttpRequestInfo request_info; 2091 HttpRequestInfo request_info;
2078 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2092 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2079 net_log_, CompletionCallback())); 2093 net_log_, CompletionCallback()));
2080 2094
2081 factory_->OnSSLConfigChanged(); 2095 factory_->OnSSLConfigChanged();
2082 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, 2096 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED,
2083 stream->ReadResponseHeaders(callback_.callback())); 2097 stream->ReadResponseHeaders(callback_.callback()));
2084 EXPECT_FALSE(factory_->require_confirmation()); 2098 EXPECT_FALSE(factory_->require_confirmation());
2085 2099
2086 // Now attempting to request a stream to the same origin should create 2100 // Now attempting to request a stream to the same origin should create
2087 // a new session. 2101 // a new session.
2088 2102
2089 QuicStreamRequest request2(factory_.get()); 2103 QuicStreamRequest request2(factory_.get());
2090 EXPECT_EQ(ERR_IO_PENDING, 2104 EXPECT_EQ(ERR_IO_PENDING,
2091 request2.Request(host_port_pair_, privacy_mode_, 2105 request2.Request(host_port_pair_, privacy_mode_,
2092 /*cert_verify_flags=*/0, host_port_pair_.host(), 2106 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2093 "GET", net_log_, callback_.callback())); 2107 callback_.callback()));
2094 2108
2095 EXPECT_EQ(OK, callback_.WaitForResult()); 2109 EXPECT_EQ(OK, callback_.WaitForResult());
2096 stream = request2.ReleaseStream(); 2110 stream = request2.ReleaseStream();
2097 stream.reset(); // Will reset stream 3. 2111 stream.reset(); // Will reset stream 3.
2098 2112
2099 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2113 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2100 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2114 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2101 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 2115 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
2102 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 2116 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
2103 } 2117 }
(...skipping 13 matching lines...) Expand all
2117 writes.size()); 2131 writes.size());
2118 socket_factory_.AddSocketDataProvider(&socket_data); 2132 socket_factory_.AddSocketDataProvider(&socket_data);
2119 2133
2120 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 2134 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
2121 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 2135 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
2122 socket_factory_.AddSocketDataProvider(&socket_data2); 2136 socket_factory_.AddSocketDataProvider(&socket_data2);
2123 2137
2124 QuicStreamRequest request(factory_.get()); 2138 QuicStreamRequest request(factory_.get());
2125 EXPECT_EQ(ERR_IO_PENDING, 2139 EXPECT_EQ(ERR_IO_PENDING,
2126 request.Request(host_port_pair_, privacy_mode_, 2140 request.Request(host_port_pair_, privacy_mode_,
2127 /*cert_verify_flags=*/0, host_port_pair_.host(), 2141 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2128 "GET", net_log_, callback_.callback())); 2142 callback_.callback()));
2129 2143
2130 EXPECT_EQ(OK, callback_.WaitForResult()); 2144 EXPECT_EQ(OK, callback_.WaitForResult());
2131 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2145 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
2132 HttpRequestInfo request_info; 2146 HttpRequestInfo request_info;
2133 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2147 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2134 net_log_, CompletionCallback())); 2148 net_log_, CompletionCallback()));
2135 2149
2136 // Add a cert and verify that stream saw the event. 2150 // Add a cert and verify that stream saw the event.
2137 factory_->OnCertAdded(nullptr); 2151 factory_->OnCertAdded(nullptr);
2138 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, 2152 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED,
2139 stream->ReadResponseHeaders(callback_.callback())); 2153 stream->ReadResponseHeaders(callback_.callback()));
2140 EXPECT_FALSE(factory_->require_confirmation()); 2154 EXPECT_FALSE(factory_->require_confirmation());
2141 2155
2142 // Now attempting to request a stream to the same origin should create 2156 // Now attempting to request a stream to the same origin should create
2143 // a new session. 2157 // a new session.
2144 2158
2145 QuicStreamRequest request2(factory_.get()); 2159 QuicStreamRequest request2(factory_.get());
2146 EXPECT_EQ(ERR_IO_PENDING, 2160 EXPECT_EQ(ERR_IO_PENDING,
2147 request2.Request(host_port_pair_, privacy_mode_, 2161 request2.Request(host_port_pair_, privacy_mode_,
2148 /*cert_verify_flags=*/0, host_port_pair_.host(), 2162 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2149 "GET", net_log_, callback_.callback())); 2163 callback_.callback()));
2150 2164
2151 EXPECT_EQ(OK, callback_.WaitForResult()); 2165 EXPECT_EQ(OK, callback_.WaitForResult());
2152 stream = request2.ReleaseStream(); 2166 stream = request2.ReleaseStream();
2153 stream.reset(); // Will reset stream 3. 2167 stream.reset(); // Will reset stream 3.
2154 2168
2155 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2169 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2156 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2170 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2157 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 2171 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
2158 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 2172 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
2159 } 2173 }
(...skipping 13 matching lines...) Expand all
2173 writes.size()); 2187 writes.size());
2174 socket_factory_.AddSocketDataProvider(&socket_data); 2188 socket_factory_.AddSocketDataProvider(&socket_data);
2175 2189
2176 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 2190 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
2177 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 2191 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
2178 socket_factory_.AddSocketDataProvider(&socket_data2); 2192 socket_factory_.AddSocketDataProvider(&socket_data2);
2179 2193
2180 QuicStreamRequest request(factory_.get()); 2194 QuicStreamRequest request(factory_.get());
2181 EXPECT_EQ(ERR_IO_PENDING, 2195 EXPECT_EQ(ERR_IO_PENDING,
2182 request.Request(host_port_pair_, privacy_mode_, 2196 request.Request(host_port_pair_, privacy_mode_,
2183 /*cert_verify_flags=*/0, host_port_pair_.host(), 2197 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2184 "GET", net_log_, callback_.callback())); 2198 callback_.callback()));
2185 2199
2186 EXPECT_EQ(OK, callback_.WaitForResult()); 2200 EXPECT_EQ(OK, callback_.WaitForResult());
2187 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2201 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
2188 HttpRequestInfo request_info; 2202 HttpRequestInfo request_info;
2189 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2203 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2190 net_log_, CompletionCallback())); 2204 net_log_, CompletionCallback()));
2191 2205
2192 // Change the CA cert and verify that stream saw the event. 2206 // Change the CA cert and verify that stream saw the event.
2193 factory_->OnCACertChanged(nullptr); 2207 factory_->OnCACertChanged(nullptr);
2194 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, 2208 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED,
2195 stream->ReadResponseHeaders(callback_.callback())); 2209 stream->ReadResponseHeaders(callback_.callback()));
2196 EXPECT_FALSE(factory_->require_confirmation()); 2210 EXPECT_FALSE(factory_->require_confirmation());
2197 2211
2198 // Now attempting to request a stream to the same origin should create 2212 // Now attempting to request a stream to the same origin should create
2199 // a new session. 2213 // a new session.
2200 2214
2201 QuicStreamRequest request2(factory_.get()); 2215 QuicStreamRequest request2(factory_.get());
2202 EXPECT_EQ(ERR_IO_PENDING, 2216 EXPECT_EQ(ERR_IO_PENDING,
2203 request2.Request(host_port_pair_, privacy_mode_, 2217 request2.Request(host_port_pair_, privacy_mode_,
2204 /*cert_verify_flags=*/0, host_port_pair_.host(), 2218 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2205 "GET", net_log_, callback_.callback())); 2219 callback_.callback()));
2206 2220
2207 EXPECT_EQ(OK, callback_.WaitForResult()); 2221 EXPECT_EQ(OK, callback_.WaitForResult());
2208 stream = request2.ReleaseStream(); 2222 stream = request2.ReleaseStream();
2209 stream.reset(); // Will reset stream 3. 2223 stream.reset(); // Will reset stream 3.
2210 2224
2211 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2225 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2212 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2226 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2213 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 2227 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
2214 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 2228 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
2215 } 2229 }
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
2318 crypto_client_stream_factory_.set_handshake_mode( 2332 crypto_client_stream_factory_.set_handshake_mode(
2319 MockCryptoClientStream::ZERO_RTT); 2333 MockCryptoClientStream::ZERO_RTT);
2320 host_resolver_.set_synchronous_mode(true); 2334 host_resolver_.set_synchronous_mode(true);
2321 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2335 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2322 "192.168.0.1", ""); 2336 "192.168.0.1", "");
2323 2337
2324 QuicStreamRequest request(factory_.get()); 2338 QuicStreamRequest request(factory_.get());
2325 QuicServerId server_id(host_port_pair_, privacy_mode_); 2339 QuicServerId server_id(host_port_pair_, privacy_mode_);
2326 EXPECT_EQ(ERR_IO_PENDING, 2340 EXPECT_EQ(ERR_IO_PENDING,
2327 request.Request(host_port_pair_, privacy_mode_, 2341 request.Request(host_port_pair_, privacy_mode_,
2328 /*cert_verify_flags=*/0, host_port_pair_.host(), 2342 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2329 "GET", net_log_, callback_.callback())); 2343 callback_.callback()));
2330 EXPECT_EQ(2u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(), 2344 EXPECT_EQ(2u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(),
2331 server_id)); 2345 server_id));
2332 2346
2333 runner_->RunNextTask(); 2347 runner_->RunNextTask();
2334 2348
2335 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2349 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
2336 EXPECT_TRUE(stream.get()); 2350 EXPECT_TRUE(stream.get());
2337 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2351 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2338 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2352 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2339 EXPECT_EQ(0u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(), 2353 EXPECT_EQ(0u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(),
(...skipping 13 matching lines...) Expand all
2353 socket_factory_.AddSocketDataProvider(&socket_data); 2367 socket_factory_.AddSocketDataProvider(&socket_data);
2354 2368
2355 crypto_client_stream_factory_.set_handshake_mode( 2369 crypto_client_stream_factory_.set_handshake_mode(
2356 MockCryptoClientStream::ZERO_RTT); 2370 MockCryptoClientStream::ZERO_RTT);
2357 host_resolver_.set_synchronous_mode(true); 2371 host_resolver_.set_synchronous_mode(true);
2358 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2372 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2359 "192.168.0.1", ""); 2373 "192.168.0.1", "");
2360 2374
2361 QuicStreamRequest request(factory_.get()); 2375 QuicStreamRequest request(factory_.get());
2362 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 2376 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
2363 /*cert_verify_flags=*/0, host_port_pair_.host(), 2377 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2364 "GET", net_log_, callback_.callback())); 2378 callback_.callback()));
2365 2379
2366 // If we are waiting for disk cache, we would have posted a task. Verify that 2380 // If we are waiting for disk cache, we would have posted a task. Verify that
2367 // the CancelWaitForDataReady task hasn't been posted. 2381 // the CancelWaitForDataReady task hasn't been posted.
2368 ASSERT_EQ(0u, runner_->GetPostedTasks().size()); 2382 ASSERT_EQ(0u, runner_->GetPostedTasks().size());
2369 2383
2370 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2384 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
2371 EXPECT_TRUE(stream.get()); 2385 EXPECT_TRUE(stream.get());
2372 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2386 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2373 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2387 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2374 } 2388 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2411 MockCryptoClientStream::ZERO_RTT); 2425 MockCryptoClientStream::ZERO_RTT);
2412 host_resolver_.set_synchronous_mode(true); 2426 host_resolver_.set_synchronous_mode(true);
2413 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2427 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2414 "192.168.0.1", ""); 2428 "192.168.0.1", "");
2415 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 2429 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
2416 host_resolver_.rules()->AddIPLiteralRule(server3.host(), "192.168.0.1", ""); 2430 host_resolver_.rules()->AddIPLiteralRule(server3.host(), "192.168.0.1", "");
2417 host_resolver_.rules()->AddIPLiteralRule(server4.host(), "192.168.0.1", ""); 2431 host_resolver_.rules()->AddIPLiteralRule(server4.host(), "192.168.0.1", "");
2418 2432
2419 QuicStreamRequest request(factory_.get()); 2433 QuicStreamRequest request(factory_.get());
2420 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 2434 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
2421 /*cert_verify_flags=*/0, host_port_pair_.host(), 2435 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2422 "GET", net_log_, callback_.callback())); 2436 callback_.callback()));
2423 2437
2424 QuicChromiumClientSession* session = 2438 QuicChromiumClientSession* session =
2425 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 2439 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
2426 2440
2427 DVLOG(1) << "Create 1st session and test packet loss"; 2441 DVLOG(1) << "Create 1st session and test packet loss";
2428 2442
2429 // Set packet_loss_rate to a lower value than packet_loss_threshold. 2443 // Set packet_loss_rate to a lower value than packet_loss_threshold.
2430 EXPECT_FALSE( 2444 EXPECT_FALSE(
2431 factory_->OnHandshakeConfirmed(session, /*packet_loss_rate=*/0.9f)); 2445 factory_->OnHandshakeConfirmed(session, /*packet_loss_rate=*/0.9f));
2432 EXPECT_TRUE(session->connection()->connected()); 2446 EXPECT_TRUE(session->connection()->connected());
(...skipping 16 matching lines...) Expand all
2449 EXPECT_TRUE( 2463 EXPECT_TRUE(
2450 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 2464 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
2451 2465
2452 // Test N-in-a-row high packet loss connections. 2466 // Test N-in-a-row high packet loss connections.
2453 2467
2454 DVLOG(1) << "Create 2nd session and test packet loss"; 2468 DVLOG(1) << "Create 2nd session and test packet loss";
2455 2469
2456 TestCompletionCallback callback2; 2470 TestCompletionCallback callback2;
2457 QuicStreamRequest request2(factory_.get()); 2471 QuicStreamRequest request2(factory_.get());
2458 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 2472 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
2459 /*cert_verify_flags=*/0, server2.host(), "GET", 2473 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2460 net_log_, callback2.callback())); 2474 callback2.callback()));
2461 QuicChromiumClientSession* session2 = 2475 QuicChromiumClientSession* session2 =
2462 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2); 2476 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2);
2463 2477
2464 // If there is no packet loss during handshake confirmation, number of lossy 2478 // If there is no packet loss during handshake confirmation, number of lossy
2465 // connections for the port should be 0. 2479 // connections for the port should be 0.
2466 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumberOfLossyConnections( 2480 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumberOfLossyConnections(
2467 factory_.get(), server2.port())); 2481 factory_.get(), server2.port()));
2468 EXPECT_FALSE( 2482 EXPECT_FALSE(
2469 factory_->OnHandshakeConfirmed(session2, /*packet_loss_rate=*/0.9f)); 2483 factory_->OnHandshakeConfirmed(session2, /*packet_loss_rate=*/0.9f));
2470 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections( 2484 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections(
(...skipping 10 matching lines...) Expand all
2481 EXPECT_TRUE(session2->connection()->connected()); 2495 EXPECT_TRUE(session2->connection()->connected());
2482 EXPECT_FALSE( 2496 EXPECT_FALSE(
2483 QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), server2.port())); 2497 QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), server2.port()));
2484 EXPECT_TRUE(QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2)); 2498 EXPECT_TRUE(QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2));
2485 2499
2486 DVLOG(1) << "Create 3rd session which also has packet loss"; 2500 DVLOG(1) << "Create 3rd session which also has packet loss";
2487 2501
2488 TestCompletionCallback callback3; 2502 TestCompletionCallback callback3;
2489 QuicStreamRequest request3(factory_.get()); 2503 QuicStreamRequest request3(factory_.get());
2490 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_, 2504 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_,
2491 /*cert_verify_flags=*/0, server3.host(), "GET", 2505 /*cert_verify_flags=*/0, url3_, "GET",
2492 net_log_, callback3.callback())); 2506 net_log_, callback3.callback()));
2493 QuicChromiumClientSession* session3 = 2507 QuicChromiumClientSession* session3 =
2494 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3); 2508 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3);
2495 2509
2496 DVLOG(1) << "Create 4th session with packet loss and test IsQuicDisabled()"; 2510 DVLOG(1) << "Create 4th session with packet loss and test IsQuicDisabled()";
2497 TestCompletionCallback callback4; 2511 TestCompletionCallback callback4;
2498 QuicStreamRequest request4(factory_.get()); 2512 QuicStreamRequest request4(factory_.get());
2499 EXPECT_EQ(OK, request4.Request(server4, privacy_mode_, 2513 EXPECT_EQ(OK, request4.Request(server4, privacy_mode_,
2500 /*cert_verify_flags=*/0, server4.host(), "GET", 2514 /*cert_verify_flags=*/0, url4_, "GET",
2501 net_log_, callback4.callback())); 2515 net_log_, callback4.callback()));
2502 QuicChromiumClientSession* session4 = 2516 QuicChromiumClientSession* session4 =
2503 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server4); 2517 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server4);
2504 2518
2505 // Set packet_loss_rate to higher value than packet_loss_threshold 2nd time in 2519 // Set packet_loss_rate to higher value than packet_loss_threshold 2nd time in
2506 // a row and that should close the session and disable QUIC. 2520 // a row and that should close the session and disable QUIC.
2507 EXPECT_TRUE( 2521 EXPECT_TRUE(
2508 factory_->OnHandshakeConfirmed(session3, /*packet_loss_rate=*/1.0f)); 2522 factory_->OnHandshakeConfirmed(session3, /*packet_loss_rate=*/1.0f));
2509 EXPECT_EQ(2, QuicStreamFactoryPeer::GetNumberOfLossyConnections( 2523 EXPECT_EQ(2, QuicStreamFactoryPeer::GetNumberOfLossyConnections(
2510 factory_.get(), server3.port())); 2524 factory_.get(), server3.port()));
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2571 2585
2572 crypto_client_stream_factory_.set_handshake_mode( 2586 crypto_client_stream_factory_.set_handshake_mode(
2573 MockCryptoClientStream::CONFIRM_HANDSHAKE); 2587 MockCryptoClientStream::CONFIRM_HANDSHAKE);
2574 host_resolver_.set_synchronous_mode(true); 2588 host_resolver_.set_synchronous_mode(true);
2575 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2589 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2576 "192.168.0.1", ""); 2590 "192.168.0.1", "");
2577 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 2591 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
2578 2592
2579 QuicStreamRequest request(factory_.get()); 2593 QuicStreamRequest request(factory_.get());
2580 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 2594 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
2581 /*cert_verify_flags=*/0, host_port_pair_.host(), 2595 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2582 "GET", net_log_, callback_.callback())); 2596 callback_.callback()));
2583 2597
2584 QuicChromiumClientSession* session = 2598 QuicChromiumClientSession* session =
2585 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 2599 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
2586 2600
2587 DVLOG(1) << "Created 1st session. Now trigger public reset post handshake"; 2601 DVLOG(1) << "Created 1st session. Now trigger public reset post handshake";
2588 session->connection()->CloseConnection(QUIC_PUBLIC_RESET, 2602 session->connection()->CloseConnection(QUIC_PUBLIC_RESET,
2589 ConnectionCloseSource::FROM_PEER); 2603 ConnectionCloseSource::FROM_PEER);
2590 // Need to spin the loop now to ensure that 2604 // Need to spin the loop now to ensure that
2591 // QuicStreamFactory::OnSessionClosed() runs. 2605 // QuicStreamFactory::OnSessionClosed() runs.
2592 base::RunLoop run_loop; 2606 base::RunLoop run_loop;
2593 run_loop.RunUntilIdle(); 2607 run_loop.RunUntilIdle();
2594 2608
2595 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( 2609 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake(
2596 factory_.get())); 2610 factory_.get()));
2597 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2611 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2598 host_port_pair_.port())); 2612 host_port_pair_.port()));
2599 2613
2600 // Test two-in-a-row public reset post handshakes.. 2614 // Test two-in-a-row public reset post handshakes..
2601 DVLOG(1) << "Create 2nd session and trigger public reset post handshake"; 2615 DVLOG(1) << "Create 2nd session and trigger public reset post handshake";
2602 TestCompletionCallback callback2; 2616 TestCompletionCallback callback2;
2603 QuicStreamRequest request2(factory_.get()); 2617 QuicStreamRequest request2(factory_.get());
2604 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 2618 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
2605 /*cert_verify_flags=*/0, server2.host(), "GET", 2619 /*cert_verify_flags=*/0, url2_, "GET",
2606 net_log_, callback2.callback())); 2620 net_log_, callback2.callback()));
2607 QuicChromiumClientSession* session2 = 2621 QuicChromiumClientSession* session2 =
2608 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2); 2622 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2);
2609 2623
2610 session2->connection()->CloseConnection(QUIC_PUBLIC_RESET, 2624 session2->connection()->CloseConnection(QUIC_PUBLIC_RESET,
2611 ConnectionCloseSource::FROM_PEER); 2625 ConnectionCloseSource::FROM_PEER);
2612 // Need to spin the loop now to ensure that 2626 // Need to spin the loop now to ensure that
2613 // QuicStreamFactory::OnSessionClosed() runs. 2627 // QuicStreamFactory::OnSessionClosed() runs.
2614 base::RunLoop run_loop2; 2628 base::RunLoop run_loop2;
2615 run_loop2.RunUntilIdle(); 2629 run_loop2.RunUntilIdle();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
2656 2670
2657 crypto_client_stream_factory_.set_handshake_mode( 2671 crypto_client_stream_factory_.set_handshake_mode(
2658 MockCryptoClientStream::CONFIRM_HANDSHAKE); 2672 MockCryptoClientStream::CONFIRM_HANDSHAKE);
2659 host_resolver_.set_synchronous_mode(true); 2673 host_resolver_.set_synchronous_mode(true);
2660 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2674 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2661 "192.168.0.1", ""); 2675 "192.168.0.1", "");
2662 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 2676 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
2663 2677
2664 QuicStreamRequest request(factory_.get()); 2678 QuicStreamRequest request(factory_.get());
2665 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 2679 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
2666 /*cert_verify_flags=*/0, host_port_pair_.host(), 2680 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2667 "GET", net_log_, callback_.callback())); 2681 callback_.callback()));
2668 2682
2669 QuicChromiumClientSession* session = 2683 QuicChromiumClientSession* session =
2670 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 2684 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
2671 2685
2672 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2686 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
2673 EXPECT_TRUE(stream.get()); 2687 EXPECT_TRUE(stream.get());
2674 HttpRequestInfo request_info; 2688 HttpRequestInfo request_info;
2675 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2689 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2676 net_log_, CompletionCallback())); 2690 net_log_, CompletionCallback()));
2677 2691
2678 DVLOG(1) 2692 DVLOG(1)
2679 << "Created 1st session and initialized a stream. Now trigger timeout"; 2693 << "Created 1st session and initialized a stream. Now trigger timeout";
2680 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 2694 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
2681 ConnectionCloseSource::FROM_SELF); 2695 ConnectionCloseSource::FROM_SELF);
2682 // Need to spin the loop now to ensure that 2696 // Need to spin the loop now to ensure that
2683 // QuicStreamFactory::OnSessionClosed() runs. 2697 // QuicStreamFactory::OnSessionClosed() runs.
2684 base::RunLoop run_loop; 2698 base::RunLoop run_loop;
2685 run_loop.RunUntilIdle(); 2699 run_loop.RunUntilIdle();
2686 2700
2687 EXPECT_EQ( 2701 EXPECT_EQ(
2688 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); 2702 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get()));
2689 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2703 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2690 host_port_pair_.port())); 2704 host_port_pair_.port()));
2691 2705
2692 // Test two-in-a-row timeouts with open streams. 2706 // Test two-in-a-row timeouts with open streams.
2693 DVLOG(1) << "Create 2nd session and timeout with open stream"; 2707 DVLOG(1) << "Create 2nd session and timeout with open stream";
2694 TestCompletionCallback callback2; 2708 TestCompletionCallback callback2;
2695 QuicStreamRequest request2(factory_.get()); 2709 QuicStreamRequest request2(factory_.get());
2696 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 2710 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
2697 /*cert_verify_flags=*/0, server2.host(), "GET", 2711 /*cert_verify_flags=*/0, url2_, "GET",
2698 net_log_, callback2.callback())); 2712 net_log_, callback2.callback()));
2699 QuicChromiumClientSession* session2 = 2713 QuicChromiumClientSession* session2 =
2700 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2); 2714 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2);
2701 2715
2702 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 2716 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
2703 EXPECT_TRUE(stream2.get()); 2717 EXPECT_TRUE(stream2.get());
2704 EXPECT_EQ(OK, stream2->InitializeStream(&request_info, DEFAULT_PRIORITY, 2718 EXPECT_EQ(OK, stream2->InitializeStream(&request_info, DEFAULT_PRIORITY,
2705 net_log_, CompletionCallback())); 2719 net_log_, CompletionCallback()));
2706 2720
2707 session2->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 2721 session2->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2754 MockCryptoClientStream::CONFIRM_HANDSHAKE); 2768 MockCryptoClientStream::CONFIRM_HANDSHAKE);
2755 host_resolver_.set_synchronous_mode(true); 2769 host_resolver_.set_synchronous_mode(true);
2756 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2770 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2757 "192.168.0.1", ""); 2771 "192.168.0.1", "");
2758 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 2772 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
2759 host_resolver_.rules()->AddIPLiteralRule(server3.host(), "192.168.0.1", ""); 2773 host_resolver_.rules()->AddIPLiteralRule(server3.host(), "192.168.0.1", "");
2760 2774
2761 // Test first and third out of three public reset post handshakes. 2775 // Test first and third out of three public reset post handshakes.
2762 QuicStreamRequest request(factory_.get()); 2776 QuicStreamRequest request(factory_.get());
2763 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 2777 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
2764 /*cert_verify_flags=*/0, host_port_pair_.host(), 2778 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2765 "GET", net_log_, callback_.callback())); 2779 callback_.callback()));
2766 2780
2767 QuicChromiumClientSession* session = 2781 QuicChromiumClientSession* session =
2768 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 2782 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
2769 2783
2770 DVLOG(1) << "Created 1st session. Now trigger public reset post handshake"; 2784 DVLOG(1) << "Created 1st session. Now trigger public reset post handshake";
2771 session->connection()->CloseConnection(QUIC_PUBLIC_RESET, 2785 session->connection()->CloseConnection(QUIC_PUBLIC_RESET,
2772 ConnectionCloseSource::FROM_PEER); 2786 ConnectionCloseSource::FROM_PEER);
2773 // Need to spin the loop now to ensure that 2787 // Need to spin the loop now to ensure that
2774 // QuicStreamFactory::OnSessionClosed() runs. 2788 // QuicStreamFactory::OnSessionClosed() runs.
2775 base::RunLoop run_loop; 2789 base::RunLoop run_loop;
2776 run_loop.RunUntilIdle(); 2790 run_loop.RunUntilIdle();
2777 2791
2778 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( 2792 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake(
2779 factory_.get())); 2793 factory_.get()));
2780 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2794 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2781 host_port_pair_.port())); 2795 host_port_pair_.port()));
2782 2796
2783 DVLOG(1) << "Create 2nd session without disable trigger"; 2797 DVLOG(1) << "Create 2nd session without disable trigger";
2784 TestCompletionCallback callback2; 2798 TestCompletionCallback callback2;
2785 QuicStreamRequest request2(factory_.get()); 2799 QuicStreamRequest request2(factory_.get());
2786 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 2800 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
2787 /*cert_verify_flags=*/0, server2.host(), "GET", 2801 /*cert_verify_flags=*/0, url2_, "GET",
2788 net_log_, callback2.callback())); 2802 net_log_, callback2.callback()));
2789 QuicChromiumClientSession* session2 = 2803 QuicChromiumClientSession* session2 =
2790 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2); 2804 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2);
2791 2805
2792 session2->connection()->CloseConnection(QUIC_NO_ERROR, 2806 session2->connection()->CloseConnection(QUIC_NO_ERROR,
2793 ConnectionCloseSource::FROM_SELF); 2807 ConnectionCloseSource::FROM_SELF);
2794 // Need to spin the loop now to ensure that 2808 // Need to spin the loop now to ensure that
2795 // QuicStreamFactory::OnSessionClosed() runs. 2809 // QuicStreamFactory::OnSessionClosed() runs.
2796 base::RunLoop run_loop2; 2810 base::RunLoop run_loop2;
2797 run_loop2.RunUntilIdle(); 2811 run_loop2.RunUntilIdle();
2798 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( 2812 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake(
2799 factory_.get())); 2813 factory_.get()));
2800 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2814 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2801 host_port_pair_.port())); 2815 host_port_pair_.port()));
2802 2816
2803 DVLOG(1) << "Create 3rd session with public reset post handshake," 2817 DVLOG(1) << "Create 3rd session with public reset post handshake,"
2804 << " will disable QUIC"; 2818 << " will disable QUIC";
2805 TestCompletionCallback callback3; 2819 TestCompletionCallback callback3;
2806 QuicStreamRequest request3(factory_.get()); 2820 QuicStreamRequest request3(factory_.get());
2807 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_, 2821 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_,
2808 /*cert_verify_flags=*/0, server3.host(), "GET", 2822 /*cert_verify_flags=*/0, url2_, "GET",
2809 net_log_, callback3.callback())); 2823 net_log_, callback3.callback()));
2810 QuicChromiumClientSession* session3 = 2824 QuicChromiumClientSession* session3 =
2811 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3); 2825 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3);
2812 2826
2813 session3->connection()->CloseConnection(QUIC_PUBLIC_RESET, 2827 session3->connection()->CloseConnection(QUIC_PUBLIC_RESET,
2814 ConnectionCloseSource::FROM_PEER); 2828 ConnectionCloseSource::FROM_PEER);
2815 // Need to spin the loop now to ensure that 2829 // Need to spin the loop now to ensure that
2816 // QuicStreamFactory::OnSessionClosed() runs. 2830 // QuicStreamFactory::OnSessionClosed() runs.
2817 base::RunLoop run_loop3; 2831 base::RunLoop run_loop3;
2818 run_loop3.RunUntilIdle(); 2832 run_loop3.RunUntilIdle();
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
2872 MockCryptoClientStream::CONFIRM_HANDSHAKE); 2886 MockCryptoClientStream::CONFIRM_HANDSHAKE);
2873 host_resolver_.set_synchronous_mode(true); 2887 host_resolver_.set_synchronous_mode(true);
2874 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2888 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2875 "192.168.0.1", ""); 2889 "192.168.0.1", "");
2876 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 2890 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
2877 host_resolver_.rules()->AddIPLiteralRule(server3.host(), "192.168.0.1", ""); 2891 host_resolver_.rules()->AddIPLiteralRule(server3.host(), "192.168.0.1", "");
2878 2892
2879 // Test first and third out of three timeouts with open streams. 2893 // Test first and third out of three timeouts with open streams.
2880 QuicStreamRequest request(factory_.get()); 2894 QuicStreamRequest request(factory_.get());
2881 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 2895 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
2882 /*cert_verify_flags=*/0, host_port_pair_.host(), 2896 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2883 "GET", net_log_, callback_.callback())); 2897 callback_.callback()));
2884 2898
2885 QuicChromiumClientSession* session = 2899 QuicChromiumClientSession* session =
2886 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 2900 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
2887 2901
2888 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2902 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
2889 EXPECT_TRUE(stream.get()); 2903 EXPECT_TRUE(stream.get());
2890 HttpRequestInfo request_info; 2904 HttpRequestInfo request_info;
2891 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2905 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2892 net_log_, CompletionCallback())); 2906 net_log_, CompletionCallback()));
2893 2907
2894 DVLOG(1) 2908 DVLOG(1)
2895 << "Created 1st session and initialized a stream. Now trigger timeout"; 2909 << "Created 1st session and initialized a stream. Now trigger timeout";
2896 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 2910 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
2897 ConnectionCloseSource::FROM_SELF); 2911 ConnectionCloseSource::FROM_SELF);
2898 // Need to spin the loop now to ensure that 2912 // Need to spin the loop now to ensure that
2899 // QuicStreamFactory::OnSessionClosed() runs. 2913 // QuicStreamFactory::OnSessionClosed() runs.
2900 base::RunLoop run_loop; 2914 base::RunLoop run_loop;
2901 run_loop.RunUntilIdle(); 2915 run_loop.RunUntilIdle();
2902 2916
2903 EXPECT_EQ( 2917 EXPECT_EQ(
2904 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); 2918 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get()));
2905 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2919 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2906 host_port_pair_.port())); 2920 host_port_pair_.port()));
2907 2921
2908 // Test two-in-a-row timeouts with open streams. 2922 // Test two-in-a-row timeouts with open streams.
2909 DVLOG(1) << "Create 2nd session without timeout"; 2923 DVLOG(1) << "Create 2nd session without timeout";
2910 TestCompletionCallback callback2; 2924 TestCompletionCallback callback2;
2911 QuicStreamRequest request2(factory_.get()); 2925 QuicStreamRequest request2(factory_.get());
2912 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 2926 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
2913 /*cert_verify_flags=*/0, server2.host(), "GET", 2927 /*cert_verify_flags=*/0, url2_, "GET",
2914 net_log_, callback2.callback())); 2928 net_log_, callback2.callback()));
2915 QuicChromiumClientSession* session2 = 2929 QuicChromiumClientSession* session2 =
2916 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2); 2930 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2);
2917 2931
2918 session2->connection()->CloseConnection(QUIC_NO_ERROR, 2932 session2->connection()->CloseConnection(QUIC_NO_ERROR,
2919 ConnectionCloseSource::FROM_PEER); 2933 ConnectionCloseSource::FROM_PEER);
2920 // Need to spin the loop now to ensure that 2934 // Need to spin the loop now to ensure that
2921 // QuicStreamFactory::OnSessionClosed() runs. 2935 // QuicStreamFactory::OnSessionClosed() runs.
2922 base::RunLoop run_loop2; 2936 base::RunLoop run_loop2;
2923 run_loop2.RunUntilIdle(); 2937 run_loop2.RunUntilIdle();
2924 EXPECT_EQ( 2938 EXPECT_EQ(
2925 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); 2939 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get()));
2926 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2940 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2927 host_port_pair_.port())); 2941 host_port_pair_.port()));
2928 2942
2929 DVLOG(1) << "Create 3rd session with timeout with open streams," 2943 DVLOG(1) << "Create 3rd session with timeout with open streams,"
2930 << " will disable QUIC"; 2944 << " will disable QUIC";
2931 2945
2932 TestCompletionCallback callback3; 2946 TestCompletionCallback callback3;
2933 QuicStreamRequest request3(factory_.get()); 2947 QuicStreamRequest request3(factory_.get());
2934 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_, 2948 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_,
2935 /*cert_verify_flags=*/0, server3.host(), "GET", 2949 /*cert_verify_flags=*/0, url3_, "GET",
2936 net_log_, callback3.callback())); 2950 net_log_, callback3.callback()));
2937 QuicChromiumClientSession* session3 = 2951 QuicChromiumClientSession* session3 =
2938 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3); 2952 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3);
2939 2953
2940 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); 2954 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream();
2941 EXPECT_TRUE(stream3.get()); 2955 EXPECT_TRUE(stream3.get());
2942 EXPECT_EQ(OK, stream3->InitializeStream(&request_info, DEFAULT_PRIORITY, 2956 EXPECT_EQ(OK, stream3->InitializeStream(&request_info, DEFAULT_PRIORITY,
2943 net_log_, CompletionCallback())); 2957 net_log_, CompletionCallback()));
2944 session3->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 2958 session3->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
2945 ConnectionCloseSource::FROM_SELF); 2959 ConnectionCloseSource::FROM_SELF);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2983 2997
2984 crypto_client_stream_factory_.set_handshake_mode( 2998 crypto_client_stream_factory_.set_handshake_mode(
2985 MockCryptoClientStream::CONFIRM_HANDSHAKE); 2999 MockCryptoClientStream::CONFIRM_HANDSHAKE);
2986 host_resolver_.set_synchronous_mode(true); 3000 host_resolver_.set_synchronous_mode(true);
2987 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 3001 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2988 "192.168.0.1", ""); 3002 "192.168.0.1", "");
2989 3003
2990 // Test first timeouts with open streams will disable QUIC. 3004 // Test first timeouts with open streams will disable QUIC.
2991 QuicStreamRequest request(factory_.get()); 3005 QuicStreamRequest request(factory_.get());
2992 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 3006 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
2993 /*cert_verify_flags=*/0, host_port_pair_.host(), 3007 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2994 "GET", net_log_, callback_.callback())); 3008 callback_.callback()));
2995 3009
2996 QuicChromiumClientSession* session = 3010 QuicChromiumClientSession* session =
2997 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 3011 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
2998 3012
2999 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 3013 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
3000 EXPECT_TRUE(stream.get()); 3014 EXPECT_TRUE(stream.get());
3001 HttpRequestInfo request_info; 3015 HttpRequestInfo request_info;
3002 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3016 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3003 net_log_, CompletionCallback())); 3017 net_log_, CompletionCallback()));
3004 3018
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
3062 host_resolver_.set_synchronous_mode(true); 3076 host_resolver_.set_synchronous_mode(true);
3063 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 3077 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
3064 "192.168.0.1", ""); 3078 "192.168.0.1", "");
3065 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 3079 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
3066 host_resolver_.rules()->AddIPLiteralRule(server3.host(), "192.168.0.1", ""); 3080 host_resolver_.rules()->AddIPLiteralRule(server3.host(), "192.168.0.1", "");
3067 host_resolver_.rules()->AddIPLiteralRule(server4.host(), "192.168.0.1", ""); 3081 host_resolver_.rules()->AddIPLiteralRule(server4.host(), "192.168.0.1", "");
3068 3082
3069 // Test first and fourth out of four public reset post handshakes. 3083 // Test first and fourth out of four public reset post handshakes.
3070 QuicStreamRequest request(factory_.get()); 3084 QuicStreamRequest request(factory_.get());
3071 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 3085 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
3072 /*cert_verify_flags=*/0, host_port_pair_.host(), 3086 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3073 "GET", net_log_, callback_.callback())); 3087 callback_.callback()));
3074 3088
3075 QuicChromiumClientSession* session = 3089 QuicChromiumClientSession* session =
3076 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 3090 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
3077 3091
3078 DVLOG(1) << "Created 1st session. Now trigger public reset post handshake"; 3092 DVLOG(1) << "Created 1st session. Now trigger public reset post handshake";
3079 session->connection()->CloseConnection(QUIC_PUBLIC_RESET, 3093 session->connection()->CloseConnection(QUIC_PUBLIC_RESET,
3080 ConnectionCloseSource::FROM_PEER); 3094 ConnectionCloseSource::FROM_PEER);
3081 // Need to spin the loop now to ensure that 3095 // Need to spin the loop now to ensure that
3082 // QuicStreamFactory::OnSessionClosed() runs. 3096 // QuicStreamFactory::OnSessionClosed() runs.
3083 base::RunLoop run_loop; 3097 base::RunLoop run_loop;
3084 run_loop.RunUntilIdle(); 3098 run_loop.RunUntilIdle();
3085 3099
3086 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( 3100 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake(
3087 factory_.get())); 3101 factory_.get()));
3088 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 3102 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
3089 host_port_pair_.port())); 3103 host_port_pair_.port()));
3090 3104
3091 DVLOG(1) << "Create 2nd and 3rd sessions without disable trigger"; 3105 DVLOG(1) << "Create 2nd and 3rd sessions without disable trigger";
3092 TestCompletionCallback callback2; 3106 TestCompletionCallback callback2;
3093 QuicStreamRequest request2(factory_.get()); 3107 QuicStreamRequest request2(factory_.get());
3094 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 3108 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
3095 /*cert_verify_flags=*/0, server2.host(), "GET", 3109 /*cert_verify_flags=*/0, url2_, "GET",
3096 net_log_, callback2.callback())); 3110 net_log_, callback2.callback()));
3097 QuicChromiumClientSession* session2 = 3111 QuicChromiumClientSession* session2 =
3098 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2); 3112 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2);
3099 3113
3100 session2->connection()->CloseConnection(QUIC_NO_ERROR, 3114 session2->connection()->CloseConnection(QUIC_NO_ERROR,
3101 ConnectionCloseSource::FROM_SELF); 3115 ConnectionCloseSource::FROM_SELF);
3102 // Need to spin the loop now to ensure that 3116 // Need to spin the loop now to ensure that
3103 // QuicStreamFactory::OnSessionClosed() runs. 3117 // QuicStreamFactory::OnSessionClosed() runs.
3104 base::RunLoop run_loop2; 3118 base::RunLoop run_loop2;
3105 run_loop2.RunUntilIdle(); 3119 run_loop2.RunUntilIdle();
3106 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( 3120 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake(
3107 factory_.get())); 3121 factory_.get()));
3108 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 3122 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
3109 host_port_pair_.port())); 3123 host_port_pair_.port()));
3110 3124
3111 TestCompletionCallback callback3; 3125 TestCompletionCallback callback3;
3112 QuicStreamRequest request3(factory_.get()); 3126 QuicStreamRequest request3(factory_.get());
3113 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_, 3127 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_,
3114 /*cert_verify_flags=*/0, server3.host(), "GET", 3128 /*cert_verify_flags=*/0, url3_, "GET",
3115 net_log_, callback3.callback())); 3129 net_log_, callback3.callback()));
3116 QuicChromiumClientSession* session3 = 3130 QuicChromiumClientSession* session3 =
3117 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3); 3131 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3);
3118 3132
3119 session3->connection()->CloseConnection(QUIC_NO_ERROR, 3133 session3->connection()->CloseConnection(QUIC_NO_ERROR,
3120 ConnectionCloseSource::FROM_SELF); 3134 ConnectionCloseSource::FROM_SELF);
3121 // Need to spin the loop now to ensure that 3135 // Need to spin the loop now to ensure that
3122 // QuicStreamFactory::OnSessionClosed() runs. 3136 // QuicStreamFactory::OnSessionClosed() runs.
3123 base::RunLoop run_loop3; 3137 base::RunLoop run_loop3;
3124 run_loop3.RunUntilIdle(); 3138 run_loop3.RunUntilIdle();
3125 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( 3139 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake(
3126 factory_.get())); 3140 factory_.get()));
3127 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 3141 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
3128 host_port_pair_.port())); 3142 host_port_pair_.port()));
3129 3143
3130 DVLOG(1) << "Create 4rd session with public reset post handshake," 3144 DVLOG(1) << "Create 4rd session with public reset post handshake,"
3131 << " will not disable QUIC"; 3145 << " will not disable QUIC";
3132 TestCompletionCallback callback4; 3146 TestCompletionCallback callback4;
3133 QuicStreamRequest request4(factory_.get()); 3147 QuicStreamRequest request4(factory_.get());
3134 EXPECT_EQ(OK, request4.Request(server4, privacy_mode_, 3148 EXPECT_EQ(OK, request4.Request(server4, privacy_mode_,
3135 /*cert_verify_flags=*/0, server4.host(), "GET", 3149 /*cert_verify_flags=*/0, url4_, "GET",
3136 net_log_, callback4.callback())); 3150 net_log_, callback4.callback()));
3137 QuicChromiumClientSession* session4 = 3151 QuicChromiumClientSession* session4 =
3138 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server4); 3152 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server4);
3139 3153
3140 session4->connection()->CloseConnection(QUIC_PUBLIC_RESET, 3154 session4->connection()->CloseConnection(QUIC_PUBLIC_RESET,
3141 ConnectionCloseSource::FROM_PEER); 3155 ConnectionCloseSource::FROM_PEER);
3142 // Need to spin the loop now to ensure that 3156 // Need to spin the loop now to ensure that
3143 // QuicStreamFactory::OnSessionClosed() runs. 3157 // QuicStreamFactory::OnSessionClosed() runs.
3144 base::RunLoop run_loop4; 3158 base::RunLoop run_loop4;
3145 run_loop4.RunUntilIdle(); 3159 run_loop4.RunUntilIdle();
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
3206 host_resolver_.set_synchronous_mode(true); 3220 host_resolver_.set_synchronous_mode(true);
3207 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 3221 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
3208 "192.168.0.1", ""); 3222 "192.168.0.1", "");
3209 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 3223 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
3210 host_resolver_.rules()->AddIPLiteralRule(server3.host(), "192.168.0.1", ""); 3224 host_resolver_.rules()->AddIPLiteralRule(server3.host(), "192.168.0.1", "");
3211 host_resolver_.rules()->AddIPLiteralRule(server4.host(), "192.168.0.1", ""); 3225 host_resolver_.rules()->AddIPLiteralRule(server4.host(), "192.168.0.1", "");
3212 3226
3213 // Test first and fourth out of three timeouts with open streams. 3227 // Test first and fourth out of three timeouts with open streams.
3214 QuicStreamRequest request(factory_.get()); 3228 QuicStreamRequest request(factory_.get());
3215 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 3229 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
3216 /*cert_verify_flags=*/0, host_port_pair_.host(), 3230 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3217 "GET", net_log_, callback_.callback())); 3231 callback_.callback()));
3218 3232
3219 QuicChromiumClientSession* session = 3233 QuicChromiumClientSession* session =
3220 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 3234 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
3221 3235
3222 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 3236 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
3223 EXPECT_TRUE(stream.get()); 3237 EXPECT_TRUE(stream.get());
3224 HttpRequestInfo request_info; 3238 HttpRequestInfo request_info;
3225 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3239 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3226 net_log_, CompletionCallback())); 3240 net_log_, CompletionCallback()));
3227 3241
3228 DVLOG(1) 3242 DVLOG(1)
3229 << "Created 1st session and initialized a stream. Now trigger timeout"; 3243 << "Created 1st session and initialized a stream. Now trigger timeout";
3230 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 3244 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
3231 ConnectionCloseSource::FROM_SELF); 3245 ConnectionCloseSource::FROM_SELF);
3232 // Need to spin the loop now to ensure that 3246 // Need to spin the loop now to ensure that
3233 // QuicStreamFactory::OnSessionClosed() runs. 3247 // QuicStreamFactory::OnSessionClosed() runs.
3234 base::RunLoop run_loop; 3248 base::RunLoop run_loop;
3235 run_loop.RunUntilIdle(); 3249 run_loop.RunUntilIdle();
3236 3250
3237 EXPECT_EQ( 3251 EXPECT_EQ(
3238 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); 3252 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get()));
3239 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 3253 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
3240 host_port_pair_.port())); 3254 host_port_pair_.port()));
3241 3255
3242 DVLOG(1) << "Create 2nd and 3rd sessions without timeout"; 3256 DVLOG(1) << "Create 2nd and 3rd sessions without timeout";
3243 TestCompletionCallback callback2; 3257 TestCompletionCallback callback2;
3244 QuicStreamRequest request2(factory_.get()); 3258 QuicStreamRequest request2(factory_.get());
3245 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 3259 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
3246 /*cert_verify_flags=*/0, server2.host(), "GET", 3260 /*cert_verify_flags=*/0, url2_, "GET",
3247 net_log_, callback2.callback())); 3261 net_log_, callback2.callback()));
3248 QuicChromiumClientSession* session2 = 3262 QuicChromiumClientSession* session2 =
3249 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2); 3263 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2);
3250 3264
3251 session2->connection()->CloseConnection(QUIC_NO_ERROR, 3265 session2->connection()->CloseConnection(QUIC_NO_ERROR,
3252 ConnectionCloseSource::FROM_PEER); 3266 ConnectionCloseSource::FROM_PEER);
3253 // Need to spin the loop now to ensure that 3267 // Need to spin the loop now to ensure that
3254 // QuicStreamFactory::OnSessionClosed() runs. 3268 // QuicStreamFactory::OnSessionClosed() runs.
3255 base::RunLoop run_loop2; 3269 base::RunLoop run_loop2;
3256 run_loop2.RunUntilIdle(); 3270 run_loop2.RunUntilIdle();
3257 EXPECT_EQ( 3271 EXPECT_EQ(
3258 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); 3272 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get()));
3259 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 3273 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
3260 host_port_pair_.port())); 3274 host_port_pair_.port()));
3261 3275
3262 TestCompletionCallback callback3; 3276 TestCompletionCallback callback3;
3263 QuicStreamRequest request3(factory_.get()); 3277 QuicStreamRequest request3(factory_.get());
3264 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_, 3278 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_,
3265 /*cert_verify_flags=*/0, server3.host(), "GET", 3279 /*cert_verify_flags=*/0, url3_, "GET",
3266 net_log_, callback3.callback())); 3280 net_log_, callback3.callback()));
3267 QuicChromiumClientSession* session3 = 3281 QuicChromiumClientSession* session3 =
3268 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3); 3282 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3);
3269 3283
3270 session3->connection()->CloseConnection(QUIC_NO_ERROR, 3284 session3->connection()->CloseConnection(QUIC_NO_ERROR,
3271 ConnectionCloseSource::FROM_PEER); 3285 ConnectionCloseSource::FROM_PEER);
3272 // Need to spin the loop now to ensure that 3286 // Need to spin the loop now to ensure that
3273 // QuicStreamFactory::OnSessionClosed() runs. 3287 // QuicStreamFactory::OnSessionClosed() runs.
3274 base::RunLoop run_loop3; 3288 base::RunLoop run_loop3;
3275 run_loop3.RunUntilIdle(); 3289 run_loop3.RunUntilIdle();
3276 EXPECT_EQ( 3290 EXPECT_EQ(
3277 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); 3291 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get()));
3278 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 3292 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
3279 host_port_pair_.port())); 3293 host_port_pair_.port()));
3280 3294
3281 DVLOG(1) << "Create 4th session with timeout with open streams," 3295 DVLOG(1) << "Create 4th session with timeout with open streams,"
3282 << " will not disable QUIC"; 3296 << " will not disable QUIC";
3283 3297
3284 TestCompletionCallback callback4; 3298 TestCompletionCallback callback4;
3285 QuicStreamRequest request4(factory_.get()); 3299 QuicStreamRequest request4(factory_.get());
3286 EXPECT_EQ(OK, request4.Request(server4, privacy_mode_, 3300 EXPECT_EQ(OK, request4.Request(server4, privacy_mode_,
3287 /*cert_verify_flags=*/0, server4.host(), "GET", 3301 /*cert_verify_flags=*/0, url4_, "GET",
3288 net_log_, callback4.callback())); 3302 net_log_, callback4.callback()));
3289 QuicChromiumClientSession* session4 = 3303 QuicChromiumClientSession* session4 =
3290 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server4); 3304 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server4);
3291 3305
3292 scoped_ptr<QuicHttpStream> stream4 = request4.ReleaseStream(); 3306 scoped_ptr<QuicHttpStream> stream4 = request4.ReleaseStream();
3293 EXPECT_TRUE(stream4.get()); 3307 EXPECT_TRUE(stream4.get());
3294 EXPECT_EQ(OK, stream4->InitializeStream(&request_info, DEFAULT_PRIORITY, 3308 EXPECT_EQ(OK, stream4->InitializeStream(&request_info, DEFAULT_PRIORITY,
3295 net_log_, CompletionCallback())); 3309 net_log_, CompletionCallback()));
3296 session4->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 3310 session4->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
3297 ConnectionCloseSource::FROM_SELF); 3311 ConnectionCloseSource::FROM_SELF);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3334 3348
3335 crypto_client_stream_factory_.set_handshake_mode( 3349 crypto_client_stream_factory_.set_handshake_mode(
3336 MockCryptoClientStream::ZERO_RTT); 3350 MockCryptoClientStream::ZERO_RTT);
3337 host_resolver_.set_synchronous_mode(true); 3351 host_resolver_.set_synchronous_mode(true);
3338 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 3352 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
3339 "192.168.0.1", ""); 3353 "192.168.0.1", "");
3340 3354
3341 QuicStreamRequest request(factory_.get()); 3355 QuicStreamRequest request(factory_.get());
3342 EXPECT_EQ(ERR_IO_PENDING, 3356 EXPECT_EQ(ERR_IO_PENDING,
3343 request.Request(host_port_pair_, privacy_mode_, 3357 request.Request(host_port_pair_, privacy_mode_,
3344 /*cert_verify_flags=*/0, host_port_pair_.host(), 3358 /*cert_verify_flags=*/0, url_, "POST", net_log_,
3345 "POST", net_log_, callback_.callback())); 3359 callback_.callback()));
3346 3360
3347 // If we don't delay TCP connection, then time delay should be 0. 3361 // If we don't delay TCP connection, then time delay should be 0.
3348 EXPECT_FALSE(factory_->delay_tcp_race()); 3362 EXPECT_FALSE(factory_->delay_tcp_race());
3349 EXPECT_EQ(base::TimeDelta(), request.GetTimeDelayForWaitingJob()); 3363 EXPECT_EQ(base::TimeDelta(), request.GetTimeDelayForWaitingJob());
3350 3364
3351 // Enable |delay_tcp_race_| param and verify delay is one RTT and that 3365 // Enable |delay_tcp_race_| param and verify delay is one RTT and that
3352 // server supports QUIC. 3366 // server supports QUIC.
3353 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), true); 3367 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), true);
3354 EXPECT_TRUE(factory_->delay_tcp_race()); 3368 EXPECT_TRUE(factory_->delay_tcp_race());
3355 EXPECT_EQ(base::TimeDelta::FromMicroseconds(15), 3369 EXPECT_EQ(base::TimeDelta::FromMicroseconds(15),
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
3486 "192.168.0.1", ""); 3500 "192.168.0.1", "");
3487 3501
3488 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading 3502 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading
3489 // posts a task. 3503 // posts a task.
3490 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver?? 3504 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver??
3491 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc", 3505 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc",
3492 "StartReading"); 3506 "StartReading");
3493 3507
3494 QuicStreamRequest request(factory_.get()); 3508 QuicStreamRequest request(factory_.get());
3495 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 3509 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
3496 /*cert_verify_flags=*/0, host_port_pair_.host(), 3510 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3497 "GET", net_log_, callback_.callback())); 3511 callback_.callback()));
3498 3512
3499 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets 3513 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets
3500 // called. 3514 // called.
3501 base::RunLoop run_loop; 3515 base::RunLoop run_loop;
3502 run_loop.RunUntilIdle(); 3516 run_loop.RunUntilIdle();
3503 3517
3504 // Verify task that the observer's executed_count is 1, which indicates 3518 // Verify task that the observer's executed_count is 1, which indicates
3505 // QuicChromiumPacketReader::StartReading() has posted only one task and 3519 // QuicChromiumPacketReader::StartReading() has posted only one task and
3506 // yielded the read. 3520 // yielded the read.
3507 EXPECT_EQ(1u, observer.executed_count()); 3521 EXPECT_EQ(1u, observer.executed_count());
(...skipping 27 matching lines...) Expand all
3535 "192.168.0.1", ""); 3549 "192.168.0.1", "");
3536 3550
3537 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading 3551 // Set up the TaskObserver to verify QuicChromiumPacketReader::StartReading
3538 // posts a task. 3552 // posts a task.
3539 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver?? 3553 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver??
3540 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc", 3554 SpdySessionTestTaskObserver observer("quic_chromium_packet_reader.cc",
3541 "StartReading"); 3555 "StartReading");
3542 3556
3543 QuicStreamRequest request(factory_.get()); 3557 QuicStreamRequest request(factory_.get());
3544 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 3558 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
3545 /*cert_verify_flags=*/0, host_port_pair_.host(), 3559 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3546 "GET", net_log_, callback_.callback())); 3560 callback_.callback()));
3547 3561
3548 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets 3562 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets
3549 // called. 3563 // called.
3550 base::RunLoop run_loop; 3564 base::RunLoop run_loop;
3551 run_loop.RunUntilIdle(); 3565 run_loop.RunUntilIdle();
3552 3566
3553 // Verify task that the observer's executed_count is 1, which indicates 3567 // Verify task that the observer's executed_count is 1, which indicates
3554 // QuicChromiumPacketReader::StartReading() has posted only one task and 3568 // QuicChromiumPacketReader::StartReading() has posted only one task and
3555 // yielded the read. 3569 // yielded the read.
3556 EXPECT_EQ(1u, observer.executed_count()); 3570 EXPECT_EQ(1u, observer.executed_count());
3557 3571
3558 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 3572 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
3559 EXPECT_TRUE(stream.get()); 3573 EXPECT_TRUE(stream.get());
3560 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 3574 EXPECT_TRUE(socket_data.AllReadDataConsumed());
3561 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 3575 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
3562 } 3576 }
3563 3577
3578 TEST_P(QuicStreamFactoryTest, ServerPushSessionAffinity) {
3579 Initialize();
3580 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
3581 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3582
3583 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
3584 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
3585 socket_factory_.AddSocketDataProvider(&socket_data);
3586
3587 QuicStreamRequest request(factory_.get());
3588 EXPECT_EQ(ERR_IO_PENDING,
3589 request.Request(host_port_pair_, privacy_mode_,
3590 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3591 callback_.callback()));
3592
3593 EXPECT_EQ(OK, callback_.WaitForResult());
3594 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
3595 EXPECT_TRUE(stream.get());
3596
3597 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
3598
3599 std::string url = "https://www.example.org/";
3600
3601 QuicChromiumClientSession* session =
3602 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
3603
3604 QuicClientPromisedInfo promised(session, kServerDataStreamId1, url);
3605 (*QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get())
3606 ->promised_by_url())[url] = &promised;
3607
3608 QuicStreamRequest request2(factory_.get());
3609 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_,
3610 /*cert_verify_flags=*/0, GURL(url), "GET",
3611 net_log_, callback_.callback()));
3612
3613 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
3614 }
3615
3616 TEST_P(QuicStreamFactoryTest, ServerPushPrivacyModeMismatch) {
3617 Initialize();
3618 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
3619 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3620 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3621
3622 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
3623
3624 scoped_ptr<QuicEncryptedPacket> client_rst(maker_.MakeRstPacket(
3625 1, true, kServerDataStreamId1, QUIC_STREAM_CANCELLED));
3626 MockWrite writes[] = {
3627 MockWrite(SYNCHRONOUS, client_rst->data(), client_rst->length(), 1),
3628 };
3629
3630 SequencedSocketData socket_data1(reads, arraysize(reads), writes,
3631 arraysize(writes));
3632 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
3633
3634 socket_factory_.AddSocketDataProvider(&socket_data1);
3635 socket_factory_.AddSocketDataProvider(&socket_data2);
3636
3637 QuicStreamRequest request(factory_.get());
3638 EXPECT_EQ(ERR_IO_PENDING,
3639 request.Request(host_port_pair_, privacy_mode_,
3640 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3641 callback_.callback()));
3642
3643 EXPECT_EQ(OK, callback_.WaitForResult());
3644 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
3645 EXPECT_TRUE(stream.get());
3646
3647 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
3648
3649 std::string url = "https://www.example.org/";
3650 QuicChromiumClientSession* session =
3651 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
3652
3653 QuicClientPromisedInfo promised(session, kServerDataStreamId1, url);
3654
3655 QuicClientPushPromiseIndex* index =
3656 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get());
3657
3658 (*index->promised_by_url())[url] = &promised;
3659 EXPECT_EQ(index->GetPromised(url), &promised);
3660
3661 // Doing the request should not use the push stream, but rather
3662 // cancel it because the privacy modes do not match.
3663 QuicStreamRequest request2(factory_.get());
3664 EXPECT_EQ(ERR_IO_PENDING,
3665 request2.Request(host_port_pair_, PRIVACY_MODE_ENABLED,
3666 /*cert_verify_flags=*/0, GURL(url), "GET",
3667 net_log_, callback_.callback()));
3668
3669 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
3670 EXPECT_EQ(index->GetPromised(url), nullptr);
3671
3672 EXPECT_EQ(OK, callback_.WaitForResult());
3673 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
3674 EXPECT_TRUE(stream2.get());
3675
3676 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
3677 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
3678 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
3679 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
3680 }
3681
3564 } // namespace test 3682 } // namespace test
3565 } // namespace net 3683 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698