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

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

Issue 76723002: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compilation error Created 7 years, 1 month 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_session.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_test_utils.h" 8 #include "net/quic/test_tools/quic_test_utils.h"
9 #include "testing/gmock/include/gmock/gmock.h" 9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 13 matching lines...) Expand all
24 MOCK_METHOD2(OnPacketNacked, void(QuicPacketSequenceNumber sequence_number, 24 MOCK_METHOD2(OnPacketNacked, void(QuicPacketSequenceNumber sequence_number,
25 size_t nack_count)); 25 size_t nack_count));
26 }; 26 };
27 27
28 class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> { 28 class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
29 protected: 29 protected:
30 QuicSentPacketManagerTest() 30 QuicSentPacketManagerTest()
31 : manager_(true, &helper_) { 31 : manager_(true, &helper_) {
32 } 32 }
33 33
34 void SetUp() {
35 FLAGS_track_retransmission_history = GetParam();
36 }
37
38 ~QuicSentPacketManagerTest() { 34 ~QuicSentPacketManagerTest() {
39 STLDeleteElements(&packets_); 35 STLDeleteElements(&packets_);
40 } 36 }
41 37
42 38
43 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets, 39 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets,
44 size_t num_packets) { 40 size_t num_packets) {
45 if (num_packets == 0) { 41 if (num_packets == 0) {
46 EXPECT_FALSE(manager_.HasUnackedPackets()); 42 EXPECT_FALSE(manager_.HasUnackedPackets());
47 EXPECT_EQ(0u, manager_.GetNumUnackedPackets()); 43 EXPECT_EQ(0u, manager_.GetNumRetransmittablePackets());
48 EXPECT_TRUE(manager_.GetUnackedPackets().empty()); 44 EXPECT_TRUE(manager_.GetUnackedPackets().empty());
49 return; 45 return;
50 } 46 }
51 47
52 EXPECT_TRUE(manager_.HasUnackedPackets()); 48 EXPECT_TRUE(manager_.HasUnackedPackets());
53 EXPECT_EQ(packets[0], manager_.GetLeastUnackedSentPacket()); 49 EXPECT_EQ(packets[0], manager_.GetLeastUnackedSentPacket());
54 for (size_t i = 0; i < num_packets; ++i) { 50 for (size_t i = 0; i < num_packets; ++i) {
55 EXPECT_TRUE(manager_.IsUnacked(packets[i])) << packets[i]; 51 EXPECT_TRUE(manager_.IsUnacked(packets[i])) << packets[i];
56 } 52 }
57 } 53 }
58 54
59 void VerifyRetransmittablePackets(QuicPacketSequenceNumber* packets, 55 void VerifyRetransmittablePackets(QuicPacketSequenceNumber* packets,
60 size_t num_packets) { 56 size_t num_packets) {
61 SequenceNumberSet unacked = manager_.GetUnackedPackets(); 57 SequenceNumberSet unacked = manager_.GetUnackedPackets();
62 for (size_t i = 0; i < num_packets; ++i) { 58 for (size_t i = 0; i < num_packets; ++i) {
63 EXPECT_TRUE(ContainsKey(unacked, packets[i])) << packets[i]; 59 EXPECT_TRUE(ContainsKey(unacked, packets[i])) << packets[i];
64 } 60 }
65 size_t num_retransmittable = 0; 61 size_t num_retransmittable = 0;
66 for (SequenceNumberSet::const_iterator it = unacked.begin(); 62 for (SequenceNumberSet::const_iterator it = unacked.begin();
67 it != unacked.end(); ++it) { 63 it != unacked.end(); ++it) {
68 if (manager_.HasRetransmittableFrames(*it)) { 64 if (manager_.HasRetransmittableFrames(*it)) {
69 ++num_retransmittable; 65 ++num_retransmittable;
70 } 66 }
71 } 67 }
68 EXPECT_EQ(num_packets, manager_.GetNumRetransmittablePackets());
72 EXPECT_EQ(num_packets, num_retransmittable); 69 EXPECT_EQ(num_packets, num_retransmittable);
73 } 70 }
74 71
75 void VerifyAckedPackets(QuicPacketSequenceNumber* expected, 72 void VerifyAckedPackets(QuicPacketSequenceNumber* expected,
76 size_t num_expected, 73 size_t num_expected,
77 const SequenceNumberSet& actual) { 74 const SequenceNumberSet& actual) {
78 if (num_expected == 0) { 75 if (num_expected == 0) {
79 EXPECT_TRUE(actual.empty()); 76 EXPECT_TRUE(actual.empty());
80 return; 77 return;
81 } 78 }
(...skipping 30 matching lines...) Expand all
112 PACKET_6BYTE_SEQUENCE_NUMBER)); 109 PACKET_6BYTE_SEQUENCE_NUMBER));
113 return SerializedPacket(sequence_number, PACKET_6BYTE_SEQUENCE_NUMBER, 110 return SerializedPacket(sequence_number, PACKET_6BYTE_SEQUENCE_NUMBER,
114 packets_.back(), 0u, NULL); 111 packets_.back(), 0u, NULL);
115 } 112 }
116 113
117 testing::StrictMock<MockHelper> helper_; 114 testing::StrictMock<MockHelper> helper_;
118 QuicSentPacketManager manager_; 115 QuicSentPacketManager manager_;
119 vector<QuicPacket*> packets_; 116 vector<QuicPacket*> packets_;
120 }; 117 };
121 118
122 INSTANTIATE_TEST_CASE_P(TrackRetransmissionHistory, 119 TEST_F(QuicSentPacketManagerTest, IsUnacked) {
123 QuicSentPacketManagerTest,
124 ::testing::Values(false, true));
125
126 TEST_P(QuicSentPacketManagerTest, IsUnacked) {
127 VerifyUnackedPackets(NULL, 0); 120 VerifyUnackedPackets(NULL, 0);
128 121
129 SerializedPacket serialized_packet(CreatePacket(1)); 122 SerializedPacket serialized_packet(CreatePacket(1));
130 123
131 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); 124 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
132 125
133 QuicPacketSequenceNumber unacked[] = { 1 }; 126 QuicPacketSequenceNumber unacked[] = { 1 };
134 VerifyUnackedPackets(unacked, arraysize(unacked)); 127 VerifyUnackedPackets(unacked, arraysize(unacked));
135 QuicPacketSequenceNumber retransmittable[] = { 1 }; 128 QuicPacketSequenceNumber retransmittable[] = { 1 };
136 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 129 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
137 } 130 }
138 131
139 TEST_P(QuicSentPacketManagerTest, IsUnAckedRetransmit) { 132 TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) {
140 if (!FLAGS_track_retransmission_history) {
141 // This tests restransmission tracking specifically.
142 return;
143 }
144 SerializedPacket serialized_packet(CreatePacket(1)); 133 SerializedPacket serialized_packet(CreatePacket(1));
145 134
146 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); 135 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
147 RetransmitPacket(1, 2); 136 RetransmitPacket(1, 2);
148 137
149 EXPECT_EQ(1u, manager_.GetRetransmissionCount(2)); 138 EXPECT_TRUE(manager_.IsRetransmission(2));
150 QuicPacketSequenceNumber unacked[] = { 1, 2 }; 139 QuicPacketSequenceNumber unacked[] = { 1, 2 };
151 VerifyUnackedPackets(unacked, arraysize(unacked)); 140 VerifyUnackedPackets(unacked, arraysize(unacked));
152 QuicPacketSequenceNumber retransmittable[] = { 2 }; 141 QuicPacketSequenceNumber retransmittable[] = { 2 };
153 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 142 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
154
155 RetransmitPacket(2, 3);
156 EXPECT_EQ(2u, manager_.GetRetransmissionCount(3));
157 QuicPacketSequenceNumber unacked2[] = { 1, 2, 3 };
158 VerifyUnackedPackets(unacked2, arraysize(unacked2));
159 QuicPacketSequenceNumber retransmittable2[] = { 3 };
160 VerifyRetransmittablePackets(retransmittable2, arraysize(retransmittable2));
161 } 143 }
162 144
163 TEST_P(QuicSentPacketManagerTest, RetransmitThenAck) { 145 TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) {
164 SerializedPacket serialized_packet(CreatePacket(1)); 146 SerializedPacket serialized_packet(CreatePacket(1));
165 147
166 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); 148 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
167 RetransmitPacket(1, 2); 149 RetransmitPacket(1, 2);
168 150
169 // Ack 2 but not 1. 151 // Ack 2 but not 1.
170 ReceivedPacketInfo received_info; 152 ReceivedPacketInfo received_info;
171 received_info.largest_observed = 2; 153 received_info.largest_observed = 2;
172 received_info.missing_packets.insert(1); 154 received_info.missing_packets.insert(1);
173 manager_.OnIncomingAck(received_info, false); 155 manager_.OnIncomingAck(received_info, false);
174 156
175 // No unacked packets remain. 157 // No unacked packets remain.
176 VerifyUnackedPackets(NULL, 0); 158 VerifyUnackedPackets(NULL, 0);
177 VerifyRetransmittablePackets(NULL, 0); 159 VerifyRetransmittablePackets(NULL, 0);
178 } 160 }
179 161
180 TEST_P(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { 162 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) {
181 SerializedPacket serialized_packet(CreatePacket(1)); 163 SerializedPacket serialized_packet(CreatePacket(1));
182 164
183 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); 165 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
184 manager_.MarkForRetransmission(1, NACK_RETRANSMISSION); 166 manager_.MarkForRetransmission(1, NACK_RETRANSMISSION);
185 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 167 EXPECT_TRUE(manager_.HasPendingRetransmissions());
186 168
187 // Ack 1. 169 // Ack 1.
188 ReceivedPacketInfo received_info; 170 ReceivedPacketInfo received_info;
189 received_info.largest_observed = 1; 171 received_info.largest_observed = 1;
190 manager_.OnIncomingAck(received_info, false); 172 manager_.OnIncomingAck(received_info, false);
191 173
192 // There should no longer be a pending retransmission. 174 // There should no longer be a pending retransmission.
193 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 175 EXPECT_FALSE(manager_.HasPendingRetransmissions());
194 176
195 // No unacked packets remain. 177 // No unacked packets remain.
196 VerifyUnackedPackets(NULL, 0); 178 VerifyUnackedPackets(NULL, 0);
197 VerifyRetransmittablePackets(NULL, 0); 179 VerifyRetransmittablePackets(NULL, 0);
198 } 180 }
199 181
200 TEST_P(QuicSentPacketManagerTest, RetransmitThenAckPrevious) { 182 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPrevious) {
201 if (!FLAGS_track_retransmission_history) {
202 // This tests restransmission tracking specifically.
203 return;
204 }
205 SerializedPacket serialized_packet(CreatePacket(1)); 183 SerializedPacket serialized_packet(CreatePacket(1));
206 184
207 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); 185 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
208 RetransmitPacket(1, 2); 186 RetransmitPacket(1, 2);
209 187
210 // Ack 1 but not 2. 188 // Ack 1 but not 2.
211 ReceivedPacketInfo received_info; 189 ReceivedPacketInfo received_info;
212 received_info.largest_observed = 2; 190 received_info.largest_observed = 2;
213 received_info.missing_packets.insert(2); 191 received_info.missing_packets.insert(2);
214 EXPECT_CALL(helper_, OnPacketNacked(2, 1)).Times(1); 192 EXPECT_CALL(helper_, OnPacketNacked(2, 1)).Times(1);
215 manager_.OnIncomingAck(received_info, false); 193 manager_.OnIncomingAck(received_info, false);
216 194
217 // 2 remains unacked, but no packets have retransmittable data. 195 // 2 remains unacked, but no packets have retransmittable data.
218 QuicPacketSequenceNumber unacked[] = { 2 }; 196 QuicPacketSequenceNumber unacked[] = { 2 };
219 VerifyUnackedPackets(unacked, arraysize(unacked)); 197 VerifyUnackedPackets(unacked, arraysize(unacked));
220 VerifyRetransmittablePackets(NULL, 0); 198 VerifyRetransmittablePackets(NULL, 0);
221 } 199 }
222 200
223 TEST_P(QuicSentPacketManagerTest, TruncatedAck) { 201 TEST_F(QuicSentPacketManagerTest, TruncatedAck) {
224 if (!FLAGS_track_retransmission_history) {
225 // This tests restransmission tracking specifically.
226 return;
227 }
228 SerializedPacket serialized_packet(CreatePacket(1)); 202 SerializedPacket serialized_packet(CreatePacket(1));
229 203
230 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); 204 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
231 RetransmitPacket(1, 2); 205 RetransmitPacket(1, 2);
232 RetransmitPacket(2, 3); 206 RetransmitPacket(2, 3);
233 RetransmitPacket(3, 4); 207 RetransmitPacket(3, 4);
234 208
235 // Truncated ack with 2 NACKs 209 // Truncated ack with 2 NACKs
236 ReceivedPacketInfo received_info; 210 ReceivedPacketInfo received_info;
237 received_info.largest_observed = 2; 211 received_info.largest_observed = 2;
238 received_info.missing_packets.insert(1); 212 received_info.missing_packets.insert(1);
239 received_info.missing_packets.insert(2); 213 received_info.missing_packets.insert(2);
240 manager_.OnIncomingAck(received_info, true); 214 manager_.OnIncomingAck(received_info, true);
241 215
242 // High water mark will be raised. 216 // High water mark will be raised.
243 QuicPacketSequenceNumber unacked[] = { 2, 3, 4 }; 217 QuicPacketSequenceNumber unacked[] = { 2, 3, 4 };
244 VerifyUnackedPackets(unacked, arraysize(unacked)); 218 VerifyUnackedPackets(unacked, arraysize(unacked));
245 QuicPacketSequenceNumber retransmittable[] = { 4 }; 219 QuicPacketSequenceNumber retransmittable[] = { 4 };
246 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 220 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
247 } 221 }
248 222
249 TEST_P(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) { 223 TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
250 if (!FLAGS_track_retransmission_history) {
251 // This tests restransmission tracking specifically.
252 return;
253 }
254 manager_.OnSerializedPacket(CreatePacket(1), QuicTime::Zero()); 224 manager_.OnSerializedPacket(CreatePacket(1), QuicTime::Zero());
255 manager_.OnSerializedPacket(CreatePacket(2), QuicTime::Zero()); 225 manager_.OnSerializedPacket(CreatePacket(2), QuicTime::Zero());
256 manager_.OnSerializedPacket(CreatePacket(3), QuicTime::Zero()); 226 manager_.OnSerializedPacket(CreatePacket(3), QuicTime::Zero());
257 227
258 { 228 {
259 // Ack packets 1 and 3. 229 // Ack packets 1 and 3.
260 ReceivedPacketInfo received_info; 230 ReceivedPacketInfo received_info;
261 received_info.largest_observed = 3; 231 received_info.largest_observed = 3;
262 received_info.missing_packets.insert(2); 232 received_info.missing_packets.insert(2);
263 EXPECT_CALL(helper_, OnPacketNacked(2, 1)).Times(1); 233 EXPECT_CALL(helper_, OnPacketNacked(2, 1)).Times(1);
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 manager_.OnIncomingAck(received_info, true); 355 manager_.OnIncomingAck(received_info, true);
386 356
387 // Truncated ack raises the high water mark by clearing out 2, 4, and 6. 357 // Truncated ack raises the high water mark by clearing out 2, 4, and 6.
388 QuicPacketSequenceNumber unacked[] = { 8, 9, 11, 12, 14, 15, 16 }; 358 QuicPacketSequenceNumber unacked[] = { 8, 9, 11, 12, 14, 15, 16 };
389 VerifyUnackedPackets(unacked, arraysize(unacked)); 359 VerifyUnackedPackets(unacked, arraysize(unacked));
390 QuicPacketSequenceNumber retransmittable[] = { 8, 9, 11, 12, 14, 15, 16 }; 360 QuicPacketSequenceNumber retransmittable[] = { 8, 9, 11, 12, 14, 15, 16 };
391 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 361 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
392 } 362 }
393 } 363 }
394 364
395 TEST_P(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) { 365 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) {
396 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(1u)); 366 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(1u));
397 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); 367 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket());
398 } 368 }
399 369
400 TEST_P(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnacked) { 370 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnacked) {
401 SerializedPacket serialized_packet(CreatePacket(1)); 371 SerializedPacket serialized_packet(CreatePacket(1));
402 372
403 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); 373 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
404 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); 374 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket());
405 } 375 }
406 376
407 TEST_P(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnackedFec) { 377 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnackedFec) {
408 SerializedPacket serialized_packet(CreateFecPacket(1)); 378 SerializedPacket serialized_packet(CreateFecPacket(1));
409 379
410 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); 380 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
411 // FEC packets do not count as "unacked". 381 // FEC packets do not count as "unacked".
412 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(2u)); 382 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(2u));
413 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket()); 383 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket());
414 } 384 }
415 385
416 TEST_P(QuicSentPacketManagerTest, GetLeastUnackedSentPacketDiscardUnacked) { 386 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketDiscardUnacked) {
417 SerializedPacket serialized_packet(CreatePacket(1)); 387 SerializedPacket serialized_packet(CreatePacket(1));
418 388
419 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); 389 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
420 manager_.DiscardUnackedPacket(1u); 390 manager_.DiscardUnackedPacket(1u);
421 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(2u)); 391 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(2u));
422 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket()); 392 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket());
423 } 393 }
424 394
425 TEST_P(QuicSentPacketManagerTest, GetLeastUnackedFecPacketAndDiscard) { 395 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedFecPacketAndDiscard) {
426 VerifyUnackedPackets(NULL, 0); 396 VerifyUnackedPackets(NULL, 0);
427 397
428 SerializedPacket serialized_packet(CreateFecPacket(1)); 398 SerializedPacket serialized_packet(CreateFecPacket(1));
429 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); 399 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
430 EXPECT_EQ(1u, manager_.GetLeastUnackedFecPacket()); 400 EXPECT_EQ(1u, manager_.GetLeastUnackedFecPacket());
431 401
432 SerializedPacket serialized_packet2(CreateFecPacket(2)); 402 SerializedPacket serialized_packet2(CreateFecPacket(2));
433 manager_.OnSerializedPacket(serialized_packet2, QuicTime::Zero()); 403 manager_.OnSerializedPacket(serialized_packet2, QuicTime::Zero());
434 EXPECT_EQ(1u, manager_.GetLeastUnackedFecPacket()); 404 EXPECT_EQ(1u, manager_.GetLeastUnackedFecPacket());
435 405
(...skipping 12 matching lines...) Expand all
448 received_info.largest_observed = 2; 418 received_info.largest_observed = 2;
449 manager_.OnIncomingAck(received_info, false); 419 manager_.OnIncomingAck(received_info, false);
450 420
451 EXPECT_EQ(3u, manager_.GetLeastUnackedFecPacket()); 421 EXPECT_EQ(3u, manager_.GetLeastUnackedFecPacket());
452 422
453 // Discard the 3rd packet and ensure there are no FEC packets. 423 // Discard the 3rd packet and ensure there are no FEC packets.
454 manager_.DiscardFecPacket(3); 424 manager_.DiscardFecPacket(3);
455 EXPECT_FALSE(manager_.HasUnackedFecPackets()); 425 EXPECT_FALSE(manager_.HasUnackedFecPackets());
456 } 426 }
457 427
458 TEST_P(QuicSentPacketManagerTest, GetFecSentTime) { 428 TEST_F(QuicSentPacketManagerTest, GetFecSentTime) {
459 VerifyUnackedPackets(NULL, 0); 429 VerifyUnackedPackets(NULL, 0);
460 430
461 SerializedPacket serialized_packet(CreateFecPacket(1)); 431 SerializedPacket serialized_packet(CreateFecPacket(1));
462 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); 432 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
463 SerializedPacket serialized_packet2(CreateFecPacket(2)); 433 SerializedPacket serialized_packet2(CreateFecPacket(2));
464 QuicTime sent_time = QuicTime::Zero().Add(QuicTime::Delta::FromSeconds(1)); 434 QuicTime sent_time = QuicTime::Zero().Add(QuicTime::Delta::FromSeconds(1));
465 manager_.OnSerializedPacket(serialized_packet2, sent_time); 435 manager_.OnSerializedPacket(serialized_packet2, sent_time);
466 436
467 VerifyUnackedPackets(NULL, 0); 437 VerifyUnackedPackets(NULL, 0);
468 VerifyRetransmittablePackets(NULL, 0); 438 VerifyRetransmittablePackets(NULL, 0);
469 439
470 EXPECT_TRUE(manager_.HasUnackedFecPackets()); 440 EXPECT_TRUE(manager_.HasUnackedFecPackets());
471 EXPECT_EQ(QuicTime::Zero(), manager_.GetFecSentTime(1)); 441 EXPECT_EQ(QuicTime::Zero(), manager_.GetFecSentTime(1));
472 EXPECT_EQ(sent_time, manager_.GetFecSentTime(2)); 442 EXPECT_EQ(sent_time, manager_.GetFecSentTime(2));
473 } 443 }
474 444
475 } // namespace 445 } // namespace
476 } // namespace test 446 } // namespace test
477 } // namespace net 447 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698