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

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

Issue 667763003: Landing Recent QUIC Changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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') | net/quic/test_tools/quic_test_utils.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 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 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 << " packets[" << i << "]:" << packets[i]; 94 << " packets[" << i << "]:" << packets[i];
95 } 95 }
96 } 96 }
97 97
98 QuicUnackedPacketMap unacked_packets_; 98 QuicUnackedPacketMap unacked_packets_;
99 QuicTime now_; 99 QuicTime now_;
100 }; 100 };
101 101
102 TEST_F(QuicUnackedPacketMapTest, RttOnly) { 102 TEST_F(QuicUnackedPacketMapTest, RttOnly) {
103 // Acks are only tracked for RTT measurement purposes. 103 // Acks are only tracked for RTT measurement purposes.
104 unacked_packets_.AddPacket(CreateNonRetransmittablePacket(1)); 104 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(1), 0,
105 unacked_packets_.SetSent(1, now_, kDefaultAckLength, false); 105 NOT_RETRANSMISSION, now_, kDefaultAckLength,
106 false);
106 107
107 QuicPacketSequenceNumber unacked[] = { 1 }; 108 QuicPacketSequenceNumber unacked[] = { 1 };
108 VerifyUnackedPackets(unacked, arraysize(unacked)); 109 VerifyUnackedPackets(unacked, arraysize(unacked));
109 VerifyInFlightPackets(nullptr, 0); 110 VerifyInFlightPackets(nullptr, 0);
110 VerifyRetransmittablePackets(nullptr, 0); 111 VerifyRetransmittablePackets(nullptr, 0);
111 112
112 unacked_packets_.IncreaseLargestObserved(1); 113 unacked_packets_.IncreaseLargestObserved(1);
113 VerifyUnackedPackets(nullptr, 0); 114 VerifyUnackedPackets(nullptr, 0);
114 VerifyInFlightPackets(nullptr, 0); 115 VerifyInFlightPackets(nullptr, 0);
115 VerifyRetransmittablePackets(nullptr, 0); 116 VerifyRetransmittablePackets(nullptr, 0);
116 } 117 }
117 118
118 TEST_F(QuicUnackedPacketMapTest, DiscardOldRttOnly) { 119 TEST_F(QuicUnackedPacketMapTest, DiscardOldRttOnly) {
119 // Acks are only tracked for RTT measurement purposes, and are discarded 120 // Acks are only tracked for RTT measurement purposes, and are discarded
120 // when more than 200 accumulate. 121 // when more than 200 accumulate.
121 const size_t kNumUnackedPackets = 200; 122 const size_t kNumUnackedPackets = 200;
122 for (size_t i = 1; i < 400; ++i) { 123 for (size_t i = 1; i < 400; ++i) {
123 unacked_packets_.AddPacket(CreateNonRetransmittablePacket(i)); 124 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(i), 0,
124 unacked_packets_.SetSent(i, now_, kDefaultAckLength, false); 125 NOT_RETRANSMISSION, now_, kDefaultAckLength,
126 false);
125 unacked_packets_.RemoveObsoletePackets(); 127 unacked_packets_.RemoveObsoletePackets();
126 EXPECT_EQ(min(i, kNumUnackedPackets), 128 EXPECT_EQ(min(i, kNumUnackedPackets),
127 unacked_packets_.GetNumUnackedPacketsDebugOnly()); 129 unacked_packets_.GetNumUnackedPacketsDebugOnly());
128 } 130 }
129 } 131 }
130 132
131 TEST_F(QuicUnackedPacketMapTest, RetransmittableInflightAndRtt) { 133 TEST_F(QuicUnackedPacketMapTest, RetransmittableInflightAndRtt) {
132 // Simulate a retransmittable packet being sent and acked. 134 // Simulate a retransmittable packet being sent and acked.
133 unacked_packets_.AddPacket(CreateRetransmittablePacket(1)); 135 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(1), 0,
134 unacked_packets_.SetSent(1, now_, kDefaultLength, true); 136 NOT_RETRANSMISSION, now_, kDefaultLength,
137 true);
135 138
136 QuicPacketSequenceNumber unacked[] = { 1 }; 139 QuicPacketSequenceNumber unacked[] = { 1 };
137 VerifyUnackedPackets(unacked, arraysize(unacked)); 140 VerifyUnackedPackets(unacked, arraysize(unacked));
138 VerifyInFlightPackets(unacked, arraysize(unacked)); 141 VerifyInFlightPackets(unacked, arraysize(unacked));
139 VerifyRetransmittablePackets(unacked, arraysize(unacked)); 142 VerifyRetransmittablePackets(unacked, arraysize(unacked));
140 143
141 unacked_packets_.RemoveRetransmittability(1); 144 unacked_packets_.RemoveRetransmittability(1);
142 VerifyUnackedPackets(unacked, arraysize(unacked)); 145 VerifyUnackedPackets(unacked, arraysize(unacked));
143 VerifyInFlightPackets(unacked, arraysize(unacked)); 146 VerifyInFlightPackets(unacked, arraysize(unacked));
144 VerifyRetransmittablePackets(nullptr, 0); 147 VerifyRetransmittablePackets(nullptr, 0);
145 148
146 unacked_packets_.IncreaseLargestObserved(1); 149 unacked_packets_.IncreaseLargestObserved(1);
147 VerifyUnackedPackets(unacked, arraysize(unacked)); 150 VerifyUnackedPackets(unacked, arraysize(unacked));
148 VerifyInFlightPackets(unacked, arraysize(unacked)); 151 VerifyInFlightPackets(unacked, arraysize(unacked));
149 VerifyRetransmittablePackets(nullptr, 0); 152 VerifyRetransmittablePackets(nullptr, 0);
150 153
151 unacked_packets_.RemoveFromInFlight(1); 154 unacked_packets_.RemoveFromInFlight(1);
152 VerifyUnackedPackets(nullptr, 0); 155 VerifyUnackedPackets(nullptr, 0);
153 VerifyInFlightPackets(nullptr, 0); 156 VerifyInFlightPackets(nullptr, 0);
154 VerifyRetransmittablePackets(nullptr, 0); 157 VerifyRetransmittablePackets(nullptr, 0);
155 } 158 }
156 159
157 TEST_F(QuicUnackedPacketMapTest, RetransmittedPacket) { 160 TEST_F(QuicUnackedPacketMapTest, RetransmittedPacket) {
158 // Simulate a retransmittable packet being sent, retransmitted, and the first 161 // Simulate a retransmittable packet being sent, retransmitted, and the first
159 // transmission being acked. 162 // transmission being acked.
160 unacked_packets_.AddPacket(CreateRetransmittablePacket(1)); 163 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(1), 0,
161 unacked_packets_.SetSent(1, now_, kDefaultLength, true); 164 NOT_RETRANSMISSION, now_, kDefaultLength,
162 unacked_packets_.OnRetransmittedPacket(1, 2, LOSS_RETRANSMISSION); 165 true);
163 unacked_packets_.SetSent(2, now_, kDefaultLength, true); 166 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(2), 1,
167 LOSS_RETRANSMISSION, now_, kDefaultLength,
168 true);
164 169
165 QuicPacketSequenceNumber unacked[] = { 1, 2 }; 170 QuicPacketSequenceNumber unacked[] = { 1, 2 };
166 VerifyUnackedPackets(unacked, arraysize(unacked)); 171 VerifyUnackedPackets(unacked, arraysize(unacked));
167 VerifyInFlightPackets(unacked, arraysize(unacked)); 172 VerifyInFlightPackets(unacked, arraysize(unacked));
168 QuicPacketSequenceNumber retransmittable[] = { 2 }; 173 QuicPacketSequenceNumber retransmittable[] = { 2 };
169 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 174 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
170 175
171 unacked_packets_.RemoveRetransmittability(1); 176 unacked_packets_.RemoveRetransmittability(1);
172 VerifyUnackedPackets(unacked, arraysize(unacked)); 177 VerifyUnackedPackets(unacked, arraysize(unacked));
173 VerifyInFlightPackets(unacked, arraysize(unacked)); 178 VerifyInFlightPackets(unacked, arraysize(unacked));
(...skipping 11 matching lines...) Expand all
185 VerifyRetransmittablePackets(nullptr, 0); 190 VerifyRetransmittablePackets(nullptr, 0);
186 191
187 unacked_packets_.RemoveFromInFlight(1); 192 unacked_packets_.RemoveFromInFlight(1);
188 VerifyUnackedPackets(nullptr, 0); 193 VerifyUnackedPackets(nullptr, 0);
189 VerifyInFlightPackets(nullptr, 0); 194 VerifyInFlightPackets(nullptr, 0);
190 VerifyRetransmittablePackets(nullptr, 0); 195 VerifyRetransmittablePackets(nullptr, 0);
191 } 196 }
192 197
193 TEST_F(QuicUnackedPacketMapTest, RetransmitThreeTimes) { 198 TEST_F(QuicUnackedPacketMapTest, RetransmitThreeTimes) {
194 // Simulate a retransmittable packet being sent and retransmitted twice. 199 // Simulate a retransmittable packet being sent and retransmitted twice.
195 unacked_packets_.AddPacket(CreateRetransmittablePacket(1)); 200 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(1), 0,
196 unacked_packets_.SetSent(1, now_, kDefaultLength, true); 201 NOT_RETRANSMISSION, now_, kDefaultLength,
197 unacked_packets_.AddPacket(CreateRetransmittablePacket(2)); 202 true);
198 unacked_packets_.SetSent(2, now_, kDefaultLength, true); 203 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(2), 0,
204 NOT_RETRANSMISSION, now_, kDefaultLength,
205 true);
199 206
200 QuicPacketSequenceNumber unacked[] = { 1, 2 }; 207 QuicPacketSequenceNumber unacked[] = { 1, 2 };
201 VerifyUnackedPackets(unacked, arraysize(unacked)); 208 VerifyUnackedPackets(unacked, arraysize(unacked));
202 VerifyInFlightPackets(unacked, arraysize(unacked)); 209 VerifyInFlightPackets(unacked, arraysize(unacked));
203 QuicPacketSequenceNumber retransmittable[] = { 1, 2 }; 210 QuicPacketSequenceNumber retransmittable[] = { 1, 2 };
204 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 211 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
205 212
206 // Early retransmit 1 as 3 and send new data as 4. 213 // Early retransmit 1 as 3 and send new data as 4.
207 unacked_packets_.IncreaseLargestObserved(2); 214 unacked_packets_.IncreaseLargestObserved(2);
208 unacked_packets_.RemoveFromInFlight(2); 215 unacked_packets_.RemoveFromInFlight(2);
209 unacked_packets_.RemoveRetransmittability(2); 216 unacked_packets_.RemoveRetransmittability(2);
210 unacked_packets_.RemoveFromInFlight(1); 217 unacked_packets_.RemoveFromInFlight(1);
211 unacked_packets_.OnRetransmittedPacket(1, 3, LOSS_RETRANSMISSION); 218 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(3), 1,
212 unacked_packets_.SetSent(3, now_, kDefaultLength, true); 219 LOSS_RETRANSMISSION, now_, kDefaultLength,
213 unacked_packets_.AddPacket(CreateRetransmittablePacket(4)); 220 true);
214 unacked_packets_.SetSent(4, now_, kDefaultLength, true); 221 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(4), 0,
222 NOT_RETRANSMISSION, now_, kDefaultLength,
223 true);
215 224
216 QuicPacketSequenceNumber unacked2[] = { 1, 3, 4 }; 225 QuicPacketSequenceNumber unacked2[] = { 1, 3, 4 };
217 VerifyUnackedPackets(unacked2, arraysize(unacked2)); 226 VerifyUnackedPackets(unacked2, arraysize(unacked2));
218 QuicPacketSequenceNumber pending2[] = { 3, 4, }; 227 QuicPacketSequenceNumber pending2[] = { 3, 4, };
219 VerifyInFlightPackets(pending2, arraysize(pending2)); 228 VerifyInFlightPackets(pending2, arraysize(pending2));
220 QuicPacketSequenceNumber retransmittable2[] = { 3, 4 }; 229 QuicPacketSequenceNumber retransmittable2[] = { 3, 4 };
221 VerifyRetransmittablePackets(retransmittable2, arraysize(retransmittable2)); 230 VerifyRetransmittablePackets(retransmittable2, arraysize(retransmittable2));
222 231
223 // Early retransmit 3 (formerly 1) as 5, and remove 1 from unacked. 232 // Early retransmit 3 (formerly 1) as 5, and remove 1 from unacked.
224 unacked_packets_.IncreaseLargestObserved(4); 233 unacked_packets_.IncreaseLargestObserved(4);
225 unacked_packets_.RemoveFromInFlight(4); 234 unacked_packets_.RemoveFromInFlight(4);
226 unacked_packets_.RemoveRetransmittability(4); 235 unacked_packets_.RemoveRetransmittability(4);
227 unacked_packets_.OnRetransmittedPacket(3, 5, LOSS_RETRANSMISSION); 236 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(5), 3,
228 unacked_packets_.SetSent(5, now_, kDefaultLength, true); 237 LOSS_RETRANSMISSION, now_, kDefaultLength,
229 unacked_packets_.AddPacket(CreateRetransmittablePacket(6)); 238 true);
230 unacked_packets_.SetSent(6, now_, kDefaultLength, true); 239 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(6), 0,
240 NOT_RETRANSMISSION, now_, kDefaultLength,
241 true);
231 242
232 QuicPacketSequenceNumber unacked3[] = { 3, 5, 6 }; 243 QuicPacketSequenceNumber unacked3[] = { 3, 5, 6 };
233 VerifyUnackedPackets(unacked3, arraysize(unacked3)); 244 VerifyUnackedPackets(unacked3, arraysize(unacked3));
234 QuicPacketSequenceNumber pending3[] = { 3, 5, 6 }; 245 QuicPacketSequenceNumber pending3[] = { 3, 5, 6 };
235 VerifyInFlightPackets(pending3, arraysize(pending3)); 246 VerifyInFlightPackets(pending3, arraysize(pending3));
236 QuicPacketSequenceNumber retransmittable3[] = { 5, 6 }; 247 QuicPacketSequenceNumber retransmittable3[] = { 5, 6 };
237 VerifyRetransmittablePackets(retransmittable3, arraysize(retransmittable3)); 248 VerifyRetransmittablePackets(retransmittable3, arraysize(retransmittable3));
238 249
239 // Early retransmit 5 as 7 and ensure in flight packet 3 is not removed. 250 // Early retransmit 5 as 7 and ensure in flight packet 3 is not removed.
240 unacked_packets_.IncreaseLargestObserved(6); 251 unacked_packets_.IncreaseLargestObserved(6);
241 unacked_packets_.RemoveFromInFlight(6); 252 unacked_packets_.RemoveFromInFlight(6);
242 unacked_packets_.RemoveRetransmittability(6); 253 unacked_packets_.RemoveRetransmittability(6);
243 unacked_packets_.OnRetransmittedPacket(5, 7, LOSS_RETRANSMISSION); 254 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(7), 5,
244 unacked_packets_.SetSent(7, now_, kDefaultLength, true); 255 LOSS_RETRANSMISSION, now_, kDefaultLength,
256 true);
245 257
246 QuicPacketSequenceNumber unacked4[] = { 3, 5, 7 }; 258 QuicPacketSequenceNumber unacked4[] = { 3, 5, 7 };
247 VerifyUnackedPackets(unacked4, arraysize(unacked4)); 259 VerifyUnackedPackets(unacked4, arraysize(unacked4));
248 QuicPacketSequenceNumber pending4[] = { 3, 5, 7 }; 260 QuicPacketSequenceNumber pending4[] = { 3, 5, 7 };
249 VerifyInFlightPackets(pending4, arraysize(pending4)); 261 VerifyInFlightPackets(pending4, arraysize(pending4));
250 QuicPacketSequenceNumber retransmittable4[] = { 7 }; 262 QuicPacketSequenceNumber retransmittable4[] = { 7 };
251 VerifyRetransmittablePackets(retransmittable4, arraysize(retransmittable4)); 263 VerifyRetransmittablePackets(retransmittable4, arraysize(retransmittable4));
252 264
253 // Remove the older two transmissions from in flight. 265 // Remove the older two transmissions from in flight.
254 unacked_packets_.RemoveFromInFlight(3); 266 unacked_packets_.RemoveFromInFlight(3);
255 unacked_packets_.RemoveFromInFlight(5); 267 unacked_packets_.RemoveFromInFlight(5);
256 QuicPacketSequenceNumber pending5[] = { 7 }; 268 QuicPacketSequenceNumber pending5[] = { 7 };
257 VerifyInFlightPackets(pending5, arraysize(pending5)); 269 VerifyInFlightPackets(pending5, arraysize(pending5));
258 270
259 // Now test ClearAllPreviousTransmissions, leaving one packet. 271 // Now test ClearAllPreviousTransmissions, leaving one packet.
260 unacked_packets_.ClearAllPreviousRetransmissions(); 272 unacked_packets_.ClearAllPreviousRetransmissions();
261 QuicPacketSequenceNumber unacked5[] = { 7 }; 273 QuicPacketSequenceNumber unacked5[] = { 7 };
262 VerifyUnackedPackets(unacked5, arraysize(unacked5)); 274 VerifyUnackedPackets(unacked5, arraysize(unacked5));
263 QuicPacketSequenceNumber retransmittable5[] = { 7 }; 275 QuicPacketSequenceNumber retransmittable5[] = { 7 };
264 VerifyRetransmittablePackets(retransmittable5, arraysize(retransmittable5)); 276 VerifyRetransmittablePackets(retransmittable5, arraysize(retransmittable5));
265 } 277 }
266 278
267 TEST_F(QuicUnackedPacketMapTest, RetransmitFourTimes) { 279 TEST_F(QuicUnackedPacketMapTest, RetransmitFourTimes) {
268 // Simulate a retransmittable packet being sent and retransmitted twice. 280 // Simulate a retransmittable packet being sent and retransmitted twice.
269 unacked_packets_.AddPacket(CreateRetransmittablePacket(1)); 281 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(1), 0,
270 unacked_packets_.SetSent(1, now_, kDefaultLength, true); 282 NOT_RETRANSMISSION, now_, kDefaultLength,
271 unacked_packets_.AddPacket(CreateRetransmittablePacket(2)); 283 true);
272 unacked_packets_.SetSent(2, now_, kDefaultLength, true); 284 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(2), 0,
285 NOT_RETRANSMISSION, now_, kDefaultLength,
286 true);
273 287
274 QuicPacketSequenceNumber unacked[] = { 1, 2 }; 288 QuicPacketSequenceNumber unacked[] = { 1, 2 };
275 VerifyUnackedPackets(unacked, arraysize(unacked)); 289 VerifyUnackedPackets(unacked, arraysize(unacked));
276 VerifyInFlightPackets(unacked, arraysize(unacked)); 290 VerifyInFlightPackets(unacked, arraysize(unacked));
277 QuicPacketSequenceNumber retransmittable[] = { 1, 2 }; 291 QuicPacketSequenceNumber retransmittable[] = { 1, 2 };
278 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 292 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
279 293
280 // Early retransmit 1 as 3. 294 // Early retransmit 1 as 3.
281 unacked_packets_.IncreaseLargestObserved(2); 295 unacked_packets_.IncreaseLargestObserved(2);
282 unacked_packets_.RemoveFromInFlight(2); 296 unacked_packets_.RemoveFromInFlight(2);
283 unacked_packets_.RemoveRetransmittability(2); 297 unacked_packets_.RemoveRetransmittability(2);
284 unacked_packets_.RemoveFromInFlight(1); 298 unacked_packets_.RemoveFromInFlight(1);
285 unacked_packets_.OnRetransmittedPacket(1, 3, LOSS_RETRANSMISSION); 299 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(3), 1,
286 unacked_packets_.SetSent(3, now_, kDefaultLength, true); 300 LOSS_RETRANSMISSION, now_, kDefaultLength,
301 true);
287 302
288 QuicPacketSequenceNumber unacked2[] = { 1, 3 }; 303 QuicPacketSequenceNumber unacked2[] = { 1, 3 };
289 VerifyUnackedPackets(unacked2, arraysize(unacked2)); 304 VerifyUnackedPackets(unacked2, arraysize(unacked2));
290 QuicPacketSequenceNumber pending2[] = { 3 }; 305 QuicPacketSequenceNumber pending2[] = { 3 };
291 VerifyInFlightPackets(pending2, arraysize(pending2)); 306 VerifyInFlightPackets(pending2, arraysize(pending2));
292 QuicPacketSequenceNumber retransmittable2[] = { 3 }; 307 QuicPacketSequenceNumber retransmittable2[] = { 3 };
293 VerifyRetransmittablePackets(retransmittable2, arraysize(retransmittable2)); 308 VerifyRetransmittablePackets(retransmittable2, arraysize(retransmittable2));
294 309
295 // TLP 3 (formerly 1) as 4, and don't remove 1 from unacked. 310 // TLP 3 (formerly 1) as 4, and don't remove 1 from unacked.
296 unacked_packets_.OnRetransmittedPacket(3, 4, TLP_RETRANSMISSION); 311 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(4), 3,
297 unacked_packets_.SetSent(4, now_, kDefaultLength, true); 312 TLP_RETRANSMISSION, now_, kDefaultLength,
298 unacked_packets_.AddPacket(CreateRetransmittablePacket(5)); 313 true);
299 unacked_packets_.SetSent(5, now_, kDefaultLength, true); 314 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(5), 0,
315 NOT_RETRANSMISSION, now_, kDefaultLength,
316 true);
300 317
301 QuicPacketSequenceNumber unacked3[] = { 1, 3, 4, 5 }; 318 QuicPacketSequenceNumber unacked3[] = { 1, 3, 4, 5 };
302 VerifyUnackedPackets(unacked3, arraysize(unacked3)); 319 VerifyUnackedPackets(unacked3, arraysize(unacked3));
303 QuicPacketSequenceNumber pending3[] = { 3, 4, 5 }; 320 QuicPacketSequenceNumber pending3[] = { 3, 4, 5 };
304 VerifyInFlightPackets(pending3, arraysize(pending3)); 321 VerifyInFlightPackets(pending3, arraysize(pending3));
305 QuicPacketSequenceNumber retransmittable3[] = { 4, 5 }; 322 QuicPacketSequenceNumber retransmittable3[] = { 4, 5 };
306 VerifyRetransmittablePackets(retransmittable3, arraysize(retransmittable3)); 323 VerifyRetransmittablePackets(retransmittable3, arraysize(retransmittable3));
307 324
308 // Early retransmit 4 as 6 and ensure in flight packet 3 is removed. 325 // Early retransmit 4 as 6 and ensure in flight packet 3 is removed.
309 unacked_packets_.IncreaseLargestObserved(5); 326 unacked_packets_.IncreaseLargestObserved(5);
310 unacked_packets_.RemoveFromInFlight(5); 327 unacked_packets_.RemoveFromInFlight(5);
311 unacked_packets_.RemoveRetransmittability(5); 328 unacked_packets_.RemoveRetransmittability(5);
312 unacked_packets_.RemoveFromInFlight(3); 329 unacked_packets_.RemoveFromInFlight(3);
313 unacked_packets_.RemoveFromInFlight(4); 330 unacked_packets_.RemoveFromInFlight(4);
314 unacked_packets_.OnRetransmittedPacket(4, 6, LOSS_RETRANSMISSION); 331 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(6), 4,
315 unacked_packets_.SetSent(6, now_, kDefaultLength, true); 332 LOSS_RETRANSMISSION, now_, kDefaultLength,
333 true);
316 334
317 QuicPacketSequenceNumber unacked4[] = { 4, 6 }; 335 QuicPacketSequenceNumber unacked4[] = { 4, 6 };
318 VerifyUnackedPackets(unacked4, arraysize(unacked4)); 336 VerifyUnackedPackets(unacked4, arraysize(unacked4));
319 QuicPacketSequenceNumber pending4[] = { 6 }; 337 QuicPacketSequenceNumber pending4[] = { 6 };
320 VerifyInFlightPackets(pending4, arraysize(pending4)); 338 VerifyInFlightPackets(pending4, arraysize(pending4));
321 QuicPacketSequenceNumber retransmittable4[] = { 6 }; 339 QuicPacketSequenceNumber retransmittable4[] = { 6 };
322 VerifyRetransmittablePackets(retransmittable4, arraysize(retransmittable4)); 340 VerifyRetransmittablePackets(retransmittable4, arraysize(retransmittable4));
323 } 341 }
324 342
325 TEST_F(QuicUnackedPacketMapTest, RestoreInflight) { 343 TEST_F(QuicUnackedPacketMapTest, RestoreInflight) {
326 // Simulate a retransmittable packet being sent, retransmitted, and the first 344 // Simulate a retransmittable packet being sent, retransmitted, and the first
327 // transmission being acked. 345 // transmission being acked.
328 unacked_packets_.AddPacket(CreateRetransmittablePacket(1)); 346 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(1), 0,
329 unacked_packets_.SetSent(1, now_, kDefaultLength, true); 347 NOT_RETRANSMISSION, now_, kDefaultLength,
330 unacked_packets_.OnRetransmittedPacket(1, 2, RTO_RETRANSMISSION); 348 true);
331 unacked_packets_.RemoveFromInFlight(1); 349 unacked_packets_.RemoveFromInFlight(1);
332 unacked_packets_.SetSent(2, now_, kDefaultLength, true); 350 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(2), 1,
351 RTO_RETRANSMISSION, now_, kDefaultLength,
352 true);
333 353
334 QuicPacketSequenceNumber unacked[] = { 1, 2 }; 354 QuicPacketSequenceNumber unacked[] = { 1, 2 };
335 VerifyUnackedPackets(unacked, arraysize(unacked)); 355 VerifyUnackedPackets(unacked, arraysize(unacked));
336 QuicPacketSequenceNumber retransmittable[] = { 2 }; 356 QuicPacketSequenceNumber retransmittable[] = { 2 };
337 VerifyInFlightPackets(retransmittable, arraysize(retransmittable)); 357 VerifyInFlightPackets(retransmittable, arraysize(retransmittable));
338 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 358 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
339 EXPECT_EQ(kDefaultLength, unacked_packets_.bytes_in_flight()); 359 EXPECT_EQ(kDefaultLength, unacked_packets_.bytes_in_flight());
340 360
341 // Simulate an F-RTO, and restore 1 to flight. 361 // Simulate an F-RTO, and restore 1 to flight.
342 unacked_packets_.RestoreInFlight(1); 362 unacked_packets_.RestoreInFlight(1);
343 VerifyUnackedPackets(unacked, arraysize(unacked)); 363 VerifyUnackedPackets(unacked, arraysize(unacked));
344 VerifyInFlightPackets(unacked, arraysize(unacked)); 364 VerifyInFlightPackets(unacked, arraysize(unacked));
345 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 365 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
346 EXPECT_EQ(2 * kDefaultLength, unacked_packets_.bytes_in_flight()); 366 EXPECT_EQ(2 * kDefaultLength, unacked_packets_.bytes_in_flight());
347 } 367 }
348 368
349 TEST_F(QuicUnackedPacketMapTest, SendWithGap) { 369 TEST_F(QuicUnackedPacketMapTest, SendWithGap) {
350 // Simulate a retransmittable packet being sent, retransmitted, and the first 370 // Simulate a retransmittable packet being sent, retransmitted, and the first
351 // transmission being acked. 371 // transmission being acked.
352 unacked_packets_.AddPacket(CreateRetransmittablePacket(1)); 372 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(1), 0,
353 unacked_packets_.SetSent(1, now_, kDefaultLength, true); 373 NOT_RETRANSMISSION, now_, kDefaultLength,
354 unacked_packets_.AddPacket(CreateRetransmittablePacket(3)); 374 true);
355 unacked_packets_.SetSent(3, now_, kDefaultLength, true); 375 unacked_packets_.AddSentPacket(CreateRetransmittablePacket(3), 0,
356 unacked_packets_.OnRetransmittedPacket(1, 5, LOSS_RETRANSMISSION); 376 NOT_RETRANSMISSION, now_, kDefaultLength,
357 unacked_packets_.SetSent(5, now_, kDefaultLength, true); 377 true);
378 unacked_packets_.AddSentPacket(CreateNonRetransmittablePacket(5), 3,
379 LOSS_RETRANSMISSION, now_, kDefaultLength,
380 true);
358 381
359 EXPECT_EQ(1u, unacked_packets_.GetLeastUnacked()); 382 EXPECT_EQ(1u, unacked_packets_.GetLeastUnacked());
360 EXPECT_TRUE(unacked_packets_.IsUnacked(1)); 383 EXPECT_TRUE(unacked_packets_.IsUnacked(1));
361 EXPECT_FALSE(unacked_packets_.IsUnacked(2)); 384 EXPECT_FALSE(unacked_packets_.IsUnacked(2));
362 EXPECT_TRUE(unacked_packets_.IsUnacked(3)); 385 EXPECT_TRUE(unacked_packets_.IsUnacked(3));
363 EXPECT_FALSE(unacked_packets_.IsUnacked(4)); 386 EXPECT_FALSE(unacked_packets_.IsUnacked(4));
364 EXPECT_TRUE(unacked_packets_.IsUnacked(5)); 387 EXPECT_TRUE(unacked_packets_.IsUnacked(5));
365 EXPECT_EQ(5u, unacked_packets_.largest_sent_packet()); 388 EXPECT_EQ(5u, unacked_packets_.largest_sent_packet());
366 } 389 }
367 390
368 391
369 } // namespace 392 } // namespace
370 } // namespace test 393 } // namespace test
371 } // namespace net 394 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_unacked_packet_map.cc ('k') | net/quic/test_tools/quic_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698