OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_received_packet_manager.h" | 5 #include "net/quic/core/quic_received_packet_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "net/quic/core/quic_connection_stats.h" | 10 #include "net/quic/core/quic_connection_stats.h" |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 QuicPacketEntropyHash entropy_hash) { | 217 QuicPacketEntropyHash entropy_hash) { |
218 RecordPacketReceipt(packet_number, entropy_hash, QuicTime::Zero()); | 218 RecordPacketReceipt(packet_number, entropy_hash, QuicTime::Zero()); |
219 } | 219 } |
220 | 220 |
221 void RecordPacketReceipt(QuicPacketNumber packet_number, | 221 void RecordPacketReceipt(QuicPacketNumber packet_number, |
222 QuicPacketEntropyHash entropy_hash, | 222 QuicPacketEntropyHash entropy_hash, |
223 QuicTime receipt_time) { | 223 QuicTime receipt_time) { |
224 QuicPacketHeader header; | 224 QuicPacketHeader header; |
225 header.packet_number = packet_number; | 225 header.packet_number = packet_number; |
226 header.entropy_hash = entropy_hash; | 226 header.entropy_hash = entropy_hash; |
227 received_manager_.RecordPacketReceived(0u, header, receipt_time); | 227 received_manager_.RecordPacketReceived(header, receipt_time); |
228 } | 228 } |
229 | 229 |
230 QuicConnectionStats stats_; | 230 QuicConnectionStats stats_; |
231 QuicReceivedPacketManager received_manager_; | 231 QuicReceivedPacketManager received_manager_; |
232 }; | 232 }; |
233 | 233 |
234 INSTANTIATE_TEST_CASE_P(QuicReceivedPacketManagerTest, | 234 INSTANTIATE_TEST_CASE_P(QuicReceivedPacketManagerTest, |
235 QuicReceivedPacketManagerTest, | 235 QuicReceivedPacketManagerTest, |
236 ::testing::ValuesIn(GetTestParams())); | 236 ::testing::ValuesIn(GetTestParams())); |
237 | 237 |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 | 321 |
322 // No reordering. | 322 // No reordering. |
323 EXPECT_EQ(0u, stats_.max_sequence_reordering); | 323 EXPECT_EQ(0u, stats_.max_sequence_reordering); |
324 EXPECT_EQ(0, stats_.max_time_reordering_us); | 324 EXPECT_EQ(0, stats_.max_time_reordering_us); |
325 EXPECT_EQ(0u, stats_.packets_reordered); | 325 EXPECT_EQ(0u, stats_.packets_reordered); |
326 } | 326 } |
327 | 327 |
328 TEST_P(QuicReceivedPacketManagerTest, DontWaitForPacketsBefore) { | 328 TEST_P(QuicReceivedPacketManagerTest, DontWaitForPacketsBefore) { |
329 QuicPacketHeader header; | 329 QuicPacketHeader header; |
330 header.packet_number = 2u; | 330 header.packet_number = 2u; |
331 received_manager_.RecordPacketReceived(0u, header, QuicTime::Zero()); | 331 received_manager_.RecordPacketReceived(header, QuicTime::Zero()); |
332 header.packet_number = 7u; | 332 header.packet_number = 7u; |
333 received_manager_.RecordPacketReceived(0u, header, QuicTime::Zero()); | 333 received_manager_.RecordPacketReceived(header, QuicTime::Zero()); |
334 EXPECT_TRUE(received_manager_.IsAwaitingPacket(3u)); | 334 EXPECT_TRUE(received_manager_.IsAwaitingPacket(3u)); |
335 EXPECT_TRUE(received_manager_.IsAwaitingPacket(6u)); | 335 EXPECT_TRUE(received_manager_.IsAwaitingPacket(6u)); |
336 EXPECT_TRUE(QuicReceivedPacketManagerPeer::DontWaitForPacketsBefore( | 336 EXPECT_TRUE(QuicReceivedPacketManagerPeer::DontWaitForPacketsBefore( |
337 &received_manager_, 4)); | 337 &received_manager_, 4)); |
338 EXPECT_FALSE(received_manager_.IsAwaitingPacket(3u)); | 338 EXPECT_FALSE(received_manager_.IsAwaitingPacket(3u)); |
339 EXPECT_TRUE(received_manager_.IsAwaitingPacket(6u)); | 339 EXPECT_TRUE(received_manager_.IsAwaitingPacket(6u)); |
340 } | 340 } |
341 | 341 |
342 TEST_P(QuicReceivedPacketManagerTest, GetUpdatedAckFrame) { | 342 TEST_P(QuicReceivedPacketManagerTest, GetUpdatedAckFrame) { |
343 QuicPacketHeader header; | 343 QuicPacketHeader header; |
344 header.packet_number = 2u; | 344 header.packet_number = 2u; |
345 QuicTime two_ms = QuicTime::Zero() + QuicTime::Delta::FromMilliseconds(2); | 345 QuicTime two_ms = QuicTime::Zero() + QuicTime::Delta::FromMilliseconds(2); |
346 EXPECT_FALSE(received_manager_.ack_frame_updated()); | 346 EXPECT_FALSE(received_manager_.ack_frame_updated()); |
347 received_manager_.RecordPacketReceived(0u, header, two_ms); | 347 received_manager_.RecordPacketReceived(header, two_ms); |
348 EXPECT_TRUE(received_manager_.ack_frame_updated()); | 348 EXPECT_TRUE(received_manager_.ack_frame_updated()); |
349 | 349 |
350 QuicFrame ack = received_manager_.GetUpdatedAckFrame(QuicTime::Zero()); | 350 QuicFrame ack = received_manager_.GetUpdatedAckFrame(QuicTime::Zero()); |
351 EXPECT_FALSE(received_manager_.ack_frame_updated()); | 351 EXPECT_FALSE(received_manager_.ack_frame_updated()); |
352 // When UpdateReceivedPacketInfo with a time earlier than the time of the | 352 // When UpdateReceivedPacketInfo with a time earlier than the time of the |
353 // largest observed packet, make sure that the delta is 0, not negative. | 353 // largest observed packet, make sure that the delta is 0, not negative. |
354 EXPECT_EQ(QuicTime::Delta::Zero(), ack.ack_frame->ack_delay_time); | 354 EXPECT_EQ(QuicTime::Delta::Zero(), ack.ack_frame->ack_delay_time); |
355 EXPECT_EQ(1u, ack.ack_frame->received_packet_times.size()); | 355 EXPECT_EQ(1u, ack.ack_frame->received_packet_times.size()); |
356 | 356 |
357 QuicTime four_ms = QuicTime::Zero() + QuicTime::Delta::FromMilliseconds(4); | 357 QuicTime four_ms = QuicTime::Zero() + QuicTime::Delta::FromMilliseconds(4); |
358 ack = received_manager_.GetUpdatedAckFrame(four_ms); | 358 ack = received_manager_.GetUpdatedAckFrame(four_ms); |
359 EXPECT_FALSE(received_manager_.ack_frame_updated()); | 359 EXPECT_FALSE(received_manager_.ack_frame_updated()); |
360 // When UpdateReceivedPacketInfo after not having received a new packet, | 360 // When UpdateReceivedPacketInfo after not having received a new packet, |
361 // the delta should still be accurate. | 361 // the delta should still be accurate. |
362 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(2), | 362 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(2), |
363 ack.ack_frame->ack_delay_time); | 363 ack.ack_frame->ack_delay_time); |
364 // And received packet times won't have change. | 364 // And received packet times won't have change. |
365 EXPECT_EQ(1u, ack.ack_frame->received_packet_times.size()); | 365 EXPECT_EQ(1u, ack.ack_frame->received_packet_times.size()); |
366 | 366 |
367 header.packet_number = 999u; | 367 header.packet_number = 999u; |
368 received_manager_.RecordPacketReceived(0u, header, two_ms); | 368 received_manager_.RecordPacketReceived(header, two_ms); |
369 header.packet_number = 4u; | 369 header.packet_number = 4u; |
370 received_manager_.RecordPacketReceived(0u, header, two_ms); | 370 received_manager_.RecordPacketReceived(header, two_ms); |
371 header.packet_number = 1000u; | 371 header.packet_number = 1000u; |
372 received_manager_.RecordPacketReceived(0u, header, two_ms); | 372 received_manager_.RecordPacketReceived(header, two_ms); |
373 EXPECT_TRUE(received_manager_.ack_frame_updated()); | 373 EXPECT_TRUE(received_manager_.ack_frame_updated()); |
374 ack = received_manager_.GetUpdatedAckFrame(two_ms); | 374 ack = received_manager_.GetUpdatedAckFrame(two_ms); |
375 EXPECT_FALSE(received_manager_.ack_frame_updated()); | 375 EXPECT_FALSE(received_manager_.ack_frame_updated()); |
376 // UpdateReceivedPacketInfo should discard any times which can't be | 376 // UpdateReceivedPacketInfo should discard any times which can't be |
377 // expressed on the wire. | 377 // expressed on the wire. |
378 EXPECT_EQ(2u, ack.ack_frame->received_packet_times.size()); | 378 EXPECT_EQ(2u, ack.ack_frame->received_packet_times.size()); |
379 } | 379 } |
380 | 380 |
381 TEST_P(QuicReceivedPacketManagerTest, UpdateReceivedConnectionStats) { | 381 TEST_P(QuicReceivedPacketManagerTest, UpdateReceivedConnectionStats) { |
382 EXPECT_FALSE(received_manager_.ack_frame_updated()); | 382 EXPECT_FALSE(received_manager_.ack_frame_updated()); |
383 RecordPacketReceipt(1, 0); | 383 RecordPacketReceipt(1, 0); |
384 EXPECT_TRUE(received_manager_.ack_frame_updated()); | 384 EXPECT_TRUE(received_manager_.ack_frame_updated()); |
385 RecordPacketReceipt(6, 0); | 385 RecordPacketReceipt(6, 0); |
386 RecordPacketReceipt(2, 0, | 386 RecordPacketReceipt(2, 0, |
387 QuicTime::Zero() + QuicTime::Delta::FromMilliseconds(1)); | 387 QuicTime::Zero() + QuicTime::Delta::FromMilliseconds(1)); |
388 | 388 |
389 EXPECT_EQ(4u, stats_.max_sequence_reordering); | 389 EXPECT_EQ(4u, stats_.max_sequence_reordering); |
390 EXPECT_EQ(1000, stats_.max_time_reordering_us); | 390 EXPECT_EQ(1000, stats_.max_time_reordering_us); |
391 EXPECT_EQ(1u, stats_.packets_reordered); | 391 EXPECT_EQ(1u, stats_.packets_reordered); |
392 } | 392 } |
393 | 393 |
394 } // namespace | 394 } // namespace |
395 } // namespace test | 395 } // namespace test |
396 } // namespace net | 396 } // namespace net |
OLD | NEW |