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 14 matching lines...) Expand all Loading... |
25 QuicSentPacketManagerTest() | 25 QuicSentPacketManagerTest() |
26 : manager_(true, &clock_, &stats_, kFixRate, kNack), | 26 : manager_(true, &clock_, &stats_, kFixRate, kNack), |
27 send_algorithm_(new StrictMock<MockSendAlgorithm>) { | 27 send_algorithm_(new StrictMock<MockSendAlgorithm>) { |
28 QuicSentPacketManagerPeer::SetSendAlgorithm(&manager_, send_algorithm_); | 28 QuicSentPacketManagerPeer::SetSendAlgorithm(&manager_, send_algorithm_); |
29 // Disable tail loss probes for most tests. | 29 // Disable tail loss probes for most tests. |
30 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 0); | 30 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 0); |
31 // Advance the time 1s so the send times are never QuicTime::Zero. | 31 // Advance the time 1s so the send times are never QuicTime::Zero. |
32 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1000)); | 32 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1000)); |
33 } | 33 } |
34 | 34 |
35 virtual ~QuicSentPacketManagerTest() { | 35 virtual ~QuicSentPacketManagerTest() { STLDeleteElements(&packets_); } |
36 STLDeleteElements(&packets_); | |
37 } | |
38 | 36 |
39 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets, | 37 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets, |
40 size_t num_packets) { | 38 size_t num_packets) { |
41 if (num_packets == 0) { | 39 if (num_packets == 0) { |
42 EXPECT_FALSE(manager_.HasUnackedPackets()); | 40 EXPECT_FALSE(manager_.HasUnackedPackets()); |
43 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetNumRetransmittablePackets( | 41 EXPECT_EQ( |
44 &manager_)); | 42 0u, |
| 43 QuicSentPacketManagerPeer::GetNumRetransmittablePackets(&manager_)); |
45 return; | 44 return; |
46 } | 45 } |
47 | 46 |
48 EXPECT_TRUE(manager_.HasUnackedPackets()); | 47 EXPECT_TRUE(manager_.HasUnackedPackets()); |
49 EXPECT_EQ(packets[0], manager_.GetLeastUnackedSentPacket()); | 48 EXPECT_EQ(packets[0], manager_.GetLeastUnackedSentPacket()); |
50 for (size_t i = 0; i < num_packets; ++i) { | 49 for (size_t i = 0; i < num_packets; ++i) { |
51 EXPECT_TRUE(manager_.IsUnacked(packets[i])) << packets[i]; | 50 EXPECT_TRUE(manager_.IsUnacked(packets[i])) << packets[i]; |
52 } | 51 } |
53 } | 52 } |
54 | 53 |
55 void VerifyRetransmittablePackets(QuicPacketSequenceNumber* packets, | 54 void VerifyRetransmittablePackets(QuicPacketSequenceNumber* packets, |
56 size_t num_packets) { | 55 size_t num_packets) { |
57 SequenceNumberSet unacked = | 56 SequenceNumberSet unacked = |
58 QuicSentPacketManagerPeer::GetUnackedPackets(&manager_); | 57 QuicSentPacketManagerPeer::GetUnackedPackets(&manager_); |
59 for (size_t i = 0; i < num_packets; ++i) { | 58 for (size_t i = 0; i < num_packets; ++i) { |
60 EXPECT_TRUE(ContainsKey(unacked, packets[i])) << packets[i]; | 59 EXPECT_TRUE(ContainsKey(unacked, packets[i])) << packets[i]; |
61 } | 60 } |
62 size_t num_retransmittable = 0; | 61 size_t num_retransmittable = 0; |
63 for (SequenceNumberSet::const_iterator it = unacked.begin(); | 62 for (SequenceNumberSet::const_iterator it = unacked.begin(); |
64 it != unacked.end(); ++it) { | 63 it != unacked.end(); |
| 64 ++it) { |
65 if (manager_.HasRetransmittableFrames(*it)) { | 65 if (manager_.HasRetransmittableFrames(*it)) { |
66 ++num_retransmittable; | 66 ++num_retransmittable; |
67 } | 67 } |
68 } | 68 } |
69 EXPECT_EQ(num_packets, | 69 EXPECT_EQ( |
70 QuicSentPacketManagerPeer::GetNumRetransmittablePackets( | 70 num_packets, |
71 &manager_)); | 71 QuicSentPacketManagerPeer::GetNumRetransmittablePackets(&manager_)); |
72 EXPECT_EQ(num_packets, num_retransmittable); | 72 EXPECT_EQ(num_packets, num_retransmittable); |
73 } | 73 } |
74 | 74 |
75 void RetransmitPacket(QuicPacketSequenceNumber old_sequence_number, | 75 void RetransmitPacket(QuicPacketSequenceNumber old_sequence_number, |
76 QuicPacketSequenceNumber new_sequence_number) { | 76 QuicPacketSequenceNumber new_sequence_number) { |
77 QuicSentPacketManagerPeer::MarkForRetransmission( | 77 QuicSentPacketManagerPeer::MarkForRetransmission( |
78 &manager_, old_sequence_number, LOSS_RETRANSMISSION); | 78 &manager_, old_sequence_number, LOSS_RETRANSMISSION); |
79 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 79 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
80 QuicSentPacketManager::PendingRetransmission next_retransmission = | 80 QuicSentPacketManager::PendingRetransmission next_retransmission = |
81 manager_.NextPendingRetransmission(); | 81 manager_.NextPendingRetransmission(); |
82 EXPECT_EQ(old_sequence_number, next_retransmission.sequence_number); | 82 EXPECT_EQ(old_sequence_number, next_retransmission.sequence_number); |
83 EXPECT_EQ(LOSS_RETRANSMISSION, | 83 EXPECT_EQ(LOSS_RETRANSMISSION, next_retransmission.transmission_type); |
84 next_retransmission.transmission_type); | |
85 manager_.OnRetransmittedPacket(old_sequence_number, new_sequence_number); | 84 manager_.OnRetransmittedPacket(old_sequence_number, new_sequence_number); |
86 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission( | 85 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission( |
87 &manager_, new_sequence_number)); | 86 &manager_, new_sequence_number)); |
88 } | 87 } |
89 | 88 |
90 void RetransmitAndSendPacket(QuicPacketSequenceNumber old_sequence_number, | 89 void RetransmitAndSendPacket(QuicPacketSequenceNumber old_sequence_number, |
91 QuicPacketSequenceNumber new_sequence_number) { | 90 QuicPacketSequenceNumber new_sequence_number) { |
92 RetransmitPacket(old_sequence_number, new_sequence_number); | 91 RetransmitPacket(old_sequence_number, new_sequence_number); |
93 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, new_sequence_number, _, _)) | 92 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, new_sequence_number, _, _)) |
94 .WillOnce(Return(true)); | 93 .WillOnce(Return(true)); |
95 manager_.OnPacketSent(new_sequence_number, | 94 manager_.OnPacketSent(new_sequence_number, |
96 clock_.Now(), | 95 clock_.Now(), |
97 1000, | 96 1000, |
98 LOSS_RETRANSMISSION, | 97 LOSS_RETRANSMISSION, |
99 HAS_RETRANSMITTABLE_DATA); | 98 HAS_RETRANSMITTABLE_DATA); |
100 } | 99 } |
101 | 100 |
102 SerializedPacket CreateDataPacket(QuicPacketSequenceNumber sequence_number) { | 101 SerializedPacket CreateDataPacket(QuicPacketSequenceNumber sequence_number) { |
103 return CreatePacket(sequence_number, true); | 102 return CreatePacket(sequence_number, true); |
104 } | 103 } |
105 | 104 |
106 SerializedPacket CreatePacket(QuicPacketSequenceNumber sequence_number, | 105 SerializedPacket CreatePacket(QuicPacketSequenceNumber sequence_number, |
107 bool retransmittable) { | 106 bool retransmittable) { |
108 packets_.push_back(QuicPacket::NewDataPacket( | 107 packets_.push_back(QuicPacket::NewDataPacket(NULL, |
109 NULL, 1000, false, PACKET_8BYTE_CONNECTION_ID, false, | 108 1000, |
110 PACKET_6BYTE_SEQUENCE_NUMBER)); | 109 false, |
| 110 PACKET_8BYTE_CONNECTION_ID, |
| 111 false, |
| 112 PACKET_6BYTE_SEQUENCE_NUMBER)); |
111 return SerializedPacket( | 113 return SerializedPacket( |
112 sequence_number, PACKET_6BYTE_SEQUENCE_NUMBER, | 114 sequence_number, |
113 packets_.back(), 0u, | 115 PACKET_6BYTE_SEQUENCE_NUMBER, |
| 116 packets_.back(), |
| 117 0u, |
114 retransmittable ? new RetransmittableFrames() : NULL); | 118 retransmittable ? new RetransmittableFrames() : NULL); |
115 } | 119 } |
116 | 120 |
117 SerializedPacket CreateFecPacket(QuicPacketSequenceNumber sequence_number) { | 121 SerializedPacket CreateFecPacket(QuicPacketSequenceNumber sequence_number) { |
118 packets_.push_back(QuicPacket::NewFecPacket( | 122 packets_.push_back(QuicPacket::NewFecPacket(NULL, |
119 NULL, 1000, false, PACKET_8BYTE_CONNECTION_ID, false, | 123 1000, |
120 PACKET_6BYTE_SEQUENCE_NUMBER)); | 124 false, |
121 return SerializedPacket(sequence_number, PACKET_6BYTE_SEQUENCE_NUMBER, | 125 PACKET_8BYTE_CONNECTION_ID, |
122 packets_.back(), 0u, NULL); | 126 false, |
| 127 PACKET_6BYTE_SEQUENCE_NUMBER)); |
| 128 return SerializedPacket(sequence_number, |
| 129 PACKET_6BYTE_SEQUENCE_NUMBER, |
| 130 packets_.back(), |
| 131 0u, |
| 132 NULL); |
123 } | 133 } |
124 | 134 |
125 void SendDataPacket(QuicPacketSequenceNumber sequence_number) { | 135 void SendDataPacket(QuicPacketSequenceNumber sequence_number) { |
126 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _)) | 136 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _)) |
127 .Times(1).WillOnce(Return(true)); | 137 .Times(1) |
| 138 .WillOnce(Return(true)); |
128 SerializedPacket packet(CreateDataPacket(sequence_number)); | 139 SerializedPacket packet(CreateDataPacket(sequence_number)); |
129 manager_.OnSerializedPacket(packet); | 140 manager_.OnSerializedPacket(packet); |
130 manager_.OnPacketSent(sequence_number, clock_.Now(), | 141 manager_.OnPacketSent(sequence_number, |
131 packet.packet->length(), NOT_RETRANSMISSION, | 142 clock_.Now(), |
| 143 packet.packet->length(), |
| 144 NOT_RETRANSMISSION, |
132 HAS_RETRANSMITTABLE_DATA); | 145 HAS_RETRANSMITTABLE_DATA); |
133 } | 146 } |
134 | 147 |
135 void SendCryptoPacket(QuicPacketSequenceNumber sequence_number) { | 148 void SendCryptoPacket(QuicPacketSequenceNumber sequence_number) { |
136 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _)) | 149 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _)) |
137 .Times(1).WillOnce(Return(true)); | 150 .Times(1) |
| 151 .WillOnce(Return(true)); |
138 SerializedPacket packet(CreateDataPacket(sequence_number)); | 152 SerializedPacket packet(CreateDataPacket(sequence_number)); |
139 packet.retransmittable_frames->AddStreamFrame( | 153 packet.retransmittable_frames->AddStreamFrame( |
140 new QuicStreamFrame(1, false, 0, IOVector())); | 154 new QuicStreamFrame(1, false, 0, IOVector())); |
141 manager_.OnSerializedPacket(packet); | 155 manager_.OnSerializedPacket(packet); |
142 manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(), | 156 manager_.OnPacketSent(sequence_number, |
143 packet.packet->length(), NOT_RETRANSMISSION, | 157 clock_.ApproximateNow(), |
| 158 packet.packet->length(), |
| 159 NOT_RETRANSMISSION, |
144 HAS_RETRANSMITTABLE_DATA); | 160 HAS_RETRANSMITTABLE_DATA); |
145 } | 161 } |
146 | 162 |
147 void SendFecPacket(QuicPacketSequenceNumber sequence_number) { | 163 void SendFecPacket(QuicPacketSequenceNumber sequence_number) { |
148 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _)) | 164 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _)) |
149 .Times(1).WillOnce(Return(true)); | 165 .Times(1) |
| 166 .WillOnce(Return(true)); |
150 SerializedPacket packet(CreateFecPacket(sequence_number)); | 167 SerializedPacket packet(CreateFecPacket(sequence_number)); |
151 manager_.OnSerializedPacket(packet); | 168 manager_.OnSerializedPacket(packet); |
152 manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(), | 169 manager_.OnPacketSent(sequence_number, |
153 packet.packet->length(), NOT_RETRANSMISSION, | 170 clock_.ApproximateNow(), |
| 171 packet.packet->length(), |
| 172 NOT_RETRANSMISSION, |
154 NO_RETRANSMITTABLE_DATA); | 173 NO_RETRANSMITTABLE_DATA); |
155 } | 174 } |
156 | 175 |
157 void SendAckPacket(QuicPacketSequenceNumber sequence_number) { | 176 void SendAckPacket(QuicPacketSequenceNumber sequence_number) { |
158 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _)) | 177 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _)) |
159 .Times(1).WillOnce(Return(false)); | 178 .Times(1) |
| 179 .WillOnce(Return(false)); |
160 SerializedPacket packet(CreatePacket(sequence_number, false)); | 180 SerializedPacket packet(CreatePacket(sequence_number, false)); |
161 manager_.OnSerializedPacket(packet); | 181 manager_.OnSerializedPacket(packet); |
162 manager_.OnPacketSent(sequence_number, clock_.Now(), | 182 manager_.OnPacketSent(sequence_number, |
163 packet.packet->length(), NOT_RETRANSMISSION, | 183 clock_.Now(), |
| 184 packet.packet->length(), |
| 185 NOT_RETRANSMISSION, |
164 NO_RETRANSMITTABLE_DATA); | 186 NO_RETRANSMITTABLE_DATA); |
165 } | 187 } |
166 | 188 |
167 // Based on QuicConnection's WritePendingRetransmissions. | 189 // Based on QuicConnection's WritePendingRetransmissions. |
168 void RetransmitNextPacket( | 190 void RetransmitNextPacket( |
169 QuicPacketSequenceNumber retransmission_sequence_number) { | 191 QuicPacketSequenceNumber retransmission_sequence_number) { |
170 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 192 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
171 EXPECT_CALL(*send_algorithm_, | 193 EXPECT_CALL(*send_algorithm_, |
172 OnPacketSent(_, retransmission_sequence_number, _, _)) | 194 OnPacketSent(_, retransmission_sequence_number, _, _)) |
173 .Times(1).WillOnce(Return(true)); | 195 .Times(1) |
| 196 .WillOnce(Return(true)); |
174 const QuicSentPacketManager::PendingRetransmission pending = | 197 const QuicSentPacketManager::PendingRetransmission pending = |
175 manager_.NextPendingRetransmission(); | 198 manager_.NextPendingRetransmission(); |
176 manager_.OnRetransmittedPacket( | 199 manager_.OnRetransmittedPacket(pending.sequence_number, |
177 pending.sequence_number, retransmission_sequence_number); | 200 retransmission_sequence_number); |
178 manager_.OnPacketSent(retransmission_sequence_number, | 201 manager_.OnPacketSent(retransmission_sequence_number, |
179 clock_.ApproximateNow(), 1000, | 202 clock_.ApproximateNow(), |
180 pending.transmission_type, HAS_RETRANSMITTABLE_DATA); | 203 1000, |
| 204 pending.transmission_type, |
| 205 HAS_RETRANSMITTABLE_DATA); |
181 } | 206 } |
182 | 207 |
183 QuicSentPacketManager manager_; | 208 QuicSentPacketManager manager_; |
184 vector<QuicPacket*> packets_; | 209 vector<QuicPacket*> packets_; |
185 MockClock clock_; | 210 MockClock clock_; |
186 QuicConnectionStats stats_; | 211 QuicConnectionStats stats_; |
187 MockSendAlgorithm* send_algorithm_; | 212 MockSendAlgorithm* send_algorithm_; |
188 }; | 213 }; |
189 | 214 |
190 TEST_F(QuicSentPacketManagerTest, IsUnacked) { | 215 TEST_F(QuicSentPacketManagerTest, IsUnacked) { |
191 VerifyUnackedPackets(NULL, 0); | 216 VerifyUnackedPackets(NULL, 0); |
192 | 217 |
193 SerializedPacket serialized_packet(CreateDataPacket(1)); | 218 SerializedPacket serialized_packet(CreateDataPacket(1)); |
194 | 219 |
195 manager_.OnSerializedPacket(serialized_packet); | 220 manager_.OnSerializedPacket(serialized_packet); |
196 | 221 |
197 QuicPacketSequenceNumber unacked[] = { 1 }; | 222 QuicPacketSequenceNumber unacked[] = {1}; |
198 VerifyUnackedPackets(unacked, arraysize(unacked)); | 223 VerifyUnackedPackets(unacked, arraysize(unacked)); |
199 QuicPacketSequenceNumber retransmittable[] = { 1 }; | 224 QuicPacketSequenceNumber retransmittable[] = {1}; |
200 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 225 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
201 } | 226 } |
202 | 227 |
203 TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) { | 228 TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) { |
204 SendDataPacket(1); | 229 SendDataPacket(1); |
205 RetransmitPacket(1, 2); | 230 RetransmitPacket(1, 2); |
206 | 231 |
207 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(&manager_, 2)); | 232 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(&manager_, 2)); |
208 QuicPacketSequenceNumber unacked[] = { 1, 2 }; | 233 QuicPacketSequenceNumber unacked[] = {1, 2}; |
209 VerifyUnackedPackets(unacked, arraysize(unacked)); | 234 VerifyUnackedPackets(unacked, arraysize(unacked)); |
210 QuicPacketSequenceNumber retransmittable[] = { 2 }; | 235 QuicPacketSequenceNumber retransmittable[] = {2}; |
211 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 236 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
212 } | 237 } |
213 | 238 |
214 TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) { | 239 TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) { |
215 SendDataPacket(1); | 240 SendDataPacket(1); |
216 RetransmitAndSendPacket(1, 2); | 241 RetransmitAndSendPacket(1, 2); |
217 | 242 |
218 // Ack 2 but not 1. | 243 // Ack 2 but not 1. |
219 ReceivedPacketInfo received_info; | 244 ReceivedPacketInfo received_info; |
220 received_info.largest_observed = 2; | 245 received_info.largest_observed = 2; |
221 received_info.missing_packets.insert(1); | 246 received_info.missing_packets.insert(1); |
222 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); | 247 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); |
223 EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _)).Times(1); | 248 EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _)).Times(1); |
224 manager_.OnIncomingAck(received_info, clock_.Now()); | 249 manager_.OnIncomingAck(received_info, clock_.Now()); |
225 | 250 |
226 // Packet 1 is unacked, pending, but not retransmittable. | 251 // Packet 1 is unacked, pending, but not retransmittable. |
227 QuicPacketSequenceNumber unacked[] = { 1 }; | 252 QuicPacketSequenceNumber unacked[] = {1}; |
228 VerifyUnackedPackets(unacked, arraysize(unacked)); | 253 VerifyUnackedPackets(unacked, arraysize(unacked)); |
229 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 254 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
230 VerifyRetransmittablePackets(NULL, 0); | 255 VerifyRetransmittablePackets(NULL, 0); |
231 } | 256 } |
232 | 257 |
233 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { | 258 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { |
234 SendDataPacket(1); | 259 SendDataPacket(1); |
235 QuicSentPacketManagerPeer::MarkForRetransmission( | 260 QuicSentPacketManagerPeer::MarkForRetransmission( |
236 &manager_, 1, LOSS_RETRANSMISSION); | 261 &manager_, 1, LOSS_RETRANSMISSION); |
237 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 262 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 clock_.AdvanceTime(rtt); | 308 clock_.AdvanceTime(rtt); |
284 | 309 |
285 // Ack 1 but not 2. | 310 // Ack 1 but not 2. |
286 EXPECT_CALL(*send_algorithm_, OnRttUpdated(1)); | 311 EXPECT_CALL(*send_algorithm_, OnRttUpdated(1)); |
287 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)); | 312 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)); |
288 ReceivedPacketInfo received_info; | 313 ReceivedPacketInfo received_info; |
289 received_info.largest_observed = 1; | 314 received_info.largest_observed = 1; |
290 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); | 315 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); |
291 | 316 |
292 // 2 remains unacked, but no packets have retransmittable data. | 317 // 2 remains unacked, but no packets have retransmittable data. |
293 QuicPacketSequenceNumber unacked[] = { 2 }; | 318 QuicPacketSequenceNumber unacked[] = {2}; |
294 VerifyUnackedPackets(unacked, arraysize(unacked)); | 319 VerifyUnackedPackets(unacked, arraysize(unacked)); |
295 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 320 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
296 VerifyRetransmittablePackets(NULL, 0); | 321 VerifyRetransmittablePackets(NULL, 0); |
297 | 322 |
298 EXPECT_EQ(1u, stats_.packets_spuriously_retransmitted); | 323 EXPECT_EQ(1u, stats_.packets_spuriously_retransmitted); |
299 } | 324 } |
300 | 325 |
301 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPreviousThenNackRetransmit) { | 326 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPreviousThenNackRetransmit) { |
302 SendDataPacket(1); | 327 SendDataPacket(1); |
303 RetransmitPacket(1, 2); | 328 RetransmitPacket(1, 2); |
304 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 2, _, _)) | 329 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 2, _, _)) |
305 .WillOnce(Return(true)); | 330 .WillOnce(Return(true)); |
306 manager_.OnPacketSent(2, clock_.ApproximateNow(), 1000, | 331 manager_.OnPacketSent(2, |
307 LOSS_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); | 332 clock_.ApproximateNow(), |
| 333 1000, |
| 334 LOSS_RETRANSMISSION, |
| 335 HAS_RETRANSMITTABLE_DATA); |
308 QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15); | 336 QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15); |
309 clock_.AdvanceTime(rtt); | 337 clock_.AdvanceTime(rtt); |
310 | 338 |
311 // First, ACK packet 1 which makes packet 2 non-retransmittable. | 339 // First, ACK packet 1 which makes packet 2 non-retransmittable. |
312 EXPECT_CALL(*send_algorithm_, OnRttUpdated(1)); | 340 EXPECT_CALL(*send_algorithm_, OnRttUpdated(1)); |
313 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)); | 341 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)); |
314 ReceivedPacketInfo received_info; | 342 ReceivedPacketInfo received_info; |
315 received_info.largest_observed = 1; | 343 received_info.largest_observed = 1; |
316 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); | 344 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); |
317 | 345 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 clock_.AdvanceTime(rtt); | 412 clock_.AdvanceTime(rtt); |
385 | 413 |
386 // Ack 1 but not 2 or 3. | 414 // Ack 1 but not 2 or 3. |
387 EXPECT_CALL(*send_algorithm_, OnRttUpdated(1)); | 415 EXPECT_CALL(*send_algorithm_, OnRttUpdated(1)); |
388 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)); | 416 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)); |
389 ReceivedPacketInfo received_info; | 417 ReceivedPacketInfo received_info; |
390 received_info.largest_observed = 1; | 418 received_info.largest_observed = 1; |
391 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); | 419 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); |
392 | 420 |
393 // 2 and 3 remain unacked, but no packets have retransmittable data. | 421 // 2 and 3 remain unacked, but no packets have retransmittable data. |
394 QuicPacketSequenceNumber unacked[] = { 2, 3 }; | 422 QuicPacketSequenceNumber unacked[] = {2, 3}; |
395 VerifyUnackedPackets(unacked, arraysize(unacked)); | 423 VerifyUnackedPackets(unacked, arraysize(unacked)); |
396 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 424 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
397 VerifyRetransmittablePackets(NULL, 0); | 425 VerifyRetransmittablePackets(NULL, 0); |
398 | 426 |
399 // Ensure packet 2 is lost when 4 and 5 are sent and acked. | 427 // Ensure packet 2 is lost when 4 and 5 are sent and acked. |
400 SendDataPacket(4); | 428 SendDataPacket(4); |
401 received_info.largest_observed = 4; | 429 received_info.largest_observed = 4; |
402 received_info.missing_packets.insert(2); | 430 received_info.missing_packets.insert(2); |
403 EXPECT_CALL(*send_algorithm_, OnRttUpdated(4)); | 431 EXPECT_CALL(*send_algorithm_, OnRttUpdated(4)); |
404 EXPECT_CALL(*send_algorithm_, OnPacketAcked(3, _)); | 432 EXPECT_CALL(*send_algorithm_, OnPacketAcked(3, _)); |
405 EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _)); | 433 EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _)); |
406 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); | 434 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); |
407 | 435 |
408 QuicPacketSequenceNumber unacked2[] = { 2 }; | 436 QuicPacketSequenceNumber unacked2[] = {2}; |
409 VerifyUnackedPackets(unacked2, arraysize(unacked2)); | 437 VerifyUnackedPackets(unacked2, arraysize(unacked2)); |
410 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 438 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
411 | 439 |
412 SendDataPacket(5); | 440 SendDataPacket(5); |
413 received_info.largest_observed = 5; | 441 received_info.largest_observed = 5; |
414 EXPECT_CALL(*send_algorithm_, OnRttUpdated(5)); | 442 EXPECT_CALL(*send_algorithm_, OnRttUpdated(5)); |
415 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _)); | 443 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _)); |
416 EXPECT_CALL(*send_algorithm_, OnPacketLost(2, _)); | 444 EXPECT_CALL(*send_algorithm_, OnPacketLost(2, _)); |
417 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(2, _)); | 445 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(2, _)); |
418 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); | 446 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); |
(...skipping 12 matching lines...) Expand all Loading... |
431 // Ack 2 and 3, and mark 1 as revived. | 459 // Ack 2 and 3, and mark 1 as revived. |
432 ReceivedPacketInfo received_info; | 460 ReceivedPacketInfo received_info; |
433 received_info.largest_observed = 3; | 461 received_info.largest_observed = 3; |
434 received_info.missing_packets.insert(1); | 462 received_info.missing_packets.insert(1); |
435 received_info.revived_packets.insert(1); | 463 received_info.revived_packets.insert(1); |
436 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); | 464 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); |
437 EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _)).Times(2); | 465 EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _)).Times(2); |
438 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); | 466 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); |
439 | 467 |
440 EXPECT_FALSE(manager_.HasPendingRetransmissions()); | 468 EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
441 QuicPacketSequenceNumber unacked[] = { 1, 4 }; | 469 QuicPacketSequenceNumber unacked[] = {1, 4}; |
442 VerifyUnackedPackets(unacked, arraysize(unacked)); | 470 VerifyUnackedPackets(unacked, arraysize(unacked)); |
443 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 471 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
444 QuicPacketSequenceNumber retransmittable[] = { 4 }; | 472 QuicPacketSequenceNumber retransmittable[] = {4}; |
445 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 473 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
446 | 474 |
447 // Ack the 4th packet and expect the 1st to be considered lost. | 475 // Ack the 4th packet and expect the 1st to be considered lost. |
448 received_info.largest_observed = 4; | 476 received_info.largest_observed = 4; |
449 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); | 477 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); |
450 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)); | 478 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)); |
451 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)); | 479 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)); |
452 EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _)); | 480 EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _)); |
453 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); | 481 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); |
454 | 482 |
(...skipping 12 matching lines...) Expand all Loading... |
467 ReceivedPacketInfo received_info; | 495 ReceivedPacketInfo received_info; |
468 received_info.largest_observed = 4; | 496 received_info.largest_observed = 4; |
469 received_info.missing_packets.insert(1); | 497 received_info.missing_packets.insert(1); |
470 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); | 498 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); |
471 EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _)).Times(3); | 499 EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _)).Times(3); |
472 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)); | 500 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)); |
473 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)); | 501 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)); |
474 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); | 502 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); |
475 | 503 |
476 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 504 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
477 QuicPacketSequenceNumber unacked[] = { 1, 5 }; | 505 QuicPacketSequenceNumber unacked[] = {1, 5}; |
478 VerifyUnackedPackets(unacked, arraysize(unacked)); | 506 VerifyUnackedPackets(unacked, arraysize(unacked)); |
479 QuicPacketSequenceNumber retransmittable[] = { 1 }; | 507 QuicPacketSequenceNumber retransmittable[] = {1}; |
480 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 508 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
481 | 509 |
482 // Ack 5th packet (FEC) and revive 1st packet. 1st packet should now be | 510 // Ack 5th packet (FEC) and revive 1st packet. 1st packet should now be |
483 // removed from pending retransmissions map. | 511 // removed from pending retransmissions map. |
484 received_info.largest_observed = 5; | 512 received_info.largest_observed = 5; |
485 received_info.revived_packets.insert(1); | 513 received_info.revived_packets.insert(1); |
486 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); | 514 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); |
487 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _)); | 515 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _)); |
488 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); | 516 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); |
489 | 517 |
(...skipping 15 matching lines...) Expand all Loading... |
505 received_info.missing_packets.insert(2); | 533 received_info.missing_packets.insert(2); |
506 received_info.missing_packets.insert(3); | 534 received_info.missing_packets.insert(3); |
507 received_info.missing_packets.insert(4); | 535 received_info.missing_packets.insert(4); |
508 received_info.is_truncated = true; | 536 received_info.is_truncated = true; |
509 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); | 537 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); |
510 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)); | 538 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)); |
511 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)); | 539 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)); |
512 manager_.OnIncomingAck(received_info, clock_.Now()); | 540 manager_.OnIncomingAck(received_info, clock_.Now()); |
513 | 541 |
514 // High water mark will be raised. | 542 // High water mark will be raised. |
515 QuicPacketSequenceNumber unacked[] = { 2, 3, 4 }; | 543 QuicPacketSequenceNumber unacked[] = {2, 3, 4}; |
516 VerifyUnackedPackets(unacked, arraysize(unacked)); | 544 VerifyUnackedPackets(unacked, arraysize(unacked)); |
517 QuicPacketSequenceNumber retransmittable[] = { 4 }; | 545 QuicPacketSequenceNumber retransmittable[] = {4}; |
518 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 546 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
519 } | 547 } |
520 | 548 |
521 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) { | 549 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) { |
522 SendDataPacket(1); | 550 SendDataPacket(1); |
523 RetransmitAndSendPacket(1, 2); | 551 RetransmitAndSendPacket(1, 2); |
524 RetransmitAndSendPacket(2, 3); | 552 RetransmitAndSendPacket(2, 3); |
525 RetransmitAndSendPacket(3, 4); | 553 RetransmitAndSendPacket(3, 4); |
526 manager_.OnSerializedPacket(CreateDataPacket(5)); | 554 manager_.OnSerializedPacket(CreateDataPacket(5)); |
527 manager_.OnSerializedPacket(CreateDataPacket(6)); | 555 manager_.OnSerializedPacket(CreateDataPacket(6)); |
(...skipping 21 matching lines...) Expand all Loading... |
549 received_info.missing_packets.insert(5); | 577 received_info.missing_packets.insert(5); |
550 received_info.missing_packets.insert(6); | 578 received_info.missing_packets.insert(6); |
551 received_info.is_truncated = true; | 579 received_info.is_truncated = true; |
552 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)); | 580 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)); |
553 EXPECT_CALL(*send_algorithm_, OnPacketLost(3, _)); | 581 EXPECT_CALL(*send_algorithm_, OnPacketLost(3, _)); |
554 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(3, _)); | 582 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(3, _)); |
555 manager_.OnIncomingAck(received_info, clock_.Now()); | 583 manager_.OnIncomingAck(received_info, clock_.Now()); |
556 } | 584 } |
557 | 585 |
558 // High water mark will be raised. | 586 // High water mark will be raised. |
559 QuicPacketSequenceNumber unacked[] = { 4, 5, 6, 7, 8, 9 }; | 587 QuicPacketSequenceNumber unacked[] = {4, 5, 6, 7, 8, 9}; |
560 VerifyUnackedPackets(unacked, arraysize(unacked)); | 588 VerifyUnackedPackets(unacked, arraysize(unacked)); |
561 QuicPacketSequenceNumber retransmittable[] = { 5, 6, 7, 8, 9 }; | 589 QuicPacketSequenceNumber retransmittable[] = {5, 6, 7, 8, 9}; |
562 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 590 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
563 } | 591 } |
564 | 592 |
565 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) { | 593 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) { |
566 EXPECT_EQ(0u, manager_.GetLeastUnackedSentPacket()); | 594 EXPECT_EQ(0u, manager_.GetLeastUnackedSentPacket()); |
567 } | 595 } |
568 | 596 |
569 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnacked) { | 597 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnacked) { |
570 SerializedPacket serialized_packet(CreateDataPacket(1)); | 598 SerializedPacket serialized_packet(CreateDataPacket(1)); |
571 | 599 |
(...skipping 24 matching lines...) Expand all Loading... |
596 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); | 624 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); |
597 | 625 |
598 SerializedPacket serialized_packet2(CreateFecPacket(2)); | 626 SerializedPacket serialized_packet2(CreateFecPacket(2)); |
599 manager_.OnSerializedPacket(serialized_packet2); | 627 manager_.OnSerializedPacket(serialized_packet2); |
600 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); | 628 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); |
601 | 629 |
602 SerializedPacket serialized_packet3(CreateFecPacket(3)); | 630 SerializedPacket serialized_packet3(CreateFecPacket(3)); |
603 manager_.OnSerializedPacket(serialized_packet3); | 631 manager_.OnSerializedPacket(serialized_packet3); |
604 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); | 632 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); |
605 | 633 |
606 QuicPacketSequenceNumber unacked[] = { 1, 2, 3 }; | 634 QuicPacketSequenceNumber unacked[] = {1, 2, 3}; |
607 VerifyUnackedPackets(unacked, arraysize(unacked)); | 635 VerifyUnackedPackets(unacked, arraysize(unacked)); |
608 VerifyRetransmittablePackets(NULL, 0); | 636 VerifyRetransmittablePackets(NULL, 0); |
609 | 637 |
610 manager_.DiscardUnackedPacket(1); | 638 manager_.DiscardUnackedPacket(1); |
611 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket()); | 639 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket()); |
612 | 640 |
613 // Ack 2. | 641 // Ack 2. |
614 ReceivedPacketInfo received_info; | 642 ReceivedPacketInfo received_info; |
615 received_info.largest_observed = 2; | 643 received_info.largest_observed = 2; |
616 manager_.OnIncomingAck(received_info, clock_.Now()); | 644 manager_.OnIncomingAck(received_info, clock_.Now()); |
617 | 645 |
618 EXPECT_EQ(3u, manager_.GetLeastUnackedSentPacket()); | 646 EXPECT_EQ(3u, manager_.GetLeastUnackedSentPacket()); |
619 | 647 |
620 // Discard the 3rd packet and ensure there are no FEC packets. | 648 // Discard the 3rd packet and ensure there are no FEC packets. |
621 manager_.DiscardUnackedPacket(3); | 649 manager_.DiscardUnackedPacket(3); |
622 EXPECT_FALSE(manager_.HasUnackedPackets()); | 650 EXPECT_FALSE(manager_.HasUnackedPackets()); |
623 } | 651 } |
624 | 652 |
625 TEST_F(QuicSentPacketManagerTest, GetSentTime) { | 653 TEST_F(QuicSentPacketManagerTest, GetSentTime) { |
626 VerifyUnackedPackets(NULL, 0); | 654 VerifyUnackedPackets(NULL, 0); |
627 | 655 |
628 SerializedPacket serialized_packet(CreateFecPacket(1)); | 656 SerializedPacket serialized_packet(CreateFecPacket(1)); |
629 manager_.OnSerializedPacket(serialized_packet); | 657 manager_.OnSerializedPacket(serialized_packet); |
630 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 1, _, _)) | 658 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 1, _, _)).Times(1).WillOnce( |
631 .Times(1).WillOnce(Return(true)); | 659 Return(true)); |
632 manager_.OnPacketSent( | 660 manager_.OnPacketSent( |
633 1, QuicTime::Zero(), 1000, NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA); | 661 1, QuicTime::Zero(), 1000, NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA); |
634 | 662 |
635 SerializedPacket serialized_packet2(CreateFecPacket(2)); | 663 SerializedPacket serialized_packet2(CreateFecPacket(2)); |
636 QuicTime sent_time = QuicTime::Zero().Add(QuicTime::Delta::FromSeconds(1)); | 664 QuicTime sent_time = QuicTime::Zero().Add(QuicTime::Delta::FromSeconds(1)); |
637 manager_.OnSerializedPacket(serialized_packet2); | 665 manager_.OnSerializedPacket(serialized_packet2); |
638 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 2, _, _)) | 666 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 2, _, _)).Times(1).WillOnce( |
639 .Times(1).WillOnce(Return(true)); | 667 Return(true)); |
640 manager_.OnPacketSent( | 668 manager_.OnPacketSent( |
641 2, sent_time, 1000, NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA); | 669 2, sent_time, 1000, NOT_RETRANSMISSION, NO_RETRANSMITTABLE_DATA); |
642 | 670 |
643 QuicPacketSequenceNumber unacked[] = { 1, 2 }; | 671 QuicPacketSequenceNumber unacked[] = {1, 2}; |
644 VerifyUnackedPackets(unacked, arraysize(unacked)); | 672 VerifyUnackedPackets(unacked, arraysize(unacked)); |
645 VerifyRetransmittablePackets(NULL, 0); | 673 VerifyRetransmittablePackets(NULL, 0); |
646 | 674 |
647 EXPECT_TRUE(manager_.HasUnackedPackets()); | 675 EXPECT_TRUE(manager_.HasUnackedPackets()); |
648 EXPECT_EQ(QuicTime::Zero(), | 676 EXPECT_EQ(QuicTime::Zero(), |
649 QuicSentPacketManagerPeer::GetSentTime(&manager_, 1)); | 677 QuicSentPacketManagerPeer::GetSentTime(&manager_, 1)); |
650 EXPECT_EQ(sent_time, QuicSentPacketManagerPeer::GetSentTime(&manager_, 2)); | 678 EXPECT_EQ(sent_time, QuicSentPacketManagerPeer::GetSentTime(&manager_, 2)); |
651 } | 679 } |
652 | 680 |
653 TEST_F(QuicSentPacketManagerTest, FackRetransmit17Packets) { | 681 TEST_F(QuicSentPacketManagerTest, FackRetransmit17Packets) { |
654 const size_t kNumSentPackets = 25; | 682 const size_t kNumSentPackets = 25; |
655 // Transmit 25 packets. | 683 // Transmit 25 packets. |
656 for (QuicPacketSequenceNumber i = 1; i <= kNumSentPackets; ++i) { | 684 for (QuicPacketSequenceNumber i = 1; i <= kNumSentPackets; ++i) { |
657 SendDataPacket(i); | 685 SendDataPacket(i); |
658 } | 686 } |
659 | 687 |
660 // Nack the first 19 packets 3 times, which does not trigger early retransmit. | 688 // Nack the first 19 packets 3 times, which does not trigger early retransmit. |
661 const size_t kLargestObserved = 20; | 689 const size_t kLargestObserved = 20; |
662 ReceivedPacketInfo received_info; | 690 ReceivedPacketInfo received_info; |
663 received_info.largest_observed = kLargestObserved; | 691 received_info.largest_observed = kLargestObserved; |
664 received_info.delta_time_largest_observed = | 692 received_info.delta_time_largest_observed = |
665 QuicTime::Delta::FromMilliseconds(5); | 693 QuicTime::Delta::FromMilliseconds(5); |
666 for (size_t i = 1; i < kLargestObserved; ++i) { | 694 for (size_t i = 1; i < kLargestObserved; ++i) { |
667 received_info.missing_packets.insert(i); | 695 received_info.missing_packets.insert(i); |
668 } | 696 } |
669 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); | 697 EXPECT_CALL(*send_algorithm_, OnRttUpdated(_)); |
670 EXPECT_CALL(*send_algorithm_, | 698 EXPECT_CALL(*send_algorithm_, OnPacketAcked(kLargestObserved, _)).Times(1); |
671 OnPacketAcked(kLargestObserved, _)).Times(1); | |
672 EXPECT_CALL(*send_algorithm_, OnPacketLost(_, _)).Times(17); | 699 EXPECT_CALL(*send_algorithm_, OnPacketLost(_, _)).Times(17); |
673 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(17); | 700 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(17); |
674 manager_.OnIncomingAck(received_info, clock_.Now()); | 701 manager_.OnIncomingAck(received_info, clock_.Now()); |
675 EXPECT_EQ( | 702 EXPECT_EQ( |
676 17u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_)); | 703 17u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_)); |
677 for (size_t i = 1; i < kLargestObserved; ++i) { | 704 for (size_t i = 1; i < kLargestObserved; ++i) { |
678 EXPECT_EQ(kLargestObserved - i, | 705 EXPECT_EQ(kLargestObserved - i, |
679 QuicSentPacketManagerPeer::GetNackCount(&manager_, i)); | 706 QuicSentPacketManagerPeer::GetNackCount(&manager_, i)); |
680 } | 707 } |
681 | 708 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
749 manager_.OnIncomingAck(received_info, clock_.Now()); | 776 manager_.OnIncomingAck(received_info, clock_.Now()); |
750 } | 777 } |
751 | 778 |
752 TEST_F(QuicSentPacketManagerTest, Rtt) { | 779 TEST_F(QuicSentPacketManagerTest, Rtt) { |
753 QuicPacketSequenceNumber sequence_number = 1; | 780 QuicPacketSequenceNumber sequence_number = 1; |
754 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(15); | 781 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(15); |
755 SendDataPacket(sequence_number); | 782 SendDataPacket(sequence_number); |
756 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); | 783 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); |
757 | 784 |
758 EXPECT_CALL(*send_algorithm_, OnRttUpdated(sequence_number)); | 785 EXPECT_CALL(*send_algorithm_, OnRttUpdated(sequence_number)); |
759 EXPECT_CALL(*send_algorithm_, | 786 EXPECT_CALL(*send_algorithm_, OnPacketAcked(sequence_number, _)).Times(1); |
760 OnPacketAcked(sequence_number, _)).Times(1); | |
761 ReceivedPacketInfo received_info; | 787 ReceivedPacketInfo received_info; |
762 received_info.largest_observed = sequence_number; | 788 received_info.largest_observed = sequence_number; |
763 received_info.delta_time_largest_observed = | 789 received_info.delta_time_largest_observed = |
764 QuicTime::Delta::FromMilliseconds(5); | 790 QuicTime::Delta::FromMilliseconds(5); |
765 manager_.OnIncomingAck(received_info, clock_.Now()); | 791 manager_.OnIncomingAck(received_info, clock_.Now()); |
766 EXPECT_EQ(expected_rtt, | 792 EXPECT_EQ(expected_rtt, |
767 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); | 793 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); |
768 } | 794 } |
769 | 795 |
770 TEST_F(QuicSentPacketManagerTest, RttWithInvalidDelta) { | 796 TEST_F(QuicSentPacketManagerTest, RttWithInvalidDelta) { |
771 // Expect that the RTT is equal to the local time elapsed, since the | 797 // Expect that the RTT is equal to the local time elapsed, since the |
772 // delta_time_largest_observed is larger than the local time elapsed | 798 // delta_time_largest_observed is larger than the local time elapsed |
773 // and is hence invalid. | 799 // and is hence invalid. |
774 QuicPacketSequenceNumber sequence_number = 1; | 800 QuicPacketSequenceNumber sequence_number = 1; |
775 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); | 801 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); |
776 SendDataPacket(sequence_number); | 802 SendDataPacket(sequence_number); |
777 clock_.AdvanceTime(expected_rtt); | 803 clock_.AdvanceTime(expected_rtt); |
778 | 804 |
779 EXPECT_CALL(*send_algorithm_, OnRttUpdated(sequence_number)); | 805 EXPECT_CALL(*send_algorithm_, OnRttUpdated(sequence_number)); |
780 EXPECT_CALL(*send_algorithm_, | 806 EXPECT_CALL(*send_algorithm_, OnPacketAcked(sequence_number, _)).Times(1); |
781 OnPacketAcked(sequence_number, _)).Times(1); | |
782 ReceivedPacketInfo received_info; | 807 ReceivedPacketInfo received_info; |
783 received_info.largest_observed = sequence_number; | 808 received_info.largest_observed = sequence_number; |
784 received_info.delta_time_largest_observed = | 809 received_info.delta_time_largest_observed = |
785 QuicTime::Delta::FromMilliseconds(11); | 810 QuicTime::Delta::FromMilliseconds(11); |
786 manager_.OnIncomingAck(received_info, clock_.Now()); | 811 manager_.OnIncomingAck(received_info, clock_.Now()); |
787 EXPECT_EQ(expected_rtt, | 812 EXPECT_EQ(expected_rtt, |
788 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); | 813 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); |
789 } | 814 } |
790 | 815 |
791 TEST_F(QuicSentPacketManagerTest, RttWithInfiniteDelta) { | 816 TEST_F(QuicSentPacketManagerTest, RttWithInfiniteDelta) { |
792 // Expect that the RTT is equal to the local time elapsed, since the | 817 // Expect that the RTT is equal to the local time elapsed, since the |
793 // delta_time_largest_observed is infinite, and is hence invalid. | 818 // delta_time_largest_observed is infinite, and is hence invalid. |
794 QuicPacketSequenceNumber sequence_number = 1; | 819 QuicPacketSequenceNumber sequence_number = 1; |
795 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); | 820 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); |
796 SendDataPacket(sequence_number); | 821 SendDataPacket(sequence_number); |
797 clock_.AdvanceTime(expected_rtt); | 822 clock_.AdvanceTime(expected_rtt); |
798 | 823 |
799 EXPECT_CALL(*send_algorithm_, OnRttUpdated(sequence_number)); | 824 EXPECT_CALL(*send_algorithm_, OnRttUpdated(sequence_number)); |
800 EXPECT_CALL(*send_algorithm_, | 825 EXPECT_CALL(*send_algorithm_, OnPacketAcked(sequence_number, _)).Times(1); |
801 OnPacketAcked(sequence_number, _)).Times(1); | |
802 ReceivedPacketInfo received_info; | 826 ReceivedPacketInfo received_info; |
803 received_info.largest_observed = sequence_number; | 827 received_info.largest_observed = sequence_number; |
804 received_info.delta_time_largest_observed = QuicTime::Delta::Infinite(); | 828 received_info.delta_time_largest_observed = QuicTime::Delta::Infinite(); |
805 manager_.OnIncomingAck(received_info, clock_.Now()); | 829 manager_.OnIncomingAck(received_info, clock_.Now()); |
806 EXPECT_EQ(expected_rtt, | 830 EXPECT_EQ(expected_rtt, |
807 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); | 831 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); |
808 } | 832 } |
809 | 833 |
810 TEST_F(QuicSentPacketManagerTest, RttZeroDelta) { | 834 TEST_F(QuicSentPacketManagerTest, RttZeroDelta) { |
811 // Expect that the RTT is the time between send and receive since the | 835 // Expect that the RTT is the time between send and receive since the |
812 // delta_time_largest_observed is zero. | 836 // delta_time_largest_observed is zero. |
813 QuicPacketSequenceNumber sequence_number = 1; | 837 QuicPacketSequenceNumber sequence_number = 1; |
814 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); | 838 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); |
815 SendDataPacket(sequence_number); | 839 SendDataPacket(sequence_number); |
816 clock_.AdvanceTime(expected_rtt); | 840 clock_.AdvanceTime(expected_rtt); |
817 | 841 |
818 EXPECT_CALL(*send_algorithm_, OnRttUpdated(sequence_number)); | 842 EXPECT_CALL(*send_algorithm_, OnRttUpdated(sequence_number)); |
819 EXPECT_CALL(*send_algorithm_, OnPacketAcked(sequence_number, _)) | 843 EXPECT_CALL(*send_algorithm_, OnPacketAcked(sequence_number, _)).Times(1); |
820 .Times(1); | |
821 ReceivedPacketInfo received_info; | 844 ReceivedPacketInfo received_info; |
822 received_info.largest_observed = sequence_number; | 845 received_info.largest_observed = sequence_number; |
823 received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); | 846 received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); |
824 manager_.OnIncomingAck(received_info, clock_.Now()); | 847 manager_.OnIncomingAck(received_info, clock_.Now()); |
825 EXPECT_EQ(expected_rtt, | 848 EXPECT_EQ(expected_rtt, |
826 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); | 849 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); |
827 } | 850 } |
828 | 851 |
829 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeout) { | 852 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeout) { |
830 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); | 853 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1029 | 1052 |
1030 // Retransmit the crypto packet as 2. | 1053 // Retransmit the crypto packet as 2. |
1031 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(1); | 1054 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(1); |
1032 manager_.OnRetransmissionTimeout(); | 1055 manager_.OnRetransmissionTimeout(); |
1033 RetransmitNextPacket(2); | 1056 RetransmitNextPacket(2); |
1034 | 1057 |
1035 // Now retransmit all the unacked packets, which occurs when there is a | 1058 // Now retransmit all the unacked packets, which occurs when there is a |
1036 // version negotiation. | 1059 // version negotiation. |
1037 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(1); | 1060 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(1); |
1038 manager_.RetransmitUnackedPackets(ALL_PACKETS); | 1061 manager_.RetransmitUnackedPackets(ALL_PACKETS); |
1039 QuicPacketSequenceNumber unacked[] = { 1, 2 }; | 1062 QuicPacketSequenceNumber unacked[] = {1, 2}; |
1040 VerifyUnackedPackets(unacked, arraysize(unacked)); | 1063 VerifyUnackedPackets(unacked, arraysize(unacked)); |
1041 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 1064 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
1042 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); | 1065 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
1043 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 1066 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
1044 } | 1067 } |
1045 | 1068 |
1046 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) { | 1069 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) { |
1047 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); | 1070 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); |
1048 // Serialize two data packets and send the latter. | 1071 // Serialize two data packets and send the latter. |
1049 SerializedPacket packet(CreateDataPacket(1)); | 1072 SerializedPacket packet(CreateDataPacket(1)); |
(...skipping 22 matching lines...) Expand all Loading... |
1072 } | 1095 } |
1073 | 1096 |
1074 TEST_F(QuicSentPacketManagerTest, GetTransmissionTime) { | 1097 TEST_F(QuicSentPacketManagerTest, GetTransmissionTime) { |
1075 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); | 1098 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); |
1076 } | 1099 } |
1077 | 1100 |
1078 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeCryptoHandshake) { | 1101 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeCryptoHandshake) { |
1079 SendCryptoPacket(1); | 1102 SendCryptoPacket(1); |
1080 | 1103 |
1081 // Check the min. | 1104 // Check the min. |
1082 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us( | 1105 QuicSentPacketManagerPeer::GetRttStats(&manager_) |
1083 1 * base::Time::kMicrosecondsPerMillisecond); | 1106 ->set_initial_rtt_us(1 * base::Time::kMicrosecondsPerMillisecond); |
1084 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), | 1107 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), |
1085 manager_.GetRetransmissionTime()); | 1108 manager_.GetRetransmissionTime()); |
1086 | 1109 |
1087 // Test with a standard smoothed RTT. | 1110 // Test with a standard smoothed RTT. |
1088 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us( | 1111 QuicSentPacketManagerPeer::GetRttStats(&manager_) |
1089 100 * base::Time::kMicrosecondsPerMillisecond); | 1112 ->set_initial_rtt_us(100 * base::Time::kMicrosecondsPerMillisecond); |
1090 | 1113 |
1091 QuicTime::Delta srtt = manager_.GetRttStats()->SmoothedRtt(); | 1114 QuicTime::Delta srtt = manager_.GetRttStats()->SmoothedRtt(); |
1092 QuicTime expected_time = clock_.Now().Add(srtt.Multiply(1.5)); | 1115 QuicTime expected_time = clock_.Now().Add(srtt.Multiply(1.5)); |
1093 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); | 1116 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); |
1094 | 1117 |
1095 // Retransmit the packet by invoking the retransmission timeout. | 1118 // Retransmit the packet by invoking the retransmission timeout. |
1096 clock_.AdvanceTime(srtt.Multiply(1.5)); | 1119 clock_.AdvanceTime(srtt.Multiply(1.5)); |
1097 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)); | 1120 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)); |
1098 manager_.OnRetransmissionTimeout(); | 1121 manager_.OnRetransmissionTimeout(); |
1099 RetransmitNextPacket(2); | 1122 RetransmitNextPacket(2); |
1100 | 1123 |
1101 // The retransmission time should now be twice as far in the future. | 1124 // The retransmission time should now be twice as far in the future. |
1102 expected_time = clock_.Now().Add(srtt.Multiply(2).Multiply(1.5)); | 1125 expected_time = clock_.Now().Add(srtt.Multiply(2).Multiply(1.5)); |
1103 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); | 1126 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); |
1104 } | 1127 } |
1105 | 1128 |
1106 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) { | 1129 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) { |
1107 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); | 1130 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); |
1108 SendDataPacket(1); | 1131 SendDataPacket(1); |
1109 SendDataPacket(2); | 1132 SendDataPacket(2); |
1110 | 1133 |
1111 // Check the min. | 1134 // Check the min. |
1112 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us( | 1135 QuicSentPacketManagerPeer::GetRttStats(&manager_) |
1113 1 * base::Time::kMicrosecondsPerMillisecond); | 1136 ->set_initial_rtt_us(1 * base::Time::kMicrosecondsPerMillisecond); |
1114 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), | 1137 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), |
1115 manager_.GetRetransmissionTime()); | 1138 manager_.GetRetransmissionTime()); |
1116 | 1139 |
1117 // Test with a standard smoothed RTT. | 1140 // Test with a standard smoothed RTT. |
1118 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us( | 1141 QuicSentPacketManagerPeer::GetRttStats(&manager_) |
1119 100 * base::Time::kMicrosecondsPerMillisecond); | 1142 ->set_initial_rtt_us(100 * base::Time::kMicrosecondsPerMillisecond); |
1120 QuicTime::Delta srtt = manager_.GetRttStats()->SmoothedRtt(); | 1143 QuicTime::Delta srtt = manager_.GetRttStats()->SmoothedRtt(); |
1121 QuicTime::Delta expected_tlp_delay = srtt.Multiply(2); | 1144 QuicTime::Delta expected_tlp_delay = srtt.Multiply(2); |
1122 QuicTime expected_time = clock_.Now().Add(expected_tlp_delay); | 1145 QuicTime expected_time = clock_.Now().Add(expected_tlp_delay); |
1123 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); | 1146 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); |
1124 | 1147 |
1125 // Retransmit the packet by invoking the retransmission timeout. | 1148 // Retransmit the packet by invoking the retransmission timeout. |
1126 clock_.AdvanceTime(expected_tlp_delay); | 1149 clock_.AdvanceTime(expected_tlp_delay); |
1127 manager_.OnRetransmissionTimeout(); | 1150 manager_.OnRetransmissionTimeout(); |
1128 RetransmitNextPacket(3); | 1151 RetransmitNextPacket(3); |
1129 EXPECT_FALSE(manager_.HasPendingRetransmissions()); | 1152 EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
1130 | 1153 |
1131 expected_time = clock_.Now().Add(expected_tlp_delay); | 1154 expected_time = clock_.Now().Add(expected_tlp_delay); |
1132 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); | 1155 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); |
1133 } | 1156 } |
1134 | 1157 |
1135 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeRTO) { | 1158 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeRTO) { |
1136 QuicSentPacketManagerPeer::GetRttStats(&manager_)->UpdateRtt( | 1159 QuicSentPacketManagerPeer::GetRttStats(&manager_) |
1137 QuicTime::Delta::FromMilliseconds(100), | 1160 ->UpdateRtt(QuicTime::Delta::FromMilliseconds(100), |
1138 QuicTime::Delta::Zero(), | 1161 QuicTime::Delta::Zero(), |
1139 QuicTime::Zero()); | 1162 QuicTime::Zero()); |
1140 | 1163 |
1141 SendDataPacket(1); | 1164 SendDataPacket(1); |
1142 SendDataPacket(2); | 1165 SendDataPacket(2); |
1143 | 1166 |
1144 QuicTime::Delta expected_rto_delay = QuicTime::Delta::FromMilliseconds(500); | 1167 QuicTime::Delta expected_rto_delay = QuicTime::Delta::FromMilliseconds(500); |
1145 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) | 1168 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) |
1146 .WillRepeatedly(Return(expected_rto_delay)); | 1169 .WillRepeatedly(Return(expected_rto_delay)); |
1147 QuicTime expected_time = clock_.Now().Add(expected_rto_delay); | 1170 QuicTime expected_time = clock_.Now().Add(expected_rto_delay); |
1148 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); | 1171 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); |
1149 | 1172 |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1240 | 1263 |
1241 // Fire the retransmission timeout and ensure the loss detection algorithm | 1264 // Fire the retransmission timeout and ensure the loss detection algorithm |
1242 // is invoked. | 1265 // is invoked. |
1243 EXPECT_CALL(*loss_algorithm, DetectLostPackets(_, _, _, _)) | 1266 EXPECT_CALL(*loss_algorithm, DetectLostPackets(_, _, _, _)) |
1244 .WillOnce(Return(SequenceNumberSet())); | 1267 .WillOnce(Return(SequenceNumberSet())); |
1245 manager_.OnRetransmissionTimeout(); | 1268 manager_.OnRetransmissionTimeout(); |
1246 } | 1269 } |
1247 | 1270 |
1248 TEST_F(QuicSentPacketManagerTest, NegotiateTimeLossDetection) { | 1271 TEST_F(QuicSentPacketManagerTest, NegotiateTimeLossDetection) { |
1249 EXPECT_EQ(kNack, | 1272 EXPECT_EQ(kNack, |
1250 QuicSentPacketManagerPeer::GetLossAlgorithm( | 1273 QuicSentPacketManagerPeer::GetLossAlgorithm(&manager_) |
1251 &manager_)->GetLossDetectionType()); | 1274 ->GetLossDetectionType()); |
1252 | 1275 |
1253 QuicConfig config; | 1276 QuicConfig config; |
1254 QuicConfigPeer::SetReceivedLossDetection(&config, kTIME); | 1277 QuicConfigPeer::SetReceivedLossDetection(&config, kTIME); |
1255 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); | 1278 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); |
1256 manager_.SetFromConfig(config); | 1279 manager_.SetFromConfig(config); |
1257 | 1280 |
1258 EXPECT_EQ(kTime, | 1281 EXPECT_EQ(kTime, |
1259 QuicSentPacketManagerPeer::GetLossAlgorithm( | 1282 QuicSentPacketManagerPeer::GetLossAlgorithm(&manager_) |
1260 &manager_)->GetLossDetectionType()); | 1283 ->GetLossDetectionType()); |
1261 } | 1284 } |
1262 | 1285 |
1263 | |
1264 } // namespace | 1286 } // namespace |
1265 } // namespace test | 1287 } // namespace test |
1266 } // namespace net | 1288 } // namespace net |
OLD | NEW |