Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(673)

Side by Side Diff: net/quic/quic_sent_packet_manager_test.cc

Issue 278823005: QUIC change to invoke SetNotPending for retransmissions in (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_unacked_packet_map.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 vector<QuicPacketSequenceNumber> lost_vector; 109 vector<QuicPacketSequenceNumber> lost_vector;
110 for (size_t i = 0; i < num_packets_lost; ++i) { 110 for (size_t i = 0; i < num_packets_lost; ++i) {
111 lost_vector.push_back(packets_lost[i]); 111 lost_vector.push_back(packets_lost[i]);
112 } 112 }
113 EXPECT_CALL(*send_algorithm_, 113 EXPECT_CALL(*send_algorithm_,
114 OnCongestionEvent(rtt_updated, _, 114 OnCongestionEvent(rtt_updated, _,
115 Pointwise(KeyEq(), ack_vector), 115 Pointwise(KeyEq(), ack_vector),
116 Pointwise(KeyEq(), lost_vector))); 116 Pointwise(KeyEq(), lost_vector)));
117 } 117 }
118 118
119 // Retransmits a packet as though it was a TLP retransmission, because TLP
120 // leaves the |old_sequence_number| pending.
121 // TODO(ianswett): Test with transmission types besides TLP.
119 void RetransmitPacket(QuicPacketSequenceNumber old_sequence_number, 122 void RetransmitPacket(QuicPacketSequenceNumber old_sequence_number,
120 QuicPacketSequenceNumber new_sequence_number) { 123 QuicPacketSequenceNumber new_sequence_number) {
121 QuicSentPacketManagerPeer::MarkForRetransmission( 124 QuicSentPacketManagerPeer::MarkForRetransmission(
122 &manager_, old_sequence_number, LOSS_RETRANSMISSION); 125 &manager_, old_sequence_number, TLP_RETRANSMISSION);
123 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 126 EXPECT_TRUE(manager_.HasPendingRetransmissions());
124 QuicSentPacketManager::PendingRetransmission next_retransmission = 127 QuicSentPacketManager::PendingRetransmission next_retransmission =
125 manager_.NextPendingRetransmission(); 128 manager_.NextPendingRetransmission();
126 EXPECT_EQ(old_sequence_number, next_retransmission.sequence_number); 129 EXPECT_EQ(old_sequence_number, next_retransmission.sequence_number);
127 EXPECT_EQ(LOSS_RETRANSMISSION, 130 EXPECT_EQ(TLP_RETRANSMISSION,
128 next_retransmission.transmission_type); 131 next_retransmission.transmission_type);
129 manager_.OnRetransmittedPacket(old_sequence_number, new_sequence_number); 132 manager_.OnRetransmittedPacket(old_sequence_number, new_sequence_number);
130 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission( 133 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(
131 &manager_, new_sequence_number)); 134 &manager_, new_sequence_number));
132 } 135 }
133 136
134 void RetransmitAndSendPacket(QuicPacketSequenceNumber old_sequence_number, 137 void RetransmitAndSendPacket(QuicPacketSequenceNumber old_sequence_number,
135 QuicPacketSequenceNumber new_sequence_number) { 138 QuicPacketSequenceNumber new_sequence_number) {
136 RetransmitPacket(old_sequence_number, new_sequence_number); 139 RetransmitPacket(old_sequence_number, new_sequence_number);
137 140
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 // Packet 1 is unacked, pending, but not retransmittable. 283 // Packet 1 is unacked, pending, but not retransmittable.
281 QuicPacketSequenceNumber unacked[] = { 1 }; 284 QuicPacketSequenceNumber unacked[] = { 1 };
282 VerifyUnackedPackets(unacked, arraysize(unacked)); 285 VerifyUnackedPackets(unacked, arraysize(unacked));
283 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); 286 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
284 VerifyRetransmittablePackets(NULL, 0); 287 VerifyRetransmittablePackets(NULL, 0);
285 } 288 }
286 289
287 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { 290 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) {
288 SendDataPacket(1); 291 SendDataPacket(1);
289 QuicSentPacketManagerPeer::MarkForRetransmission( 292 QuicSentPacketManagerPeer::MarkForRetransmission(
290 &manager_, 1, LOSS_RETRANSMISSION); 293 &manager_, 1, TLP_RETRANSMISSION);
291 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 294 EXPECT_TRUE(manager_.HasPendingRetransmissions());
292 295
293 // Ack 1. 296 // Ack 1.
294 ReceivedPacketInfo received_info; 297 ReceivedPacketInfo received_info;
295 received_info.largest_observed = 1; 298 received_info.largest_observed = 1;
296 ExpectAck(1); 299 ExpectAck(1);
297 manager_.OnIncomingAck(received_info, clock_.Now()); 300 manager_.OnIncomingAck(received_info, clock_.Now());
298 301
299 // There should no longer be a pending retransmission. 302 // There should no longer be a pending retransmission.
300 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 303 EXPECT_FALSE(manager_.HasPendingRetransmissions());
(...skipping 889 matching lines...) Expand 10 before | Expand all | Expand 10 after
1190 1193
1191 EXPECT_EQ(kTime, 1194 EXPECT_EQ(kTime,
1192 QuicSentPacketManagerPeer::GetLossAlgorithm( 1195 QuicSentPacketManagerPeer::GetLossAlgorithm(
1193 &manager_)->GetLossDetectionType()); 1196 &manager_)->GetLossDetectionType());
1194 } 1197 }
1195 1198
1196 1199
1197 } // namespace 1200 } // namespace
1198 } // namespace test 1201 } // namespace test
1199 } // namespace net 1202 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_unacked_packet_map.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698