| Index: net/quic/quic_session_test.cc
|
| diff --git a/net/quic/quic_session_test.cc b/net/quic/quic_session_test.cc
|
| index fbfe449b2df8f9c4b862abc917efa96f69e743f6..2d362fda0027fe008664efa8552fe5e180c4da8e 100644
|
| --- a/net/quic/quic_session_test.cc
|
| +++ b/net/quic/quic_session_test.cc
|
| @@ -28,6 +28,7 @@ using std::vector;
|
| using testing::_;
|
| using testing::InSequence;
|
| using testing::InvokeWithoutArgs;
|
| +using testing::Return;
|
| using testing::StrictMock;
|
|
|
| namespace net {
|
| @@ -328,6 +329,49 @@ TEST_P(QuicSessionTest, OnCanWrite) {
|
| EXPECT_FALSE(session_.OnCanWrite());
|
| }
|
|
|
| +TEST_P(QuicSessionTest, OnCanWriteCongestionControlBlocks) {
|
| + InSequence s;
|
| +
|
| + // Drive congestion control manually.
|
| + MockSendAlgorithm* send_algorithm = new StrictMock<MockSendAlgorithm>;
|
| + QuicConnectionPeer::SetSendAlgorithm(session_.connection(), send_algorithm);
|
| +
|
| + TestStream* stream2 = session_.CreateOutgoingDataStream();
|
| + TestStream* stream4 = session_.CreateOutgoingDataStream();
|
| + TestStream* stream6 = session_.CreateOutgoingDataStream();
|
| +
|
| + session_.MarkWriteBlocked(stream2->id(), kSomeMiddlePriority);
|
| + session_.MarkWriteBlocked(stream6->id(), kSomeMiddlePriority);
|
| + session_.MarkWriteBlocked(stream4->id(), kSomeMiddlePriority);
|
| +
|
| + StreamBlocker stream2_blocker(&session_, stream2->id());
|
| + EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _, _, _)).WillOnce(Return(
|
| + QuicTime::Delta::Zero()));
|
| + EXPECT_CALL(*stream2, OnCanWrite());
|
| + EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _, _, _)).WillOnce(Return(
|
| + QuicTime::Delta::Zero()));
|
| + EXPECT_CALL(*stream6, OnCanWrite());
|
| + EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _, _, _)).WillOnce(Return(
|
| + QuicTime::Delta::Infinite()));
|
| + // stream4->OnCanWrite is not called.
|
| +
|
| + // TODO(avd) change return value to 'true', since the connection
|
| + // can't write because it is congestion control blocked.
|
| + EXPECT_FALSE(session_.OnCanWrite());
|
| +
|
| + // Still congestion-control blocked.
|
| + EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _, _, _)).WillOnce(Return(
|
| + QuicTime::Delta::Infinite()));
|
| + EXPECT_FALSE(session_.OnCanWrite());
|
| +
|
| + // stream4->OnCanWrite is called once the connection stops being
|
| + // congestion-control blocked.
|
| + EXPECT_CALL(*send_algorithm, TimeUntilSend(_, _, _, _)).WillOnce(Return(
|
| + QuicTime::Delta::Zero()));
|
| + EXPECT_CALL(*stream4, OnCanWrite());
|
| + EXPECT_TRUE(session_.OnCanWrite());
|
| +}
|
| +
|
| TEST_P(QuicSessionTest, BufferedHandshake) {
|
| EXPECT_FALSE(session_.HasPendingHandshake()); // Default value.
|
|
|
|
|