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

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

Issue 999353005: Land Recent QUIC Changes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: wrap Created 5 years, 9 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"
11 #include "net/quic/crypto/quic_decrypter.h" 11 #include "net/quic/crypto/quic_decrypter.h"
12 #include "net/quic/crypto/quic_encrypter.h" 12 #include "net/quic/crypto/quic_encrypter.h"
13 #include "net/quic/quic_connection_helper.h"
13 #include "net/quic/quic_data_reader.h" 14 #include "net/quic/quic_data_reader.h"
14 #include "net/quic/quic_flags.h" 15 #include "net/quic/quic_flags.h"
15 #include "net/quic/quic_framer.h" 16 #include "net/quic/quic_framer.h"
16 #include "net/quic/quic_packet_writer.h" 17 #include "net/quic/quic_packet_writer.h"
17 #include "net/quic/quic_protocol.h" 18 #include "net/quic/quic_protocol.h"
18 #include "net/quic/quic_utils.h" 19 #include "net/quic/quic_utils.h"
19 #include "net/quic/test_tools/quic_test_utils.h" 20 #include "net/quic/test_tools/quic_test_utils.h"
21 #include "net/tools/quic/quic_epoll_connection_helper.h"
20 #include "net/tools/quic/test_tools/mock_epoll_server.h" 22 #include "net/tools/quic/test_tools/mock_epoll_server.h"
21 #include "net/tools/quic/test_tools/quic_test_utils.h" 23 #include "net/tools/quic/test_tools/quic_test_utils.h"
22 #include "testing/gmock/include/gmock/gmock.h" 24 #include "testing/gmock/include/gmock/gmock.h"
23 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
24 26
25 using net::test::BuildUnsizedDataPacket; 27 using net::test::BuildUnsizedDataPacket;
26 using net::test::NoOpFramerVisitor; 28 using net::test::NoOpFramerVisitor;
27 using net::test::QuicVersionMax; 29 using net::test::QuicVersionMax;
28 using net::test::QuicVersionMin; 30 using net::test::QuicVersionMin;
29 using net::test::ValueRestore; 31 using net::test::ValueRestore;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 }; 64 };
63 65
64 class QuicTimeWaitListManagerPeer { 66 class QuicTimeWaitListManagerPeer {
65 public: 67 public:
66 static bool ShouldSendResponse(QuicTimeWaitListManager* manager, 68 static bool ShouldSendResponse(QuicTimeWaitListManager* manager,
67 int received_packet_count) { 69 int received_packet_count) {
68 return manager->ShouldSendResponse(received_packet_count); 70 return manager->ShouldSendResponse(received_packet_count);
69 } 71 }
70 72
71 static QuicTime::Delta time_wait_period(QuicTimeWaitListManager* manager) { 73 static QuicTime::Delta time_wait_period(QuicTimeWaitListManager* manager) {
72 return manager->kTimeWaitPeriod_; 74 return manager->time_wait_period_;
73 } 75 }
74 76
75 static QuicVersion GetQuicVersionFromConnectionId( 77 static QuicVersion GetQuicVersionFromConnectionId(
76 QuicTimeWaitListManager* manager, 78 QuicTimeWaitListManager* manager,
77 QuicConnectionId connection_id) { 79 QuicConnectionId connection_id) {
78 return manager->GetQuicVersionFromConnectionId(connection_id); 80 return manager->GetQuicVersionFromConnectionId(connection_id);
79 } 81 }
80 }; 82 };
81 83
82 namespace { 84 namespace {
83 85
84 class MockFakeTimeEpollServer : public FakeTimeEpollServer { 86 class MockFakeTimeEpollServer : public FakeTimeEpollServer {
85 public: 87 public:
86 MOCK_METHOD2(RegisterAlarm, void(int64 timeout_in_us, 88 MOCK_METHOD2(RegisterAlarm, void(int64 timeout_in_us,
87 EpollAlarmCallbackInterface* alarm)); 89 EpollAlarmCallbackInterface* alarm));
88 }; 90 };
89 91
90 class QuicTimeWaitListManagerTest : public ::testing::Test { 92 class QuicTimeWaitListManagerTest : public ::testing::Test {
91 protected: 93 protected:
92 QuicTimeWaitListManagerTest() 94 QuicTimeWaitListManagerTest()
93 : time_wait_list_manager_(&writer_, 95 : helper_(&epoll_server_),
96 time_wait_list_manager_(&writer_,
94 &visitor_, 97 &visitor_,
95 &epoll_server_, 98 &helper_,
96 QuicSupportedVersions()), 99 QuicSupportedVersions()),
97 framer_(QuicSupportedVersions(), 100 framer_(QuicSupportedVersions(),
98 QuicTime::Zero(), 101 QuicTime::Zero(),
99 Perspective::IS_SERVER), 102 Perspective::IS_SERVER),
100 connection_id_(45), 103 connection_id_(45),
101 client_address_(net::test::TestPeerIPAddress(), kTestPort), 104 client_address_(net::test::TestPeerIPAddress(), kTestPort),
102 writer_is_blocked_(false) {} 105 writer_is_blocked_(false) {}
103 106
104 ~QuicTimeWaitListManagerTest() override {} 107 ~QuicTimeWaitListManagerTest() override {}
105 108
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 BuildUnsizedDataPacket(&framer_, header, frames)); 162 BuildUnsizedDataPacket(&framer_, header, frames));
160 EXPECT_TRUE(packet != nullptr); 163 EXPECT_TRUE(packet != nullptr);
161 QuicEncryptedPacket* encrypted = framer_.EncryptPacket(ENCRYPTION_NONE, 164 QuicEncryptedPacket* encrypted = framer_.EncryptPacket(ENCRYPTION_NONE,
162 sequence_number, 165 sequence_number,
163 *packet); 166 *packet);
164 EXPECT_TRUE(encrypted != nullptr); 167 EXPECT_TRUE(encrypted != nullptr);
165 return encrypted; 168 return encrypted;
166 } 169 }
167 170
168 NiceMock<MockFakeTimeEpollServer> epoll_server_; 171 NiceMock<MockFakeTimeEpollServer> epoll_server_;
172 QuicEpollConnectionHelper helper_;
169 StrictMock<MockPacketWriter> writer_; 173 StrictMock<MockPacketWriter> writer_;
170 StrictMock<MockQuicServerSessionVisitor> visitor_; 174 StrictMock<MockQuicServerSessionVisitor> visitor_;
171 QuicTimeWaitListManager time_wait_list_manager_; 175 QuicTimeWaitListManager time_wait_list_manager_;
172 QuicFramer framer_; 176 QuicFramer framer_;
173 QuicConnectionId connection_id_; 177 QuicConnectionId connection_id_;
174 IPEndPoint server_address_; 178 IPEndPoint server_address_;
175 IPEndPoint client_address_; 179 IPEndPoint client_address_;
176 bool writer_is_blocked_; 180 bool writer_is_blocked_;
177 }; 181 };
178 182
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 225
222 TEST_F(QuicTimeWaitListManagerTest, CheckConnectionIdInTimeWait) { 226 TEST_F(QuicTimeWaitListManagerTest, CheckConnectionIdInTimeWait) {
223 EXPECT_FALSE(IsConnectionIdInTimeWait(connection_id_)); 227 EXPECT_FALSE(IsConnectionIdInTimeWait(connection_id_));
224 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_)); 228 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
225 AddConnectionId(connection_id_); 229 AddConnectionId(connection_id_);
226 EXPECT_EQ(1u, time_wait_list_manager_.num_connections()); 230 EXPECT_EQ(1u, time_wait_list_manager_.num_connections());
227 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_)); 231 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_));
228 } 232 }
229 233
230 TEST_F(QuicTimeWaitListManagerTest, SendConnectionClose) { 234 TEST_F(QuicTimeWaitListManagerTest, SendConnectionClose) {
231 size_t kConnectionCloseLength = 100; 235 const size_t kConnectionCloseLength = 100;
232 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_)); 236 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
233 AddConnectionId( 237 AddConnectionId(
234 connection_id_, 238 connection_id_,
235 QuicVersionMax(), 239 QuicVersionMax(),
236 new QuicEncryptedPacket( 240 new QuicEncryptedPacket(
237 new char[kConnectionCloseLength], kConnectionCloseLength, true)); 241 new char[kConnectionCloseLength], kConnectionCloseLength, true));
238 const int kRandomSequenceNumber = 1; 242 const int kRandomSequenceNumber = 1;
239 EXPECT_CALL(writer_, WritePacket(_, kConnectionCloseLength, 243 EXPECT_CALL(writer_, WritePacket(_, kConnectionCloseLength,
240 server_address_.address(), 244 server_address_.address(),
241 client_address_)) 245 client_address_))
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 EXPECT_FALSE(QuicTimeWaitListManagerPeer::ShouldSendResponse( 280 EXPECT_FALSE(QuicTimeWaitListManagerPeer::ShouldSendResponse(
277 &time_wait_list_manager_, sequence_number)); 281 &time_wait_list_manager_, sequence_number));
278 } 282 }
279 } 283 }
280 } 284 }
281 285
282 TEST_F(QuicTimeWaitListManagerTest, CleanUpOldConnectionIds) { 286 TEST_F(QuicTimeWaitListManagerTest, CleanUpOldConnectionIds) {
283 const size_t kConnectionIdCount = 100; 287 const size_t kConnectionIdCount = 100;
284 const size_t kOldConnectionIdCount = 31; 288 const size_t kOldConnectionIdCount = 31;
285 289
286 // Add connection_ids such that their expiry time is kTimeWaitPeriod_. 290 // Add connection_ids such that their expiry time is time_wait_period_.
287 epoll_server_.set_now_in_usec(0); 291 epoll_server_.set_now_in_usec(0);
288 for (size_t connection_id = 1; connection_id <= kOldConnectionIdCount; 292 for (size_t connection_id = 1; connection_id <= kOldConnectionIdCount;
289 ++connection_id) { 293 ++connection_id) {
290 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id)); 294 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id));
291 AddConnectionId(connection_id); 295 AddConnectionId(connection_id);
292 } 296 }
293 EXPECT_EQ(kOldConnectionIdCount, time_wait_list_manager_.num_connections()); 297 EXPECT_EQ(kOldConnectionIdCount, time_wait_list_manager_.num_connections());
294 298
295 // Add remaining connection_ids such that their add time is 299 // Add remaining connection_ids such that their add time is
296 // 2 * kTimeWaitPeriod. 300 // 2 * time_wait_period_.
297 const QuicTime::Delta time_wait_period = 301 const QuicTime::Delta time_wait_period =
298 QuicTimeWaitListManagerPeer::time_wait_period(&time_wait_list_manager_); 302 QuicTimeWaitListManagerPeer::time_wait_period(&time_wait_list_manager_);
299 epoll_server_.set_now_in_usec(time_wait_period.ToMicroseconds()); 303 epoll_server_.set_now_in_usec(time_wait_period.ToMicroseconds());
300 for (size_t connection_id = kOldConnectionIdCount + 1; 304 for (size_t connection_id = kOldConnectionIdCount + 1;
301 connection_id <= kConnectionIdCount; ++connection_id) { 305 connection_id <= kConnectionIdCount; ++connection_id) {
302 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id)); 306 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id));
303 AddConnectionId(connection_id); 307 AddConnectionId(connection_id);
304 } 308 }
305 EXPECT_EQ(kConnectionIdCount, time_wait_list_manager_.num_connections()); 309 EXPECT_EQ(kConnectionIdCount, time_wait_list_manager_.num_connections());
306 310
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 &time_wait_list_manager_, kConnectionId1)); 415 &time_wait_list_manager_, kConnectionId1));
412 EXPECT_EQ(QuicVersionMax(), 416 EXPECT_EQ(QuicVersionMax(),
413 QuicTimeWaitListManagerPeer::GetQuicVersionFromConnectionId( 417 QuicTimeWaitListManagerPeer::GetQuicVersionFromConnectionId(
414 &time_wait_list_manager_, kConnectionId2)); 418 &time_wait_list_manager_, kConnectionId2));
415 EXPECT_EQ(QuicVersionMax(), 419 EXPECT_EQ(QuicVersionMax(),
416 QuicTimeWaitListManagerPeer::GetQuicVersionFromConnectionId( 420 QuicTimeWaitListManagerPeer::GetQuicVersionFromConnectionId(
417 &time_wait_list_manager_, kConnectionId3)); 421 &time_wait_list_manager_, kConnectionId3));
418 } 422 }
419 423
420 TEST_F(QuicTimeWaitListManagerTest, AddConnectionIdTwice) { 424 TEST_F(QuicTimeWaitListManagerTest, AddConnectionIdTwice) {
421 // Add connection_ids such that their expiry time is kTimeWaitPeriod_. 425 // Add connection_ids such that their expiry time is time_wait_period_.
422 epoll_server_.set_now_in_usec(0); 426 epoll_server_.set_now_in_usec(0);
423 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_)); 427 EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
424 AddConnectionId(connection_id_); 428 AddConnectionId(connection_id_);
425 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_)); 429 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_));
426 size_t kConnectionCloseLength = 100; 430 const size_t kConnectionCloseLength = 100;
427 AddConnectionId( 431 AddConnectionId(
428 connection_id_, 432 connection_id_,
429 QuicVersionMax(), 433 QuicVersionMax(),
430 new QuicEncryptedPacket( 434 new QuicEncryptedPacket(
431 new char[kConnectionCloseLength], kConnectionCloseLength, true)); 435 new char[kConnectionCloseLength], kConnectionCloseLength, true));
432 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_)); 436 EXPECT_TRUE(IsConnectionIdInTimeWait(connection_id_));
433 EXPECT_EQ(1u, time_wait_list_manager_.num_connections()); 437 EXPECT_EQ(1u, time_wait_list_manager_.num_connections());
434 438
435 EXPECT_CALL(writer_, WritePacket(_, 439 EXPECT_CALL(writer_, WritePacket(_,
436 kConnectionCloseLength, 440 kConnectionCloseLength,
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 time_wait_list_manager_.num_connections()); 527 time_wait_list_manager_.num_connections());
524 EXPECT_FALSE(IsConnectionIdInTimeWait(id_to_evict)); 528 EXPECT_FALSE(IsConnectionIdInTimeWait(id_to_evict));
525 EXPECT_TRUE(IsConnectionIdInTimeWait(current_connection_id)); 529 EXPECT_TRUE(IsConnectionIdInTimeWait(current_connection_id));
526 } 530 }
527 } 531 }
528 532
529 } // namespace 533 } // namespace
530 } // namespace test 534 } // namespace test
531 } // namespace tools 535 } // namespace tools
532 } // namespace net 536 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/quic_time_wait_list_manager.cc ('k') | net/tools/quic/test_tools/mock_quic_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698