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

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

Issue 138503006: Create an interface for explicit notification of Dispatcher about (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 23 matching lines...) Expand all
34 using testing::StrictMock; 34 using testing::StrictMock;
35 using testing::Truly; 35 using testing::Truly;
36 36
37 namespace net { 37 namespace net {
38 namespace tools { 38 namespace tools {
39 namespace test { 39 namespace test {
40 40
41 class QuicTimeWaitListManagerPeer { 41 class QuicTimeWaitListManagerPeer {
42 public: 42 public:
43 static bool ShouldSendResponse(QuicTimeWaitListManager* manager, 43 static bool ShouldSendResponse(QuicTimeWaitListManager* manager,
44 int received_packet_count) { 44 int received_packet_count) {
45 return manager->ShouldSendResponse(received_packet_count); 45 return manager->ShouldSendResponse(received_packet_count);
46 } 46 }
47 47
48 static QuicTime::Delta time_wait_period(QuicTimeWaitListManager* manager) { 48 static QuicTime::Delta time_wait_period(QuicTimeWaitListManager* manager) {
49 return manager->kTimeWaitPeriod_; 49 return manager->kTimeWaitPeriod_;
50 } 50 }
51 51
52 static QuicVersion GetQuicVersionFromGuid(QuicTimeWaitListManager* manager, 52 static QuicVersion GetQuicVersionFromGuid(QuicTimeWaitListManager* manager,
53 QuicGuid guid) { 53 QuicGuid guid) {
54 return manager->GetQuicVersionFromGuid(guid); 54 return manager->GetQuicVersionFromGuid(guid);
55 } 55 }
56 }; 56 };
57 57
58 namespace { 58 namespace {
59 59
60 class TestTimeWaitListManager : public QuicTimeWaitListManager {
61 public:
62 TestTimeWaitListManager(QuicPacketWriter* writer,
63 EpollServer* epoll_server)
64 : QuicTimeWaitListManager(writer, epoll_server, QuicSupportedVersions()) {
65 }
66 };
67
68 class MockFakeTimeEpollServer : public FakeTimeEpollServer { 60 class MockFakeTimeEpollServer : public FakeTimeEpollServer {
69 public: 61 public:
70 MOCK_METHOD2(RegisterAlarm, void(int64 timeout_in_us, 62 MOCK_METHOD2(RegisterAlarm, void(int64 timeout_in_us,
71 EpollAlarmCallbackInterface* alarm)); 63 EpollAlarmCallbackInterface* alarm));
72 }; 64 };
73 65
74 class QuicTimeWaitListManagerTest : public testing::Test { 66 class QuicTimeWaitListManagerTest : public testing::Test {
75 protected: 67 protected:
76 QuicTimeWaitListManagerTest() 68 QuicTimeWaitListManagerTest()
77 : time_wait_list_manager_( 69 : time_wait_list_manager_(&writer_, &visitor_,
78 &writer_, &epoll_server_, QuicSupportedVersions()), 70 &epoll_server_, QuicSupportedVersions()),
79 framer_(QuicSupportedVersions(), QuicTime::Zero(), true), 71 framer_(QuicSupportedVersions(), QuicTime::Zero(), true),
80 guid_(45), 72 guid_(45),
81 writer_is_blocked_(false) {} 73 writer_is_blocked_(false) {}
82 74
83 virtual ~QuicTimeWaitListManagerTest() {} 75 virtual ~QuicTimeWaitListManagerTest() {}
84 76
85 virtual void SetUp() { 77 virtual void SetUp() {
86 EXPECT_CALL(writer_, IsWriteBlocked()) 78 EXPECT_CALL(writer_, IsWriteBlocked())
87 .WillRepeatedly(ReturnPointee(&writer_is_blocked_)); 79 .WillRepeatedly(ReturnPointee(&writer_is_blocked_));
88 EXPECT_CALL(writer_, IsWriteBlockedDataBuffered()) 80 EXPECT_CALL(writer_, IsWriteBlockedDataBuffered())
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 EXPECT_TRUE(packet != NULL); 127 EXPECT_TRUE(packet != NULL);
136 QuicEncryptedPacket* encrypted = framer_.EncryptPacket(ENCRYPTION_NONE, 128 QuicEncryptedPacket* encrypted = framer_.EncryptPacket(ENCRYPTION_NONE,
137 sequence_number, 129 sequence_number,
138 *packet); 130 *packet);
139 EXPECT_TRUE(encrypted != NULL); 131 EXPECT_TRUE(encrypted != NULL);
140 return encrypted; 132 return encrypted;
141 } 133 }
142 134
143 NiceMock<MockFakeTimeEpollServer> epoll_server_; 135 NiceMock<MockFakeTimeEpollServer> epoll_server_;
144 StrictMock<MockPacketWriter> writer_; 136 StrictMock<MockPacketWriter> writer_;
137 StrictMock<MockQuicServerSessionVisitor> visitor_;
145 QuicTimeWaitListManager time_wait_list_manager_; 138 QuicTimeWaitListManager time_wait_list_manager_;
146 QuicFramer framer_; 139 QuicFramer framer_;
147 QuicGuid guid_; 140 QuicGuid guid_;
148 IPEndPoint server_address_; 141 IPEndPoint server_address_;
149 IPEndPoint client_address_; 142 IPEndPoint client_address_;
150 bool writer_is_blocked_; 143 bool writer_is_blocked_;
151 }; 144 };
152 145
153 class ValidatePublicResetPacketPredicate 146 class ValidatePublicResetPacketPredicate
154 : public MatcherInterface<const std::tr1::tuple<const char*, int> > { 147 : public MatcherInterface<const std::tr1::tuple<const char*, int> > {
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 // write block for the next packet. 293 // write block for the next packet.
301 EXPECT_CALL(writer_, WritePacket(_, _, 294 EXPECT_CALL(writer_, WritePacket(_, _,
302 server_address_.address(), 295 server_address_.address(),
303 client_address_, 296 client_address_,
304 &time_wait_list_manager_)) 297 &time_wait_list_manager_))
305 .With(Args<0, 1>(PublicResetPacketEq(guid, 298 .With(Args<0, 1>(PublicResetPacketEq(guid,
306 sequence_number))) 299 sequence_number)))
307 .WillOnce(DoAll( 300 .WillOnce(DoAll(
308 Assign(&writer_is_blocked_, true), 301 Assign(&writer_is_blocked_, true),
309 Return(WriteResult(WRITE_STATUS_BLOCKED, EAGAIN)))); 302 Return(WriteResult(WRITE_STATUS_BLOCKED, EAGAIN))));
303 EXPECT_CALL(visitor_, OnWriteBlocked(&time_wait_list_manager_));
310 ProcessPacket(guid, sequence_number); 304 ProcessPacket(guid, sequence_number);
311 // 3rd packet. No public reset should be sent; 305 // 3rd packet. No public reset should be sent;
312 ProcessPacket(guid, sequence_number); 306 ProcessPacket(guid, sequence_number);
313 307
314 // write packet should not be called since we are write blocked but the 308 // write packet should not be called since we are write blocked but the
315 // should be queued. 309 // should be queued.
316 QuicGuid other_guid = 2; 310 QuicGuid other_guid = 2;
317 AddGuid(other_guid); 311 AddGuid(other_guid);
318 QuicPacketSequenceNumber other_sequence_number = 23423; 312 QuicPacketSequenceNumber other_sequence_number = 23423;
319 scoped_ptr<QuicEncryptedPacket> other_packet( 313 scoped_ptr<QuicEncryptedPacket> other_packet(
320 ConstructEncryptedPacket( 314 ConstructEncryptedPacket(
321 ENCRYPTION_NONE, other_guid, other_sequence_number)); 315 ENCRYPTION_NONE, other_guid, other_sequence_number));
322 EXPECT_CALL(writer_, WritePacket(_, _, _, _, _)) 316 EXPECT_CALL(writer_, WritePacket(_, _, _, _, _))
323 .Times(0); 317 .Times(0);
318 EXPECT_CALL(visitor_, OnWriteBlocked(&time_wait_list_manager_));
324 ProcessPacket(other_guid, other_sequence_number); 319 ProcessPacket(other_guid, other_sequence_number);
325 320
326 // Now expect all the write blocked public reset packets to be sent again. 321 // Now expect all the write blocked public reset packets to be sent again.
327 writer_is_blocked_ = false; 322 writer_is_blocked_ = false;
328 EXPECT_CALL(writer_, WritePacket(_, _, 323 EXPECT_CALL(writer_, WritePacket(_, _,
329 server_address_.address(), 324 server_address_.address(),
330 client_address_, 325 client_address_,
331 &time_wait_list_manager_)) 326 &time_wait_list_manager_))
332 .With(Args<0, 1>(PublicResetPacketEq(guid, 327 .With(Args<0, 1>(PublicResetPacketEq(guid,
333 sequence_number))) 328 sequence_number)))
(...skipping 26 matching lines...) Expand all
360 &time_wait_list_manager_, kGuid2)); 355 &time_wait_list_manager_, kGuid2));
361 EXPECT_EQ(net::test::QuicVersionMax(), 356 EXPECT_EQ(net::test::QuicVersionMax(),
362 QuicTimeWaitListManagerPeer::GetQuicVersionFromGuid( 357 QuicTimeWaitListManagerPeer::GetQuicVersionFromGuid(
363 &time_wait_list_manager_, kGuid3)); 358 &time_wait_list_manager_, kGuid3));
364 } 359 }
365 360
366 } // namespace 361 } // namespace
367 } // namespace test 362 } // namespace test
368 } // namespace tools 363 } // namespace tools
369 } // namespace net 364 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/quic_time_wait_list_manager.cc ('k') | net/tools/quic/test_tools/quic_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698