| 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_sent_packet_manager.h" | 5 #include "net/quic/quic_sent_packet_manager.h" |
| 6 | 6 |
| 7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
| 8 #include "net/quic/test_tools/quic_config_peer.h" | 8 #include "net/quic/test_tools/quic_config_peer.h" |
| 9 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" | 9 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" |
| 10 #include "net/quic/test_tools/quic_test_utils.h" | 10 #include "net/quic/test_tools/quic_test_utils.h" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 | 62 |
| 63 EXPECT_TRUE(manager_.HasUnackedPackets()); | 63 EXPECT_TRUE(manager_.HasUnackedPackets()); |
| 64 EXPECT_EQ(packets[0], manager_.GetLeastUnackedSentPacket()); | 64 EXPECT_EQ(packets[0], manager_.GetLeastUnackedSentPacket()); |
| 65 for (size_t i = 0; i < num_packets; ++i) { | 65 for (size_t i = 0; i < num_packets; ++i) { |
| 66 EXPECT_TRUE(manager_.IsUnacked(packets[i])) << packets[i]; | 66 EXPECT_TRUE(manager_.IsUnacked(packets[i])) << packets[i]; |
| 67 } | 67 } |
| 68 } | 68 } |
| 69 | 69 |
| 70 void VerifyRetransmittablePackets(QuicPacketSequenceNumber* packets, | 70 void VerifyRetransmittablePackets(QuicPacketSequenceNumber* packets, |
| 71 size_t num_packets) { | 71 size_t num_packets) { |
| 72 SequenceNumberSet unacked = | |
| 73 QuicSentPacketManagerPeer::GetUnackedPackets(&manager_); | |
| 74 for (size_t i = 0; i < num_packets; ++i) { | |
| 75 EXPECT_TRUE(ContainsKey(unacked, packets[i])) << packets[i]; | |
| 76 } | |
| 77 size_t num_retransmittable = 0; | |
| 78 for (SequenceNumberSet::const_iterator it = unacked.begin(); | |
| 79 it != unacked.end(); ++it) { | |
| 80 if (manager_.HasRetransmittableFrames(*it)) { | |
| 81 ++num_retransmittable; | |
| 82 } | |
| 83 } | |
| 84 EXPECT_EQ(num_packets, | 72 EXPECT_EQ(num_packets, |
| 85 QuicSentPacketManagerPeer::GetNumRetransmittablePackets( | 73 QuicSentPacketManagerPeer::GetNumRetransmittablePackets( |
| 86 &manager_)); | 74 &manager_)); |
| 87 EXPECT_EQ(num_packets, num_retransmittable); | 75 for (size_t i = 0; i < num_packets; ++i) { |
| 76 EXPECT_TRUE(manager_.HasRetransmittableFrames(packets[i])) |
| 77 << " packets[" << i << "]:" << packets[i]; |
| 78 } |
| 88 } | 79 } |
| 89 | 80 |
| 90 void ExpectAck(QuicPacketSequenceNumber largest_observed) { | 81 void ExpectAck(QuicPacketSequenceNumber largest_observed) { |
| 91 EXPECT_CALL(*send_algorithm_, OnCongestionEvent( | 82 EXPECT_CALL(*send_algorithm_, OnCongestionEvent( |
| 92 true, _, ElementsAre(Pair(largest_observed, _)), _)); | 83 true, _, ElementsAre(Pair(largest_observed, _)), _)); |
| 93 } | 84 } |
| 94 | 85 |
| 95 void ExpectUpdatedRtt(QuicPacketSequenceNumber largest_observed) { | 86 void ExpectUpdatedRtt(QuicPacketSequenceNumber largest_observed) { |
| 96 EXPECT_CALL(*send_algorithm_, | 87 EXPECT_CALL(*send_algorithm_, |
| 97 OnCongestionEvent(true, _, _, _)); | 88 OnCongestionEvent(true, _, _, _)); |
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 received_info.missing_packets.insert(2); | 541 received_info.missing_packets.insert(2); |
| 551 received_info.missing_packets.insert(3); | 542 received_info.missing_packets.insert(3); |
| 552 received_info.missing_packets.insert(4); | 543 received_info.missing_packets.insert(4); |
| 553 received_info.is_truncated = true; | 544 received_info.is_truncated = true; |
| 554 | 545 |
| 555 QuicPacketSequenceNumber lost[] = { 1 }; | 546 QuicPacketSequenceNumber lost[] = { 1 }; |
| 556 ExpectAcksAndLosses(true, NULL, 0, lost, arraysize(lost)); | 547 ExpectAcksAndLosses(true, NULL, 0, lost, arraysize(lost)); |
| 557 manager_.OnIncomingAck(received_info, clock_.Now()); | 548 manager_.OnIncomingAck(received_info, clock_.Now()); |
| 558 | 549 |
| 559 // High water mark will be raised. | 550 // High water mark will be raised. |
| 560 QuicPacketSequenceNumber unacked[] = { 2, 3, 4 }; | 551 QuicPacketSequenceNumber unacked[] = { 2, 3, 4, 5 }; |
| 561 VerifyUnackedPackets(unacked, arraysize(unacked)); | 552 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 562 QuicPacketSequenceNumber retransmittable[] = { 4 }; | 553 QuicPacketSequenceNumber retransmittable[] = { 5 }; |
| 563 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 554 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
| 564 } | 555 } |
| 565 | 556 |
| 566 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) { | 557 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) { |
| 567 SendDataPacket(1); | 558 SendDataPacket(1); |
| 568 RetransmitAndSendPacket(1, 2); | 559 RetransmitAndSendPacket(1, 2); |
| 569 RetransmitAndSendPacket(2, 3); | 560 RetransmitAndSendPacket(2, 3); |
| 570 RetransmitAndSendPacket(3, 4); | 561 RetransmitAndSendPacket(3, 4); |
| 571 manager_.OnSerializedPacket(CreateDataPacket(5)); | 562 manager_.OnSerializedPacket(CreateDataPacket(5)); |
| 572 manager_.OnSerializedPacket(CreateDataPacket(6)); | 563 manager_.OnSerializedPacket(CreateDataPacket(6)); |
| (...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1219 | 1210 |
| 1220 EXPECT_EQ(kTime, | 1211 EXPECT_EQ(kTime, |
| 1221 QuicSentPacketManagerPeer::GetLossAlgorithm( | 1212 QuicSentPacketManagerPeer::GetLossAlgorithm( |
| 1222 &manager_)->GetLossDetectionType()); | 1213 &manager_)->GetLossDetectionType()); |
| 1223 } | 1214 } |
| 1224 | 1215 |
| 1225 | 1216 |
| 1226 } // namespace | 1217 } // namespace |
| 1227 } // namespace test | 1218 } // namespace test |
| 1228 } // namespace net | 1219 } // namespace net |
| OLD | NEW |