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

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

Issue 564663005: Discard all useless QUIC retransmissions instead of only the most recent (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@add_QUIC_CONNECTION_OVERALL_TIMED_OUT_75544619
Patch Set: Created 6 years, 3 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
« no previous file with comments | « net/quic/quic_unacked_packet_map.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_unacked_packet_map.h" 5 #include "net/quic/quic_unacked_packet_map.h"
6 6
7 #include "net/quic/test_tools/quic_test_utils.h" 7 #include "net/quic/test_tools/quic_test_utils.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 using std::min; 10 using std::min;
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 VerifyInFlightPackets(pending5, arraysize(pending5)); 256 VerifyInFlightPackets(pending5, arraysize(pending5));
257 257
258 // Now test ClearAllPreviousTransmissions, leaving one packet. 258 // Now test ClearAllPreviousTransmissions, leaving one packet.
259 unacked_packets_.ClearAllPreviousRetransmissions(); 259 unacked_packets_.ClearAllPreviousRetransmissions();
260 QuicPacketSequenceNumber unacked5[] = { 7 }; 260 QuicPacketSequenceNumber unacked5[] = { 7 };
261 VerifyUnackedPackets(unacked5, arraysize(unacked5)); 261 VerifyUnackedPackets(unacked5, arraysize(unacked5));
262 QuicPacketSequenceNumber retransmittable5[] = { 7 }; 262 QuicPacketSequenceNumber retransmittable5[] = { 7 };
263 VerifyRetransmittablePackets(retransmittable5, arraysize(retransmittable5)); 263 VerifyRetransmittablePackets(retransmittable5, arraysize(retransmittable5));
264 } 264 }
265 265
266 TEST_F(QuicUnackedPacketMapTest, RetransmitFourTimes) {
267 // Simulate a retransmittable packet being sent and retransmitted twice.
268 unacked_packets_.AddPacket(CreateRetransmittablePacket(1));
269 unacked_packets_.SetSent(1, now_, kDefaultLength, true);
270 unacked_packets_.AddPacket(CreateRetransmittablePacket(2));
271 unacked_packets_.SetSent(2, now_, kDefaultLength, true);
272
273 QuicPacketSequenceNumber unacked[] = { 1, 2 };
274 VerifyUnackedPackets(unacked, arraysize(unacked));
275 VerifyInFlightPackets(unacked, arraysize(unacked));
276 QuicPacketSequenceNumber retransmittable[] = { 1, 2 };
277 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
278
279 // Early retransmit 1 as 3.
280 unacked_packets_.IncreaseLargestObserved(2);
281 unacked_packets_.RemoveFromInFlight(2);
282 unacked_packets_.RemoveRetransmittability(2);
283 unacked_packets_.RemoveFromInFlight(1);
284 unacked_packets_.OnRetransmittedPacket(1, 3, LOSS_RETRANSMISSION);
285 unacked_packets_.SetSent(3, now_, kDefaultLength, true);
286
287 QuicPacketSequenceNumber unacked2[] = { 1, 3 };
288 VerifyUnackedPackets(unacked2, arraysize(unacked2));
289 QuicPacketSequenceNumber pending2[] = { 3 };
290 VerifyInFlightPackets(pending2, arraysize(pending2));
291 QuicPacketSequenceNumber retransmittable2[] = { 3 };
292 VerifyRetransmittablePackets(retransmittable2, arraysize(retransmittable2));
293
294 // TLP 3 (formerly 1) as 4, and don't remove 1 from unacked.
295 unacked_packets_.OnRetransmittedPacket(3, 4, TLP_RETRANSMISSION);
296 unacked_packets_.SetSent(4, now_, kDefaultLength, true);
297 unacked_packets_.AddPacket(CreateRetransmittablePacket(5));
298 unacked_packets_.SetSent(5, now_, kDefaultLength, true);
299
300 QuicPacketSequenceNumber unacked3[] = { 1, 3, 4, 5 };
301 VerifyUnackedPackets(unacked3, arraysize(unacked3));
302 QuicPacketSequenceNumber pending3[] = { 3, 4, 5 };
303 VerifyInFlightPackets(pending3, arraysize(pending3));
304 QuicPacketSequenceNumber retransmittable3[] = { 4, 5 };
305 VerifyRetransmittablePackets(retransmittable3, arraysize(retransmittable3));
306
307 // Early retransmit 4 as 6 and ensure in flight packet 3 is removed.
308 unacked_packets_.IncreaseLargestObserved(5);
309 unacked_packets_.RemoveFromInFlight(5);
310 unacked_packets_.RemoveRetransmittability(5);
311 unacked_packets_.RemoveFromInFlight(3);
312 unacked_packets_.RemoveFromInFlight(4);
313 unacked_packets_.OnRetransmittedPacket(4, 6, LOSS_RETRANSMISSION);
314 unacked_packets_.SetSent(6, now_, kDefaultLength, true);
315
316 QuicPacketSequenceNumber unacked4[] = { 4, 6 };
317 VerifyUnackedPackets(unacked4, arraysize(unacked4));
318 QuicPacketSequenceNumber pending4[] = { 6 };
319 VerifyInFlightPackets(pending4, arraysize(pending4));
320 QuicPacketSequenceNumber retransmittable4[] = { 6 };
321 VerifyRetransmittablePackets(retransmittable4, arraysize(retransmittable4));
322 }
323
266 TEST_F(QuicUnackedPacketMapTest, RestoreInflight) { 324 TEST_F(QuicUnackedPacketMapTest, RestoreInflight) {
267 // Simulate a retransmittable packet being sent, retransmitted, and the first 325 // Simulate a retransmittable packet being sent, retransmitted, and the first
268 // transmission being acked. 326 // transmission being acked.
269 unacked_packets_.AddPacket(CreateRetransmittablePacket(1)); 327 unacked_packets_.AddPacket(CreateRetransmittablePacket(1));
270 unacked_packets_.SetSent(1, now_, kDefaultLength, true); 328 unacked_packets_.SetSent(1, now_, kDefaultLength, true);
271 unacked_packets_.OnRetransmittedPacket(1, 2, RTO_RETRANSMISSION); 329 unacked_packets_.OnRetransmittedPacket(1, 2, RTO_RETRANSMISSION);
272 unacked_packets_.RemoveFromInFlight(1); 330 unacked_packets_.RemoveFromInFlight(1);
273 unacked_packets_.SetSent(2, now_, kDefaultLength, true); 331 unacked_packets_.SetSent(2, now_, kDefaultLength, true);
274 332
275 QuicPacketSequenceNumber unacked[] = { 1, 2 }; 333 QuicPacketSequenceNumber unacked[] = { 1, 2 };
(...skipping 27 matching lines...) Expand all
303 EXPECT_TRUE(unacked_packets_.IsUnacked(3)); 361 EXPECT_TRUE(unacked_packets_.IsUnacked(3));
304 EXPECT_FALSE(unacked_packets_.IsUnacked(4)); 362 EXPECT_FALSE(unacked_packets_.IsUnacked(4));
305 EXPECT_TRUE(unacked_packets_.IsUnacked(5)); 363 EXPECT_TRUE(unacked_packets_.IsUnacked(5));
306 EXPECT_EQ(5u, unacked_packets_.largest_sent_packet()); 364 EXPECT_EQ(5u, unacked_packets_.largest_sent_packet());
307 } 365 }
308 366
309 367
310 } // namespace 368 } // namespace
311 } // namespace test 369 } // namespace test
312 } // namespace net 370 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_unacked_packet_map.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698