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

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

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_sent_packet_manager.h" 5 #include "net/quic/quic_sent_packet_manager.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "net/quic/test_tools/quic_config_peer.h" 8 #include "net/quic/test_tools/quic_config_peer.h"
9 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" 9 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h"
10 #include "net/quic/test_tools/quic_test_utils.h" 10 #include "net/quic/test_tools/quic_test_utils.h"
(...skipping 14 matching lines...) Expand all
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698