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/quic_received_packet_manager.h" | 5 #include "net/quic/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/quic_connection_stats.h" | 10 #include "net/quic/quic_connection_stats.h" |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 | 196 |
197 void RecordPacketReceipt(QuicPacketNumber packet_number, | 197 void RecordPacketReceipt(QuicPacketNumber packet_number, |
198 QuicPacketEntropyHash entropy_hash, | 198 QuicPacketEntropyHash entropy_hash, |
199 QuicTime receipt_time) { | 199 QuicTime receipt_time) { |
200 QuicPacketHeader header; | 200 QuicPacketHeader header; |
201 header.packet_number = packet_number; | 201 header.packet_number = packet_number; |
202 header.entropy_hash = entropy_hash; | 202 header.entropy_hash = entropy_hash; |
203 received_manager_.RecordPacketReceived(0u, header, receipt_time); | 203 received_manager_.RecordPacketReceived(0u, header, receipt_time); |
204 } | 204 } |
205 | 205 |
206 void RecordPacketRevived(QuicPacketNumber packet_number) { | |
207 received_manager_.RecordPacketRevived(packet_number); | |
208 } | |
209 | |
210 QuicConnectionStats stats_; | 206 QuicConnectionStats stats_; |
211 QuicReceivedPacketManager received_manager_; | 207 QuicReceivedPacketManager received_manager_; |
212 }; | 208 }; |
213 | 209 |
214 TEST_F(QuicReceivedPacketManagerTest, ReceivedPacketEntropyHash) { | 210 TEST_F(QuicReceivedPacketManagerTest, ReceivedPacketEntropyHash) { |
215 vector<pair<QuicPacketNumber, QuicPacketEntropyHash>> entropies; | 211 vector<pair<QuicPacketNumber, QuicPacketEntropyHash>> entropies; |
216 entropies.push_back(std::make_pair(1, 12)); | 212 entropies.push_back(std::make_pair(1, 12)); |
217 entropies.push_back(std::make_pair(7, 1)); | 213 entropies.push_back(std::make_pair(7, 1)); |
218 entropies.push_back(std::make_pair(2, 33)); | 214 entropies.push_back(std::make_pair(2, 33)); |
219 entropies.push_back(std::make_pair(5, 3)); | 215 entropies.push_back(std::make_pair(5, 3)); |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 EXPECT_TRUE(received_manager_.ack_frame_updated()); | 343 EXPECT_TRUE(received_manager_.ack_frame_updated()); |
348 RecordPacketReceipt(6, 0); | 344 RecordPacketReceipt(6, 0); |
349 RecordPacketReceipt( | 345 RecordPacketReceipt( |
350 2, 0, QuicTime::Zero().Add(QuicTime::Delta::FromMilliseconds(1))); | 346 2, 0, QuicTime::Zero().Add(QuicTime::Delta::FromMilliseconds(1))); |
351 | 347 |
352 EXPECT_EQ(4u, stats_.max_sequence_reordering); | 348 EXPECT_EQ(4u, stats_.max_sequence_reordering); |
353 EXPECT_EQ(1000, stats_.max_time_reordering_us); | 349 EXPECT_EQ(1000, stats_.max_time_reordering_us); |
354 EXPECT_EQ(1u, stats_.packets_reordered); | 350 EXPECT_EQ(1u, stats_.packets_reordered); |
355 } | 351 } |
356 | 352 |
357 TEST_F(QuicReceivedPacketManagerTest, RevivedPacket) { | |
358 EXPECT_FALSE(received_manager_.ack_frame_updated()); | |
359 RecordPacketReceipt(1, 0); | |
360 EXPECT_TRUE(received_manager_.ack_frame_updated()); | |
361 RecordPacketReceipt(3, 0); | |
362 RecordPacketRevived(2); | |
363 | |
364 QuicAckFrame ack; | |
365 received_manager_.UpdateReceivedPacketInfo(&ack, QuicTime::Zero()); | |
366 EXPECT_FALSE(received_manager_.ack_frame_updated()); | |
367 EXPECT_EQ(1u, ack.missing_packets.NumPacketsSlow()); | |
368 EXPECT_EQ(2u, ack.missing_packets.Min()); | |
369 EXPECT_EQ(2u, ack.latest_revived_packet); | |
370 } | |
371 | |
372 TEST_F(QuicReceivedPacketManagerTest, PacketRevivedThenReceived) { | |
373 EXPECT_FALSE(received_manager_.ack_frame_updated()); | |
374 RecordPacketReceipt(1, 0); | |
375 EXPECT_TRUE(received_manager_.ack_frame_updated()); | |
376 RecordPacketReceipt(3, 0); | |
377 RecordPacketRevived(2); | |
378 RecordPacketReceipt(2, 0); | |
379 | |
380 QuicAckFrame ack; | |
381 received_manager_.UpdateReceivedPacketInfo(&ack, QuicTime::Zero()); | |
382 EXPECT_TRUE(ack.missing_packets.Empty()); | |
383 EXPECT_EQ(0u, ack.latest_revived_packet); | |
384 } | |
385 | |
386 TEST_F(QuicReceivedPacketManagerTest, RevivedPacketAckFrameUpdated) { | |
387 EXPECT_FALSE(received_manager_.ack_frame_updated()); | |
388 RecordPacketReceipt(1, 0); | |
389 RecordPacketReceipt(3, 0); | |
390 EXPECT_TRUE(received_manager_.ack_frame_updated()); | |
391 | |
392 QuicAckFrame ack; | |
393 received_manager_.UpdateReceivedPacketInfo(&ack, QuicTime::Zero()); | |
394 EXPECT_FALSE(received_manager_.ack_frame_updated()); | |
395 EXPECT_EQ(1u, ack.missing_packets.NumPacketsSlow()); | |
396 EXPECT_EQ(2u, ack.missing_packets.Min()); | |
397 EXPECT_EQ(0u, ack.latest_revived_packet); | |
398 | |
399 RecordPacketRevived(2); | |
400 EXPECT_TRUE(received_manager_.ack_frame_updated()); | |
401 received_manager_.UpdateReceivedPacketInfo(&ack, QuicTime::Zero()); | |
402 EXPECT_FALSE(received_manager_.ack_frame_updated()); | |
403 EXPECT_EQ(1u, ack.missing_packets.NumPacketsSlow()); | |
404 EXPECT_EQ(2u, ack.missing_packets.Min()); | |
405 EXPECT_EQ(2u, ack.latest_revived_packet); | |
406 } | |
407 | |
408 } // namespace | 353 } // namespace |
409 } // namespace test | 354 } // namespace test |
410 } // namespace net | 355 } // namespace net |
OLD | NEW |