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

Side by Side Diff: net/tools/quic/quic_time_wait_list_manager_test.cc

Issue 135363006: Cleanup: remove BlockedWriterInterface from QuicPacketWriter. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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/tools/quic/quic_time_wait_list_manager.h" 5 #include "net/tools/quic/quic_time_wait_list_manager.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 8
9 #include "net/quic/crypto/crypto_protocol.h" 9 #include "net/quic/crypto/crypto_protocol.h"
10 #include "net/quic/crypto/null_encrypter.h" 10 #include "net/quic/crypto/null_encrypter.h"
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 193
194 TEST_F(QuicTimeWaitListManagerTest, SendConnectionClose) { 194 TEST_F(QuicTimeWaitListManagerTest, SendConnectionClose) {
195 size_t kConnectionCloseLength = 100; 195 size_t kConnectionCloseLength = 100;
196 AddGuid(guid_, 196 AddGuid(guid_,
197 net::test::QuicVersionMax(), 197 net::test::QuicVersionMax(),
198 new QuicEncryptedPacket( 198 new QuicEncryptedPacket(
199 new char[kConnectionCloseLength], kConnectionCloseLength, true)); 199 new char[kConnectionCloseLength], kConnectionCloseLength, true));
200 const int kRandomSequenceNumber = 1; 200 const int kRandomSequenceNumber = 1;
201 EXPECT_CALL(writer_, WritePacket(_, kConnectionCloseLength, 201 EXPECT_CALL(writer_, WritePacket(_, kConnectionCloseLength,
202 server_address_.address(), 202 server_address_.address(),
203 client_address_, 203 client_address_))
204 &time_wait_list_manager_))
205 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 1))); 204 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 1)));
206 205
207 ProcessPacket(guid_, kRandomSequenceNumber); 206 ProcessPacket(guid_, kRandomSequenceNumber);
208 } 207 }
209 208
210 TEST_F(QuicTimeWaitListManagerTest, SendPublicReset) { 209 TEST_F(QuicTimeWaitListManagerTest, SendPublicReset) {
211 AddGuid(guid_); 210 AddGuid(guid_);
212 const int kRandomSequenceNumber = 1; 211 const int kRandomSequenceNumber = 1;
213 EXPECT_CALL(writer_, WritePacket(_, _, 212 EXPECT_CALL(writer_, WritePacket(_, _,
214 server_address_.address(), 213 server_address_.address(),
215 client_address_, 214 client_address_))
216 &time_wait_list_manager_))
217 .With(Args<0, 1>(PublicResetPacketEq(guid_, 215 .With(Args<0, 1>(PublicResetPacketEq(guid_,
218 kRandomSequenceNumber))) 216 kRandomSequenceNumber)))
219 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 0))); 217 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 0)));
220 218
221 ProcessPacket(guid_, kRandomSequenceNumber); 219 ProcessPacket(guid_, kRandomSequenceNumber);
222 } 220 }
223 221
224 TEST_F(QuicTimeWaitListManagerTest, SendPublicResetWithExponentialBackOff) { 222 TEST_F(QuicTimeWaitListManagerTest, SendPublicResetWithExponentialBackOff) {
225 AddGuid(guid_); 223 AddGuid(guid_);
226 for (int sequence_number = 1; sequence_number < 101; ++sequence_number) { 224 for (int sequence_number = 1; sequence_number < 101; ++sequence_number) {
227 if ((sequence_number & (sequence_number - 1)) == 0) { 225 if ((sequence_number & (sequence_number - 1)) == 0) {
228 EXPECT_CALL(writer_, WritePacket(_, _, _, _, _)) 226 EXPECT_CALL(writer_, WritePacket(_, _, _, _))
229 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 1))); 227 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 1)));
230 } 228 }
231 ProcessPacket(guid_, sequence_number); 229 ProcessPacket(guid_, sequence_number);
232 // Send public reset with exponential back off. 230 // Send public reset with exponential back off.
233 if ((sequence_number & (sequence_number - 1)) == 0) { 231 if ((sequence_number & (sequence_number - 1)) == 0) {
234 EXPECT_TRUE(QuicTimeWaitListManagerPeer::ShouldSendResponse( 232 EXPECT_TRUE(QuicTimeWaitListManagerPeer::ShouldSendResponse(
235 &time_wait_list_manager_, sequence_number)); 233 &time_wait_list_manager_, sequence_number));
236 } else { 234 } else {
237 EXPECT_FALSE(QuicTimeWaitListManagerPeer::ShouldSendResponse( 235 EXPECT_FALSE(QuicTimeWaitListManagerPeer::ShouldSendResponse(
238 &time_wait_list_manager_, sequence_number)); 236 &time_wait_list_manager_, sequence_number));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 274
277 TEST_F(QuicTimeWaitListManagerTest, SendQueuedPackets) { 275 TEST_F(QuicTimeWaitListManagerTest, SendQueuedPackets) {
278 QuicGuid guid = 1; 276 QuicGuid guid = 1;
279 AddGuid(guid); 277 AddGuid(guid);
280 QuicPacketSequenceNumber sequence_number = 234; 278 QuicPacketSequenceNumber sequence_number = 234;
281 scoped_ptr<QuicEncryptedPacket> packet( 279 scoped_ptr<QuicEncryptedPacket> packet(
282 ConstructEncryptedPacket(ENCRYPTION_NONE, guid, sequence_number)); 280 ConstructEncryptedPacket(ENCRYPTION_NONE, guid, sequence_number));
283 // Let first write through. 281 // Let first write through.
284 EXPECT_CALL(writer_, WritePacket(_, _, 282 EXPECT_CALL(writer_, WritePacket(_, _,
285 server_address_.address(), 283 server_address_.address(),
286 client_address_, 284 client_address_))
287 &time_wait_list_manager_))
288 .With(Args<0, 1>(PublicResetPacketEq(guid, 285 .With(Args<0, 1>(PublicResetPacketEq(guid,
289 sequence_number))) 286 sequence_number)))
290 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, packet->length()))); 287 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, packet->length())));
291 ProcessPacket(guid, sequence_number); 288 ProcessPacket(guid, sequence_number);
292 289
293 // write block for the next packet. 290 // write block for the next packet.
294 EXPECT_CALL(writer_, WritePacket(_, _, 291 EXPECT_CALL(writer_, WritePacket(_, _,
295 server_address_.address(), 292 server_address_.address(),
296 client_address_, 293 client_address_))
297 &time_wait_list_manager_))
298 .With(Args<0, 1>(PublicResetPacketEq(guid, 294 .With(Args<0, 1>(PublicResetPacketEq(guid,
299 sequence_number))) 295 sequence_number)))
300 .WillOnce(DoAll( 296 .WillOnce(DoAll(
301 Assign(&writer_is_blocked_, true), 297 Assign(&writer_is_blocked_, true),
302 Return(WriteResult(WRITE_STATUS_BLOCKED, EAGAIN)))); 298 Return(WriteResult(WRITE_STATUS_BLOCKED, EAGAIN))));
303 EXPECT_CALL(visitor_, OnWriteBlocked(&time_wait_list_manager_)); 299 EXPECT_CALL(visitor_, OnWriteBlocked(&time_wait_list_manager_));
304 ProcessPacket(guid, sequence_number); 300 ProcessPacket(guid, sequence_number);
305 // 3rd packet. No public reset should be sent; 301 // 3rd packet. No public reset should be sent;
306 ProcessPacket(guid, sequence_number); 302 ProcessPacket(guid, sequence_number);
307 303
308 // write packet should not be called since we are write blocked but the 304 // write packet should not be called since we are write blocked but the
309 // should be queued. 305 // should be queued.
310 QuicGuid other_guid = 2; 306 QuicGuid other_guid = 2;
311 AddGuid(other_guid); 307 AddGuid(other_guid);
312 QuicPacketSequenceNumber other_sequence_number = 23423; 308 QuicPacketSequenceNumber other_sequence_number = 23423;
313 scoped_ptr<QuicEncryptedPacket> other_packet( 309 scoped_ptr<QuicEncryptedPacket> other_packet(
314 ConstructEncryptedPacket( 310 ConstructEncryptedPacket(
315 ENCRYPTION_NONE, other_guid, other_sequence_number)); 311 ENCRYPTION_NONE, other_guid, other_sequence_number));
316 EXPECT_CALL(writer_, WritePacket(_, _, _, _, _)) 312 EXPECT_CALL(writer_, WritePacket(_, _, _, _))
317 .Times(0); 313 .Times(0);
318 EXPECT_CALL(visitor_, OnWriteBlocked(&time_wait_list_manager_)); 314 EXPECT_CALL(visitor_, OnWriteBlocked(&time_wait_list_manager_));
319 ProcessPacket(other_guid, other_sequence_number); 315 ProcessPacket(other_guid, other_sequence_number);
320 316
321 // Now expect all the write blocked public reset packets to be sent again. 317 // Now expect all the write blocked public reset packets to be sent again.
322 writer_is_blocked_ = false; 318 writer_is_blocked_ = false;
323 EXPECT_CALL(writer_, WritePacket(_, _, 319 EXPECT_CALL(writer_, WritePacket(_, _,
324 server_address_.address(), 320 server_address_.address(),
325 client_address_, 321 client_address_))
326 &time_wait_list_manager_))
327 .With(Args<0, 1>(PublicResetPacketEq(guid, 322 .With(Args<0, 1>(PublicResetPacketEq(guid,
328 sequence_number))) 323 sequence_number)))
329 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, packet->length()))); 324 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, packet->length())));
330 EXPECT_CALL(writer_, WritePacket(_, _, 325 EXPECT_CALL(writer_, WritePacket(_, _,
331 server_address_.address(), 326 server_address_.address(),
332 client_address_, 327 client_address_))
333 &time_wait_list_manager_))
334 .With(Args<0, 1>(PublicResetPacketEq(other_guid, 328 .With(Args<0, 1>(PublicResetPacketEq(other_guid,
335 other_sequence_number))) 329 other_sequence_number)))
336 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 330 .WillOnce(Return(WriteResult(WRITE_STATUS_OK,
337 other_packet->length()))); 331 other_packet->length())));
338 time_wait_list_manager_.OnCanWrite(); 332 time_wait_list_manager_.OnCanWrite();
339 } 333 }
340 334
341 TEST_F(QuicTimeWaitListManagerTest, GetQuicVersionFromMap) { 335 TEST_F(QuicTimeWaitListManagerTest, GetQuicVersionFromMap) {
342 const int kGuid1 = 123; 336 const int kGuid1 = 123;
343 const int kGuid2 = 456; 337 const int kGuid2 = 456;
(...skipping 22 matching lines...) Expand all
366 size_t kConnectionCloseLength = 100; 360 size_t kConnectionCloseLength = 100;
367 AddGuid(guid_, 361 AddGuid(guid_,
368 net::test::QuicVersionMax(), 362 net::test::QuicVersionMax(),
369 new QuicEncryptedPacket( 363 new QuicEncryptedPacket(
370 new char[kConnectionCloseLength], kConnectionCloseLength, true)); 364 new char[kConnectionCloseLength], kConnectionCloseLength, true));
371 EXPECT_TRUE(IsGuidInTimeWait(guid_)); 365 EXPECT_TRUE(IsGuidInTimeWait(guid_));
372 366
373 EXPECT_CALL(writer_, WritePacket(_, 367 EXPECT_CALL(writer_, WritePacket(_,
374 kConnectionCloseLength, 368 kConnectionCloseLength,
375 server_address_.address(), 369 server_address_.address(),
376 client_address_, 370 client_address_))
377 &time_wait_list_manager_))
378 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 1))); 371 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 1)));
379 372
380 const int kRandomSequenceNumber = 1; 373 const int kRandomSequenceNumber = 1;
381 ProcessPacket(guid_, kRandomSequenceNumber); 374 ProcessPacket(guid_, kRandomSequenceNumber);
382 375
383 const QuicTime::Delta time_wait_period = 376 const QuicTime::Delta time_wait_period =
384 QuicTimeWaitListManagerPeer::time_wait_period(&time_wait_list_manager_); 377 QuicTimeWaitListManagerPeer::time_wait_period(&time_wait_list_manager_);
385 378
386 QuicTime::Delta offset = QuicTime::Delta::FromMicroseconds(39); 379 QuicTime::Delta offset = QuicTime::Delta::FromMicroseconds(39);
387 // Now set the current time as time_wait_period + offset usecs. 380 // Now set the current time as time_wait_period + offset usecs.
(...skipping 30 matching lines...) Expand all
418 EXPECT_CALL(epoll_server_, RegisterAlarm(_, _)); 411 EXPECT_CALL(epoll_server_, RegisterAlarm(_, _));
419 412
420 time_wait_list_manager_.CleanUpOldGuids(); 413 time_wait_list_manager_.CleanUpOldGuids();
421 EXPECT_FALSE(IsGuidInTimeWait(kGuid1)); 414 EXPECT_FALSE(IsGuidInTimeWait(kGuid1));
422 EXPECT_TRUE(IsGuidInTimeWait(kGuid2)); 415 EXPECT_TRUE(IsGuidInTimeWait(kGuid2));
423 } 416 }
424 } // namespace 417 } // namespace
425 } // namespace test 418 } // namespace test
426 } // namespace tools 419 } // namespace tools
427 } // namespace net 420 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/quic_time_wait_list_manager.cc ('k') | net/tools/quic/test_tools/packet_dropping_test_writer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698