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 |