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 |