| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/quic/reliable_quic_stream.h" | 5 #include "net/quic/reliable_quic_stream.h" |
| 6 | 6 |
| 7 #include "net/quic/quic_ack_notifier.h" | 7 #include "net/quic/quic_ack_notifier.h" |
| 8 #include "net/quic/quic_connection.h" | 8 #include "net/quic/quic_connection.h" |
| 9 #include "net/quic/quic_utils.h" | 9 #include "net/quic/quic_utils.h" |
| 10 #include "net/quic/quic_write_blocked_list.h" | 10 #include "net/quic/quic_write_blocked_list.h" |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 QuicTime::Delta zero_; | 142 QuicTime::Delta zero_; |
| 143 QuicVersionVector supported_versions_; | 143 QuicVersionVector supported_versions_; |
| 144 }; | 144 }; |
| 145 | 145 |
| 146 TEST_F(ReliableQuicStreamTest, WriteAllData) { | 146 TEST_F(ReliableQuicStreamTest, WriteAllData) { |
| 147 Initialize(kShouldProcessData); | 147 Initialize(kShouldProcessData); |
| 148 | 148 |
| 149 size_t length = 1 + QuicPacketCreator::StreamFramePacketOverhead( | 149 size_t length = 1 + QuicPacketCreator::StreamFramePacketOverhead( |
| 150 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 150 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
| 151 PACKET_6BYTE_SEQUENCE_NUMBER, 0u, NOT_IN_FEC_GROUP); | 151 PACKET_6BYTE_SEQUENCE_NUMBER, 0u, NOT_IN_FEC_GROUP); |
| 152 QuicConnectionPeer::GetPacketCreator(connection_)->set_max_packet_length( | 152 QuicConnectionPeer::GetPacketCreator(connection_)->SetMaxPacketLength(length); |
| 153 length); | |
| 154 | 153 |
| 155 EXPECT_CALL(*session_, WritevData(kHeadersStreamId, _, _, _, _, _)).WillOnce( | 154 EXPECT_CALL(*session_, WritevData(kHeadersStreamId, _, _, _, _, _)).WillOnce( |
| 156 Return(QuicConsumedData(kDataLen, true))); | 155 Return(QuicConsumedData(kDataLen, true))); |
| 157 stream_->WriteOrBufferData(kData1, false, nullptr); | 156 stream_->WriteOrBufferData(kData1, false, nullptr); |
| 158 EXPECT_FALSE(HasWriteBlockedStreams()); | 157 EXPECT_FALSE(HasWriteBlockedStreams()); |
| 159 } | 158 } |
| 160 | 159 |
| 161 TEST_F(ReliableQuicStreamTest, NoBlockingIfNoDataOrFin) { | 160 TEST_F(ReliableQuicStreamTest, NoBlockingIfNoDataOrFin) { |
| 162 Initialize(kShouldProcessData); | 161 Initialize(kShouldProcessData); |
| 163 | 162 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 ASSERT_EQ(1u, write_blocked_list_->NumBlockedStreams()); | 201 ASSERT_EQ(1u, write_blocked_list_->NumBlockedStreams()); |
| 203 } | 202 } |
| 204 | 203 |
| 205 TEST_F(ReliableQuicStreamTest, WriteOrBufferData) { | 204 TEST_F(ReliableQuicStreamTest, WriteOrBufferData) { |
| 206 Initialize(kShouldProcessData); | 205 Initialize(kShouldProcessData); |
| 207 | 206 |
| 208 EXPECT_FALSE(HasWriteBlockedStreams()); | 207 EXPECT_FALSE(HasWriteBlockedStreams()); |
| 209 size_t length = 1 + QuicPacketCreator::StreamFramePacketOverhead( | 208 size_t length = 1 + QuicPacketCreator::StreamFramePacketOverhead( |
| 210 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 209 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
| 211 PACKET_6BYTE_SEQUENCE_NUMBER, 0u, NOT_IN_FEC_GROUP); | 210 PACKET_6BYTE_SEQUENCE_NUMBER, 0u, NOT_IN_FEC_GROUP); |
| 212 QuicConnectionPeer::GetPacketCreator(connection_)->set_max_packet_length( | 211 QuicConnectionPeer::GetPacketCreator(connection_)->SetMaxPacketLength(length); |
| 213 length); | |
| 214 | 212 |
| 215 EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)).WillOnce( | 213 EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)).WillOnce( |
| 216 Return(QuicConsumedData(kDataLen - 1, false))); | 214 Return(QuicConsumedData(kDataLen - 1, false))); |
| 217 stream_->WriteOrBufferData(kData1, false, nullptr); | 215 stream_->WriteOrBufferData(kData1, false, nullptr); |
| 218 EXPECT_TRUE(HasWriteBlockedStreams()); | 216 EXPECT_TRUE(HasWriteBlockedStreams()); |
| 219 | 217 |
| 220 // Queue a bytes_consumed write. | 218 // Queue a bytes_consumed write. |
| 221 stream_->WriteOrBufferData(kData2, false, nullptr); | 219 stream_->WriteOrBufferData(kData2, false, nullptr); |
| 222 | 220 |
| 223 // Make sure we get the tail of the first write followed by the bytes_consumed | 221 // Make sure we get the tail of the first write followed by the bytes_consumed |
| (...skipping 13 matching lines...) Expand all Loading... |
| 237 TEST_F(ReliableQuicStreamTest, WriteOrBufferDataWithFecProtectAlways) { | 235 TEST_F(ReliableQuicStreamTest, WriteOrBufferDataWithFecProtectAlways) { |
| 238 Initialize(kShouldProcessData); | 236 Initialize(kShouldProcessData); |
| 239 | 237 |
| 240 // Set FEC policy on stream. | 238 // Set FEC policy on stream. |
| 241 ReliableQuicStreamPeer::SetFecPolicy(stream_.get(), FEC_PROTECT_ALWAYS); | 239 ReliableQuicStreamPeer::SetFecPolicy(stream_.get(), FEC_PROTECT_ALWAYS); |
| 242 | 240 |
| 243 EXPECT_FALSE(HasWriteBlockedStreams()); | 241 EXPECT_FALSE(HasWriteBlockedStreams()); |
| 244 size_t length = 1 + QuicPacketCreator::StreamFramePacketOverhead( | 242 size_t length = 1 + QuicPacketCreator::StreamFramePacketOverhead( |
| 245 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 243 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
| 246 PACKET_6BYTE_SEQUENCE_NUMBER, 0u, IN_FEC_GROUP); | 244 PACKET_6BYTE_SEQUENCE_NUMBER, 0u, IN_FEC_GROUP); |
| 247 QuicConnectionPeer::GetPacketCreator(connection_)->set_max_packet_length( | 245 QuicConnectionPeer::GetPacketCreator(connection_)->SetMaxPacketLength(length); |
| 248 length); | |
| 249 | 246 |
| 250 // Write first data onto stream, which will cause one session write. | 247 // Write first data onto stream, which will cause one session write. |
| 251 EXPECT_CALL(*session_, WritevData(_, _, _, _, MUST_FEC_PROTECT, _)).WillOnce( | 248 EXPECT_CALL(*session_, WritevData(_, _, _, _, MUST_FEC_PROTECT, _)).WillOnce( |
| 252 Return(QuicConsumedData(kDataLen - 1, false))); | 249 Return(QuicConsumedData(kDataLen - 1, false))); |
| 253 stream_->WriteOrBufferData(kData1, false, nullptr); | 250 stream_->WriteOrBufferData(kData1, false, nullptr); |
| 254 EXPECT_TRUE(HasWriteBlockedStreams()); | 251 EXPECT_TRUE(HasWriteBlockedStreams()); |
| 255 | 252 |
| 256 // Queue a bytes_consumed write. | 253 // Queue a bytes_consumed write. |
| 257 stream_->WriteOrBufferData(kData2, false, nullptr); | 254 stream_->WriteOrBufferData(kData2, false, nullptr); |
| 258 | 255 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 273 TEST_F(ReliableQuicStreamTest, WriteOrBufferDataWithFecProtectOptional) { | 270 TEST_F(ReliableQuicStreamTest, WriteOrBufferDataWithFecProtectOptional) { |
| 274 Initialize(kShouldProcessData); | 271 Initialize(kShouldProcessData); |
| 275 | 272 |
| 276 // Set FEC policy on stream. | 273 // Set FEC policy on stream. |
| 277 ReliableQuicStreamPeer::SetFecPolicy(stream_.get(), FEC_PROTECT_OPTIONAL); | 274 ReliableQuicStreamPeer::SetFecPolicy(stream_.get(), FEC_PROTECT_OPTIONAL); |
| 278 | 275 |
| 279 EXPECT_FALSE(HasWriteBlockedStreams()); | 276 EXPECT_FALSE(HasWriteBlockedStreams()); |
| 280 size_t length = 1 + QuicPacketCreator::StreamFramePacketOverhead( | 277 size_t length = 1 + QuicPacketCreator::StreamFramePacketOverhead( |
| 281 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, | 278 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, |
| 282 PACKET_6BYTE_SEQUENCE_NUMBER, 0u, NOT_IN_FEC_GROUP); | 279 PACKET_6BYTE_SEQUENCE_NUMBER, 0u, NOT_IN_FEC_GROUP); |
| 283 QuicConnectionPeer::GetPacketCreator(connection_)->set_max_packet_length( | 280 QuicConnectionPeer::GetPacketCreator(connection_)->SetMaxPacketLength( |
| 284 length); | 281 length); |
| 285 | 282 |
| 286 // Write first data onto stream, which will cause one session write. | 283 // Write first data onto stream, which will cause one session write. |
| 287 EXPECT_CALL(*session_, WritevData(_, _, _, _, MAY_FEC_PROTECT, _)).WillOnce( | 284 EXPECT_CALL(*session_, WritevData(_, _, _, _, MAY_FEC_PROTECT, _)).WillOnce( |
| 288 Return(QuicConsumedData(kDataLen - 1, false))); | 285 Return(QuicConsumedData(kDataLen - 1, false))); |
| 289 stream_->WriteOrBufferData(kData1, false, nullptr); | 286 stream_->WriteOrBufferData(kData1, false, nullptr); |
| 290 EXPECT_TRUE(HasWriteBlockedStreams()); | 287 EXPECT_TRUE(HasWriteBlockedStreams()); |
| 291 | 288 |
| 292 // Queue a bytes_consumed write. | 289 // Queue a bytes_consumed write. |
| 293 stream_->WriteOrBufferData(kData2, false, nullptr); | 290 stream_->WriteOrBufferData(kData2, false, nullptr); |
| (...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 637 | 634 |
| 638 EXPECT_FALSE(stream_->HasFinalReceivedByteOffset()); | 635 EXPECT_FALSE(stream_->HasFinalReceivedByteOffset()); |
| 639 QuicRstStreamFrame rst_frame(stream_->id(), QUIC_STREAM_CANCELLED, 1234); | 636 QuicRstStreamFrame rst_frame(stream_->id(), QUIC_STREAM_CANCELLED, 1234); |
| 640 stream_->OnStreamReset(rst_frame); | 637 stream_->OnStreamReset(rst_frame); |
| 641 EXPECT_TRUE(stream_->HasFinalReceivedByteOffset()); | 638 EXPECT_TRUE(stream_->HasFinalReceivedByteOffset()); |
| 642 } | 639 } |
| 643 | 640 |
| 644 } // namespace | 641 } // namespace |
| 645 } // namespace test | 642 } // namespace test |
| 646 } // namespace net | 643 } // namespace net |
| OLD | NEW |