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

Side by Side Diff: net/quic/core/quic_session_test.cc

Issue 2236973002: Landing Recent QUIC changes until 4AM, Aug 7, 2016 UTC-4 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: flip quic_sequencer_buffer_retire_block_in_time to true Created 4 years, 4 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
« no previous file with comments | « net/quic/core/quic_session.cc ('k') | net/quic/core/quic_spdy_session.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/core/quic_session.h" 5 #include "net/quic/core/quic_session.h"
6 6
7 #include <set> 7 #include <set>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/rand_util.h" 10 #include "base/rand_util.h"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 112
113 class TestSession : public QuicSpdySession { 113 class TestSession : public QuicSpdySession {
114 public: 114 public:
115 explicit TestSession(QuicConnection* connection) 115 explicit TestSession(QuicConnection* connection)
116 : QuicSpdySession(connection, DefaultQuicConfig()), 116 : QuicSpdySession(connection, DefaultQuicConfig()),
117 crypto_stream_(this), 117 crypto_stream_(this),
118 writev_consumes_all_data_(false) { 118 writev_consumes_all_data_(false) {
119 Initialize(); 119 Initialize();
120 } 120 }
121 121
122 ~TestSession() override { delete connection(); }
123
122 TestCryptoStream* GetCryptoStream() override { return &crypto_stream_; } 124 TestCryptoStream* GetCryptoStream() override { return &crypto_stream_; }
123 125
124 TestStream* CreateOutgoingDynamicStream(SpdyPriority priority) override { 126 TestStream* CreateOutgoingDynamicStream(SpdyPriority priority) override {
125 TestStream* stream = new TestStream(GetNextOutgoingStreamId(), this); 127 TestStream* stream = new TestStream(GetNextOutgoingStreamId(), this);
126 stream->SetPriority(priority); 128 stream->SetPriority(priority);
127 ActivateStream(stream); 129 ActivateStream(stream);
128 return stream; 130 return stream;
129 } 131 }
130 132
131 TestStream* CreateIncomingDynamicStream(QuicStreamId id) override { 133 TestStream* CreateIncomingDynamicStream(QuicStreamId id) override {
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 SpdyHeaderBlock headers_; 275 SpdyHeaderBlock headers_;
274 }; 276 };
275 277
276 class QuicSessionTestServer : public QuicSessionTestBase { 278 class QuicSessionTestServer : public QuicSessionTestBase {
277 protected: 279 protected:
278 QuicSessionTestServer() : QuicSessionTestBase(Perspective::IS_SERVER) {} 280 QuicSessionTestServer() : QuicSessionTestBase(Perspective::IS_SERVER) {}
279 }; 281 };
280 282
281 INSTANTIATE_TEST_CASE_P(Tests, 283 INSTANTIATE_TEST_CASE_P(Tests,
282 QuicSessionTestServer, 284 QuicSessionTestServer,
283 ::testing::ValuesIn(QuicSupportedVersions())); 285 ::testing::ValuesIn(AllSupportedVersions()));
284 286
285 TEST_P(QuicSessionTestServer, PeerAddress) { 287 TEST_P(QuicSessionTestServer, PeerAddress) {
286 EXPECT_EQ(IPEndPoint(Loopback4(), kTestPort), session_.peer_address()); 288 EXPECT_EQ(IPEndPoint(Loopback4(), kTestPort), session_.peer_address());
287 } 289 }
288 290
289 TEST_P(QuicSessionTestServer, IsCryptoHandshakeConfirmed) { 291 TEST_P(QuicSessionTestServer, IsCryptoHandshakeConfirmed) {
290 EXPECT_FALSE(session_.IsCryptoHandshakeConfirmed()); 292 EXPECT_FALSE(session_.IsCryptoHandshakeConfirmed());
291 CryptoHandshakeMessage message; 293 CryptoHandshakeMessage message;
292 session_.GetCryptoStream()->OnHandshakeMessage(message); 294 session_.GetCryptoStream()->OnHandshakeMessage(message);
293 EXPECT_TRUE(session_.IsCryptoHandshakeConfirmed()); 295 EXPECT_TRUE(session_.IsCryptoHandshakeConfirmed());
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 EXPECT_CALL(*stream2, OnCanWrite()) 485 EXPECT_CALL(*stream2, OnCanWrite())
484 .WillOnce(DoAll(testing::IgnoreResult(Invoke(CreateFunctor( 486 .WillOnce(DoAll(testing::IgnoreResult(Invoke(CreateFunctor(
485 &TestSession::SendLargeFakeData, 487 &TestSession::SendLargeFakeData,
486 base::Unretained(&session_), stream2, 6000))), 488 base::Unretained(&session_), stream2, 6000))),
487 Invoke(&stream2_blocker, 489 Invoke(&stream2_blocker,
488 &StreamBlocker::MarkConnectionLevelWriteBlocked))); 490 &StreamBlocker::MarkConnectionLevelWriteBlocked)));
489 session_.OnCanWrite(); 491 session_.OnCanWrite();
490 } 492 }
491 493
492 TEST_P(QuicSessionTestServer, OnCanWriteBundlesStreams) { 494 TEST_P(QuicSessionTestServer, OnCanWriteBundlesStreams) {
495 FLAGS_quic_enable_app_limited_check = true;
496
493 // Encryption needs to be established before data can be sent. 497 // Encryption needs to be established before data can be sent.
494 CryptoHandshakeMessage msg; 498 CryptoHandshakeMessage msg;
495 session_.GetCryptoStream()->OnHandshakeMessage(msg); 499 session_.GetCryptoStream()->OnHandshakeMessage(msg);
496 500
497 // Drive congestion control manually. 501 // Drive congestion control manually.
498 MockSendAlgorithm* send_algorithm = new StrictMock<MockSendAlgorithm>; 502 MockSendAlgorithm* send_algorithm = new StrictMock<MockSendAlgorithm>;
499 QuicConnectionPeer::SetSendAlgorithm(session_.connection(), kDefaultPathId, 503 QuicConnectionPeer::SetSendAlgorithm(session_.connection(), kDefaultPathId,
500 send_algorithm); 504 send_algorithm);
501 505
502 TestStream* stream2 = session_.CreateOutgoingDynamicStream(kDefaultPriority); 506 TestStream* stream2 = session_.CreateOutgoingDynamicStream(kDefaultPriority);
503 TestStream* stream4 = session_.CreateOutgoingDynamicStream(kDefaultPriority); 507 TestStream* stream4 = session_.CreateOutgoingDynamicStream(kDefaultPriority);
504 TestStream* stream6 = session_.CreateOutgoingDynamicStream(kDefaultPriority); 508 TestStream* stream6 = session_.CreateOutgoingDynamicStream(kDefaultPriority);
505 509
506 session_.MarkConnectionLevelWriteBlocked(stream2->id()); 510 session_.MarkConnectionLevelWriteBlocked(stream2->id());
507 session_.MarkConnectionLevelWriteBlocked(stream6->id()); 511 session_.MarkConnectionLevelWriteBlocked(stream6->id());
508 session_.MarkConnectionLevelWriteBlocked(stream4->id()); 512 session_.MarkConnectionLevelWriteBlocked(stream4->id());
509 513
510 EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _)) 514 EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _))
511 .WillRepeatedly(Return(QuicTime::Delta::Zero())); 515 .WillRepeatedly(Return(QuicTime::Delta::Zero()));
512 EXPECT_CALL(*send_algorithm, GetCongestionWindow()) 516 EXPECT_CALL(*send_algorithm, GetCongestionWindow())
513 .WillRepeatedly(Return(kMaxPacketSize * 10)); 517 .WillRepeatedly(Return(kMaxPacketSize * 10));
518 EXPECT_CALL(*send_algorithm, InRecovery()).WillRepeatedly(Return(false));
514 EXPECT_CALL(*stream2, OnCanWrite()) 519 EXPECT_CALL(*stream2, OnCanWrite())
515 .WillOnce(testing::IgnoreResult( 520 .WillOnce(testing::IgnoreResult(
516 Invoke(CreateFunctor(&TestSession::SendStreamData, 521 Invoke(CreateFunctor(&TestSession::SendStreamData,
517 base::Unretained(&session_), stream2)))); 522 base::Unretained(&session_), stream2))));
518 EXPECT_CALL(*stream4, OnCanWrite()) 523 EXPECT_CALL(*stream4, OnCanWrite())
519 .WillOnce(testing::IgnoreResult( 524 .WillOnce(testing::IgnoreResult(
520 Invoke(CreateFunctor(&TestSession::SendStreamData, 525 Invoke(CreateFunctor(&TestSession::SendStreamData,
521 base::Unretained(&session_), stream4)))); 526 base::Unretained(&session_), stream4))));
522 EXPECT_CALL(*stream6, OnCanWrite()) 527 EXPECT_CALL(*stream6, OnCanWrite())
523 .WillOnce(testing::IgnoreResult( 528 .WillOnce(testing::IgnoreResult(
524 Invoke(CreateFunctor(&TestSession::SendStreamData, 529 Invoke(CreateFunctor(&TestSession::SendStreamData,
525 base::Unretained(&session_), stream6)))); 530 base::Unretained(&session_), stream6))));
526 531
527 // Expect that we only send one packet, the writes from different streams 532 // Expect that we only send one packet, the writes from different streams
528 // should be bundled together. 533 // should be bundled together.
529 MockPacketWriter* writer = static_cast<MockPacketWriter*>( 534 MockPacketWriter* writer = static_cast<MockPacketWriter*>(
530 QuicConnectionPeer::GetWriter(session_.connection())); 535 QuicConnectionPeer::GetWriter(session_.connection()));
531 EXPECT_CALL(*writer, WritePacket(_, _, _, _, _)) 536 EXPECT_CALL(*writer, WritePacket(_, _, _, _, _))
532 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 0))); 537 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 0)));
533 EXPECT_CALL(*send_algorithm, OnPacketSent(_, _, _, _, _)); 538 EXPECT_CALL(*send_algorithm, OnPacketSent(_, _, _, _, _));
539 EXPECT_CALL(*send_algorithm, OnApplicationLimited(_));
534 session_.OnCanWrite(); 540 session_.OnCanWrite();
535 EXPECT_FALSE(session_.WillingAndAbleToWrite()); 541 EXPECT_FALSE(session_.WillingAndAbleToWrite());
536 } 542 }
537 543
538 TEST_P(QuicSessionTestServer, OnCanWriteCongestionControlBlocks) { 544 TEST_P(QuicSessionTestServer, OnCanWriteCongestionControlBlocks) {
545 FLAGS_quic_enable_app_limited_check = true;
546
539 InSequence s; 547 InSequence s;
540 548
541 // Drive congestion control manually. 549 // Drive congestion control manually.
542 MockSendAlgorithm* send_algorithm = new StrictMock<MockSendAlgorithm>; 550 MockSendAlgorithm* send_algorithm = new StrictMock<MockSendAlgorithm>;
543 QuicConnectionPeer::SetSendAlgorithm(session_.connection(), kDefaultPathId, 551 QuicConnectionPeer::SetSendAlgorithm(session_.connection(), kDefaultPathId,
544 send_algorithm); 552 send_algorithm);
545 553
546 TestStream* stream2 = session_.CreateOutgoingDynamicStream(kDefaultPriority); 554 TestStream* stream2 = session_.CreateOutgoingDynamicStream(kDefaultPriority);
547 TestStream* stream4 = session_.CreateOutgoingDynamicStream(kDefaultPriority); 555 TestStream* stream4 = session_.CreateOutgoingDynamicStream(kDefaultPriority);
548 TestStream* stream6 = session_.CreateOutgoingDynamicStream(kDefaultPriority); 556 TestStream* stream6 = session_.CreateOutgoingDynamicStream(kDefaultPriority);
(...skipping 20 matching lines...) Expand all
569 EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _)) 577 EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _))
570 .WillOnce(Return(QuicTime::Delta::Infinite())); 578 .WillOnce(Return(QuicTime::Delta::Infinite()));
571 session_.OnCanWrite(); 579 session_.OnCanWrite();
572 EXPECT_TRUE(session_.WillingAndAbleToWrite()); 580 EXPECT_TRUE(session_.WillingAndAbleToWrite());
573 581
574 // stream4->OnCanWrite is called once the connection stops being 582 // stream4->OnCanWrite is called once the connection stops being
575 // congestion-control blocked. 583 // congestion-control blocked.
576 EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _)) 584 EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _))
577 .WillOnce(Return(QuicTime::Delta::Zero())); 585 .WillOnce(Return(QuicTime::Delta::Zero()));
578 EXPECT_CALL(*stream4, OnCanWrite()); 586 EXPECT_CALL(*stream4, OnCanWrite());
587 EXPECT_CALL(*send_algorithm, OnApplicationLimited(_));
579 session_.OnCanWrite(); 588 session_.OnCanWrite();
580 EXPECT_FALSE(session_.WillingAndAbleToWrite()); 589 EXPECT_FALSE(session_.WillingAndAbleToWrite());
581 } 590 }
582 591
592 TEST_P(QuicSessionTestServer, OnCanWriteWriterBlocks) {
593 FLAGS_quic_enable_app_limited_check = true;
594
595 // Drive congestion control manually in order to ensure that
596 // application-limited signaling is handled correctly.
597 MockSendAlgorithm* send_algorithm = new StrictMock<MockSendAlgorithm>;
598 QuicConnectionPeer::SetSendAlgorithm(session_.connection(), kDefaultPathId,
599 send_algorithm);
600 EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _))
601 .WillRepeatedly(Return(QuicTime::Delta::Zero()));
602
603 // Drive packet writer manually.
604 MockPacketWriter* writer = static_cast<MockPacketWriter*>(
605 QuicConnectionPeer::GetWriter(session_.connection()));
606 EXPECT_CALL(*writer, IsWriteBlocked()).WillRepeatedly(Return(true));
607 EXPECT_CALL(*writer, IsWriteBlockedDataBuffered())
608 .WillRepeatedly(Return(true));
609 EXPECT_CALL(*writer, WritePacket(_, _, _, _, _)).Times(0);
610
611 TestStream* stream2 = session_.CreateOutgoingDynamicStream(kDefaultPriority);
612
613 session_.MarkConnectionLevelWriteBlocked(stream2->id());
614
615 EXPECT_CALL(*stream2, OnCanWrite()).Times(0);
616 EXPECT_CALL(*send_algorithm, OnApplicationLimited(_)).Times(0);
617
618 session_.OnCanWrite();
619 EXPECT_TRUE(session_.WillingAndAbleToWrite());
620 }
621
583 TEST_P(QuicSessionTestServer, BufferedHandshake) { 622 TEST_P(QuicSessionTestServer, BufferedHandshake) {
584 EXPECT_FALSE(session_.HasPendingHandshake()); // Default value. 623 EXPECT_FALSE(session_.HasPendingHandshake()); // Default value.
585 624
586 // Test that blocking other streams does not change our status. 625 // Test that blocking other streams does not change our status.
587 TestStream* stream2 = session_.CreateOutgoingDynamicStream(kDefaultPriority); 626 TestStream* stream2 = session_.CreateOutgoingDynamicStream(kDefaultPriority);
588 StreamBlocker stream2_blocker(&session_, stream2->id()); 627 StreamBlocker stream2_blocker(&session_, stream2->id());
589 stream2_blocker.MarkConnectionLevelWriteBlocked(); 628 stream2_blocker.MarkConnectionLevelWriteBlocked();
590 EXPECT_FALSE(session_.HasPendingHandshake()); 629 EXPECT_FALSE(session_.HasPendingHandshake());
591 630
592 TestStream* stream3 = session_.CreateOutgoingDynamicStream(kDefaultPriority); 631 TestStream* stream3 = session_.CreateOutgoingDynamicStream(kDefaultPriority);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 CloseStream(stream6->id()); 674 CloseStream(stream6->id());
636 675
637 InSequence s; 676 InSequence s;
638 EXPECT_CALL(*stream2, OnCanWrite()); 677 EXPECT_CALL(*stream2, OnCanWrite());
639 EXPECT_CALL(*stream4, OnCanWrite()); 678 EXPECT_CALL(*stream4, OnCanWrite());
640 session_.OnCanWrite(); 679 session_.OnCanWrite();
641 EXPECT_FALSE(session_.WillingAndAbleToWrite()); 680 EXPECT_FALSE(session_.WillingAndAbleToWrite());
642 } 681 }
643 682
644 TEST_P(QuicSessionTestServer, OnCanWriteLimitsNumWritesIfFlowControlBlocked) { 683 TEST_P(QuicSessionTestServer, OnCanWriteLimitsNumWritesIfFlowControlBlocked) {
684 FLAGS_quic_enable_app_limited_check = true;
685
686 // Drive congestion control manually in order to ensure that
687 // application-limited signaling is handled correctly.
688 MockSendAlgorithm* send_algorithm = new StrictMock<MockSendAlgorithm>;
689 QuicConnectionPeer::SetSendAlgorithm(session_.connection(), kDefaultPathId,
690 send_algorithm);
691 EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _))
692 .WillRepeatedly(Return(QuicTime::Delta::Zero()));
693
645 // Ensure connection level flow control blockage. 694 // Ensure connection level flow control blockage.
646 QuicFlowControllerPeer::SetSendWindowOffset(session_.flow_controller(), 0); 695 QuicFlowControllerPeer::SetSendWindowOffset(session_.flow_controller(), 0);
647 EXPECT_TRUE(session_.flow_controller()->IsBlocked()); 696 EXPECT_TRUE(session_.flow_controller()->IsBlocked());
648 EXPECT_TRUE(session_.IsConnectionFlowControlBlocked()); 697 EXPECT_TRUE(session_.IsConnectionFlowControlBlocked());
649 EXPECT_FALSE(session_.IsStreamFlowControlBlocked()); 698 EXPECT_FALSE(session_.IsStreamFlowControlBlocked());
650 699
651 // Mark the crypto and headers streams as write blocked, we expect them to be 700 // Mark the crypto and headers streams as write blocked, we expect them to be
652 // allowed to write later. 701 // allowed to write later.
653 session_.MarkConnectionLevelWriteBlocked(kCryptoStreamId); 702 session_.MarkConnectionLevelWriteBlocked(kCryptoStreamId);
654 session_.MarkConnectionLevelWriteBlocked(kHeadersStreamId); 703 session_.MarkConnectionLevelWriteBlocked(kHeadersStreamId);
655 704
656 // Create a data stream, and although it is write blocked we never expect it 705 // Create a data stream, and although it is write blocked we never expect it
657 // to be allowed to write as we are connection level flow control blocked. 706 // to be allowed to write as we are connection level flow control blocked.
658 TestStream* stream = session_.CreateOutgoingDynamicStream(kDefaultPriority); 707 TestStream* stream = session_.CreateOutgoingDynamicStream(kDefaultPriority);
659 session_.MarkConnectionLevelWriteBlocked(stream->id()); 708 session_.MarkConnectionLevelWriteBlocked(stream->id());
660 EXPECT_CALL(*stream, OnCanWrite()).Times(0); 709 EXPECT_CALL(*stream, OnCanWrite()).Times(0);
661 710
662 // The crypto and headers streams should be called even though we are 711 // The crypto and headers streams should be called even though we are
663 // connection flow control blocked. 712 // connection flow control blocked.
664 TestCryptoStream* crypto_stream = session_.GetCryptoStream(); 713 TestCryptoStream* crypto_stream = session_.GetCryptoStream();
665 EXPECT_CALL(*crypto_stream, OnCanWrite()); 714 EXPECT_CALL(*crypto_stream, OnCanWrite());
666 TestHeadersStream* headers_stream = new TestHeadersStream(&session_); 715 TestHeadersStream* headers_stream = new TestHeadersStream(&session_);
667 QuicSpdySessionPeer::SetHeadersStream(&session_, headers_stream); 716 QuicSpdySessionPeer::SetHeadersStream(&session_, headers_stream);
668 EXPECT_CALL(*headers_stream, OnCanWrite()); 717 EXPECT_CALL(*headers_stream, OnCanWrite());
669 718
719 // After the crypto and header streams perform a write, the connection will be
720 // blocked by the flow control, hence it should become application-limited.
721 EXPECT_CALL(*send_algorithm, OnApplicationLimited(_));
722
670 session_.OnCanWrite(); 723 session_.OnCanWrite();
671 EXPECT_FALSE(session_.WillingAndAbleToWrite()); 724 EXPECT_FALSE(session_.WillingAndAbleToWrite());
672 } 725 }
673 726
674 TEST_P(QuicSessionTestServer, SendGoAway) { 727 TEST_P(QuicSessionTestServer, SendGoAway) {
675 MockPacketWriter* writer = static_cast<MockPacketWriter*>( 728 MockPacketWriter* writer = static_cast<MockPacketWriter*>(
676 QuicConnectionPeer::GetWriter(session_.connection())); 729 QuicConnectionPeer::GetWriter(session_.connection()));
677 EXPECT_CALL(*writer, WritePacket(_, _, _, _, _)) 730 EXPECT_CALL(*writer, WritePacket(_, _, _, _, _))
678 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 0))); 731 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 0)));
679 EXPECT_CALL(*connection_, SendGoAway(_, _, _)) 732 EXPECT_CALL(*connection_, SendGoAway(_, _, _))
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 } 1173 }
1121 } 1174 }
1122 1175
1123 class QuicSessionTestClient : public QuicSessionTestBase { 1176 class QuicSessionTestClient : public QuicSessionTestBase {
1124 protected: 1177 protected:
1125 QuicSessionTestClient() : QuicSessionTestBase(Perspective::IS_CLIENT) {} 1178 QuicSessionTestClient() : QuicSessionTestBase(Perspective::IS_CLIENT) {}
1126 }; 1179 };
1127 1180
1128 INSTANTIATE_TEST_CASE_P(Tests, 1181 INSTANTIATE_TEST_CASE_P(Tests,
1129 QuicSessionTestClient, 1182 QuicSessionTestClient,
1130 ::testing::ValuesIn(QuicSupportedVersions())); 1183 ::testing::ValuesIn(AllSupportedVersions()));
1131 1184
1132 TEST_P(QuicSessionTestClient, AvailableStreamsClient) { 1185 TEST_P(QuicSessionTestClient, AvailableStreamsClient) {
1133 ASSERT_TRUE(session_.GetOrCreateDynamicStream(6) != nullptr); 1186 ASSERT_TRUE(session_.GetOrCreateDynamicStream(6) != nullptr);
1134 // Both 2 and 4 should be available. 1187 // Both 2 and 4 should be available.
1135 EXPECT_TRUE(QuicSessionPeer::IsStreamAvailable(&session_, 2)); 1188 EXPECT_TRUE(QuicSessionPeer::IsStreamAvailable(&session_, 2));
1136 EXPECT_TRUE(QuicSessionPeer::IsStreamAvailable(&session_, 4)); 1189 EXPECT_TRUE(QuicSessionPeer::IsStreamAvailable(&session_, 4));
1137 ASSERT_TRUE(session_.GetOrCreateDynamicStream(2) != nullptr); 1190 ASSERT_TRUE(session_.GetOrCreateDynamicStream(2) != nullptr);
1138 ASSERT_TRUE(session_.GetOrCreateDynamicStream(4) != nullptr); 1191 ASSERT_TRUE(session_.GetOrCreateDynamicStream(4) != nullptr);
1139 // And 5 should be not available. 1192 // And 5 should be not available.
1140 EXPECT_FALSE(QuicSessionPeer::IsStreamAvailable(&session_, 5)); 1193 EXPECT_FALSE(QuicSessionPeer::IsStreamAvailable(&session_, 5));
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1201 if (version() <= QUIC_VERSION_35) { 1254 if (version() <= QUIC_VERSION_35) {
1202 EXPECT_FALSE(session_.force_hol_blocking()); 1255 EXPECT_FALSE(session_.force_hol_blocking());
1203 } else { 1256 } else {
1204 EXPECT_TRUE(session_.force_hol_blocking()); 1257 EXPECT_TRUE(session_.force_hol_blocking());
1205 } 1258 }
1206 } 1259 }
1207 1260
1208 } // namespace 1261 } // namespace
1209 } // namespace test 1262 } // namespace test
1210 } // namespace net 1263 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_session.cc ('k') | net/quic/core/quic_spdy_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698