| 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 |