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

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

Issue 1138443003: Land Recent QUIC Changes until 05/13/2015 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: compile error fixes Created 5 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
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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 ~QuicTimeWaitListManagerTest() override {} 107 ~QuicTimeWaitListManagerTest() override {}
108 108
109 void SetUp() override { 109 void SetUp() override {
110 EXPECT_CALL(writer_, IsWriteBlocked()) 110 EXPECT_CALL(writer_, IsWriteBlocked())
111 .WillRepeatedly(ReturnPointee(&writer_is_blocked_)); 111 .WillRepeatedly(ReturnPointee(&writer_is_blocked_));
112 EXPECT_CALL(writer_, IsWriteBlockedDataBuffered()) 112 EXPECT_CALL(writer_, IsWriteBlockedDataBuffered())
113 .WillRepeatedly(Return(false)); 113 .WillRepeatedly(Return(false));
114 } 114 }
115 115
116 void AddConnectionId(QuicConnectionId connection_id) { 116 void AddConnectionId(QuicConnectionId connection_id) {
117 AddConnectionId(connection_id, QuicVersionMax(), nullptr); 117 AddConnectionId(connection_id, QuicVersionMax(),
118 /*connection_rejected_statelessly=*/false, nullptr);
119 }
120
121 void AddStatelessConnectionId(QuicConnectionId connection_id) {
122 time_wait_list_manager_.AddConnectionIdToTimeWait(
123 connection_id, QuicVersionMax(),
124 /*connection_rejected_statelessly=*/true, nullptr);
118 } 125 }
119 126
120 void AddConnectionId(QuicConnectionId connection_id, 127 void AddConnectionId(QuicConnectionId connection_id,
121 QuicVersion version, 128 QuicVersion version,
129 bool connection_rejected_statelessly,
122 QuicEncryptedPacket* packet) { 130 QuicEncryptedPacket* packet) {
123 time_wait_list_manager_.AddConnectionIdToTimeWait( 131 time_wait_list_manager_.AddConnectionIdToTimeWait(
124 connection_id, version, packet); 132 connection_id, version, connection_rejected_statelessly, packet);
125 } 133 }
126 134
127 bool IsConnectionIdInTimeWait(QuicConnectionId connection_id) { 135 bool IsConnectionIdInTimeWait(QuicConnectionId connection_id) {
128 return time_wait_list_manager_.IsConnectionIdInTimeWait(connection_id); 136 return time_wait_list_manager_.IsConnectionIdInTimeWait(connection_id);
129 } 137 }
130 138
131 void ProcessPacket(QuicConnectionId connection_id, 139 void ProcessPacket(QuicConnectionId connection_id,
132 QuicPacketSequenceNumber sequence_number) { 140 QuicPacketSequenceNumber sequence_number) {
133 QuicEncryptedPacket packet(nullptr, 0); 141 QuicEncryptedPacket packet(nullptr, 0);
134 time_wait_list_manager_.ProcessPacket(server_address_, 142 time_wait_list_manager_.ProcessPacket(server_address_,
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 } 232 }
225 233
226 TEST_F(QuicTimeWaitListManagerTest, CheckConnectionIdInTimeWait) { 234 TEST_F(QuicTimeWaitListManagerTest, CheckConnectionIdInTimeWait) {
227 EXPECT_FALSE(IsConnectionIdInTimeWait(connection_id_)); 235 EXPECT_FALSE(IsConnectionIdInTimeWait(connection_id_));
228 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_)); 236 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
229 AddConnectionId(connection_id_); 237 AddConnectionId(connection_id_);
230 EXPECT_EQ(1u, time_wait_list_manager_.num_connections()); 238 EXPECT_EQ(1u, time_wait_list_manager_.num_connections());
231 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_)); 239 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_));
232 } 240 }
233 241
242 TEST_F(QuicTimeWaitListManagerTest, CheckStatelessConnectionIdInTimeWait) {
243 EXPECT_FALSE(IsConnectionIdInTimeWait(connection_id_));
244 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
245 AddStatelessConnectionId(connection_id_);
246 EXPECT_EQ(1u, time_wait_list_manager_.num_connections());
247 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_));
248 }
249
234 TEST_F(QuicTimeWaitListManagerTest, SendConnectionClose) { 250 TEST_F(QuicTimeWaitListManagerTest, SendConnectionClose) {
235 const size_t kConnectionCloseLength = 100; 251 const size_t kConnectionCloseLength = 100;
236 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_)); 252 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
237 AddConnectionId( 253 AddConnectionId(connection_id_, QuicVersionMax(),
238 connection_id_, 254 /*connection_rejected_statelessly=*/false,
239 QuicVersionMax(), 255 new QuicEncryptedPacket(new char[kConnectionCloseLength],
240 new QuicEncryptedPacket( 256 kConnectionCloseLength, true));
241 new char[kConnectionCloseLength], kConnectionCloseLength, true));
242 const int kRandomSequenceNumber = 1; 257 const int kRandomSequenceNumber = 1;
243 EXPECT_CALL(writer_, WritePacket(_, kConnectionCloseLength, 258 EXPECT_CALL(writer_, WritePacket(_, kConnectionCloseLength,
244 server_address_.address(), 259 server_address_.address(),
245 client_address_)) 260 client_address_))
246 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 1))); 261 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 1)));
247 262
248 ProcessPacket(connection_id_, kRandomSequenceNumber); 263 ProcessPacket(connection_id_, kRandomSequenceNumber);
249 } 264 }
250 265
251 TEST_F(QuicTimeWaitListManagerTest, SendPublicReset) { 266 TEST_F(QuicTimeWaitListManagerTest, SendPublicReset) {
(...skipping 24 matching lines...) Expand all
276 if ((sequence_number & (sequence_number - 1)) == 0) { 291 if ((sequence_number & (sequence_number - 1)) == 0) {
277 EXPECT_TRUE(QuicTimeWaitListManagerPeer::ShouldSendResponse( 292 EXPECT_TRUE(QuicTimeWaitListManagerPeer::ShouldSendResponse(
278 &time_wait_list_manager_, sequence_number)); 293 &time_wait_list_manager_, sequence_number));
279 } else { 294 } else {
280 EXPECT_FALSE(QuicTimeWaitListManagerPeer::ShouldSendResponse( 295 EXPECT_FALSE(QuicTimeWaitListManagerPeer::ShouldSendResponse(
281 &time_wait_list_manager_, sequence_number)); 296 &time_wait_list_manager_, sequence_number));
282 } 297 }
283 } 298 }
284 } 299 }
285 300
301 TEST_F(QuicTimeWaitListManagerTest, NoPublicResetForStatelessConnections) {
302 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
303 AddStatelessConnectionId(connection_id_);
304 const int kRandomSequenceNumber = 1;
305 ProcessPacket(connection_id_, kRandomSequenceNumber);
306 }
307
286 TEST_F(QuicTimeWaitListManagerTest, CleanUpOldConnectionIds) { 308 TEST_F(QuicTimeWaitListManagerTest, CleanUpOldConnectionIds) {
287 const size_t kConnectionIdCount = 100; 309 const size_t kConnectionIdCount = 100;
288 const size_t kOldConnectionIdCount = 31; 310 const size_t kOldConnectionIdCount = 31;
289 311
290 // Add connection_ids such that their expiry time is time_wait_period_. 312 // Add connection_ids such that their expiry time is time_wait_period_.
291 epoll_server_.set_now_in_usec(0); 313 epoll_server_.set_now_in_usec(0);
292 for (size_t connection_id = 1; connection_id <= kOldConnectionIdCount; 314 for (size_t connection_id = 1; connection_id <= kOldConnectionIdCount;
293 ++connection_id) { 315 ++connection_id) {
294 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id)); 316 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id));
295 AddConnectionId(connection_id); 317 AddConnectionId(connection_id);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 } 421 }
400 422
401 TEST_F(QuicTimeWaitListManagerTest, GetQuicVersionFromMap) { 423 TEST_F(QuicTimeWaitListManagerTest, GetQuicVersionFromMap) {
402 const int kConnectionId1 = 123; 424 const int kConnectionId1 = 123;
403 const int kConnectionId2 = 456; 425 const int kConnectionId2 = 456;
404 const int kConnectionId3 = 789; 426 const int kConnectionId3 = 789;
405 427
406 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(kConnectionId1)); 428 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(kConnectionId1));
407 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(kConnectionId2)); 429 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(kConnectionId2));
408 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(kConnectionId3)); 430 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(kConnectionId3));
409 AddConnectionId(kConnectionId1, QuicVersionMin(), nullptr); 431 AddConnectionId(kConnectionId1, QuicVersionMin(),
410 AddConnectionId(kConnectionId2, QuicVersionMax(), nullptr); 432 /*connection_rejected_statelessly=*/false, nullptr);
411 AddConnectionId(kConnectionId3, QuicVersionMax(), nullptr); 433 AddConnectionId(kConnectionId2, QuicVersionMax(),
434 /*connection_rejected_statelessly=*/false, nullptr);
435 AddConnectionId(kConnectionId3, QuicVersionMax(),
436 /*connection_rejected_statelessly=*/false, nullptr);
412 437
413 EXPECT_EQ(QuicVersionMin(), 438 EXPECT_EQ(QuicVersionMin(),
414 QuicTimeWaitListManagerPeer::GetQuicVersionFromConnectionId( 439 QuicTimeWaitListManagerPeer::GetQuicVersionFromConnectionId(
415 &time_wait_list_manager_, kConnectionId1)); 440 &time_wait_list_manager_, kConnectionId1));
416 EXPECT_EQ(QuicVersionMax(), 441 EXPECT_EQ(QuicVersionMax(),
417 QuicTimeWaitListManagerPeer::GetQuicVersionFromConnectionId( 442 QuicTimeWaitListManagerPeer::GetQuicVersionFromConnectionId(
418 &time_wait_list_manager_, kConnectionId2)); 443 &time_wait_list_manager_, kConnectionId2));
419 EXPECT_EQ(QuicVersionMax(), 444 EXPECT_EQ(QuicVersionMax(),
420 QuicTimeWaitListManagerPeer::GetQuicVersionFromConnectionId( 445 QuicTimeWaitListManagerPeer::GetQuicVersionFromConnectionId(
421 &time_wait_list_manager_, kConnectionId3)); 446 &time_wait_list_manager_, kConnectionId3));
422 } 447 }
423 448
424 TEST_F(QuicTimeWaitListManagerTest, AddConnectionIdTwice) { 449 TEST_F(QuicTimeWaitListManagerTest, AddConnectionIdTwice) {
425 // Add connection_ids such that their expiry time is time_wait_period_. 450 // Add connection_ids such that their expiry time is time_wait_period_.
426 epoll_server_.set_now_in_usec(0); 451 epoll_server_.set_now_in_usec(0);
427 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_)); 452 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
428 AddConnectionId(connection_id_); 453 AddConnectionId(connection_id_);
429 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_)); 454 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_));
430 const size_t kConnectionCloseLength = 100; 455 const size_t kConnectionCloseLength = 100;
431 AddConnectionId( 456 AddConnectionId(connection_id_, QuicVersionMax(),
432 connection_id_, 457 /*connection_rejected_statelessly=*/false,
433 QuicVersionMax(), 458 new QuicEncryptedPacket(new char[kConnectionCloseLength],
434 new QuicEncryptedPacket( 459 kConnectionCloseLength, true));
435 new char[kConnectionCloseLength], kConnectionCloseLength, true));
436 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_)); 460 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_));
437 EXPECT_EQ(1u, time_wait_list_manager_.num_connections()); 461 EXPECT_EQ(1u, time_wait_list_manager_.num_connections());
438 462
439 EXPECT_CALL(writer_, WritePacket(_, 463 EXPECT_CALL(writer_, WritePacket(_,
440 kConnectionCloseLength, 464 kConnectionCloseLength,
441 server_address_.address(), 465 server_address_.address(),
442 client_address_)) 466 client_address_))
443 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 1))); 467 .WillOnce(Return(WriteResult(WRITE_STATUS_OK, 1)));
444 468
445 const int kRandomSequenceNumber = 1; 469 const int kRandomSequenceNumber = 1;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 time_wait_list_manager_.num_connections()); 551 time_wait_list_manager_.num_connections());
528 EXPECT_FALSE(IsConnectionIdInTimeWait(id_to_evict)); 552 EXPECT_FALSE(IsConnectionIdInTimeWait(id_to_evict));
529 EXPECT_TRUE(IsConnectionIdInTimeWait(current_connection_id)); 553 EXPECT_TRUE(IsConnectionIdInTimeWait(current_connection_id));
530 } 554 }
531 } 555 }
532 556
533 } // namespace 557 } // namespace
534 } // namespace test 558 } // namespace test
535 } // namespace tools 559 } // namespace tools
536 } // namespace net 560 } // 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