Index: net/tools/quic/quic_dispatcher_test.cc |
diff --git a/net/tools/quic/quic_dispatcher_test.cc b/net/tools/quic/quic_dispatcher_test.cc |
index 63400c1ba792628227809b747b4938cabab76fa8..5e4726ff316478eef79888f83cba33f58fd38533 100644 |
--- a/net/tools/quic/quic_dispatcher_test.cc |
+++ b/net/tools/quic/quic_dispatcher_test.cc |
@@ -12,8 +12,8 @@ |
#include "net/quic/crypto/quic_random.h" |
#include "net/quic/quic_crypto_stream.h" |
#include "net/quic/test_tools/quic_test_utils.h" |
-#include "net/quic/test_tools/quic_test_writer.h" |
#include "net/tools/epoll_server/epoll_server.h" |
+#include "net/tools/quic/quic_packet_writer_wrapper.h" |
#include "net/tools/quic/quic_time_wait_list_manager.h" |
#include "net/tools/quic/test_tools/quic_dispatcher_peer.h" |
#include "net/tools/quic/test_tools/quic_test_utils.h" |
@@ -23,7 +23,6 @@ |
using base::StringPiece; |
using net::EpollServer; |
using net::test::MockSession; |
-using net::test::QuicTestWriter; |
using net::tools::test::MockConnection; |
using std::make_pair; |
using testing::_; |
@@ -43,7 +42,7 @@ class TestDispatcher : public QuicDispatcher { |
explicit TestDispatcher(const QuicConfig& config, |
const QuicCryptoServerConfig& crypto_config, |
EpollServer* eps) |
- : QuicDispatcher(config, crypto_config, QuicSupportedVersions(), 1, eps) { |
+ : QuicDispatcher(config, crypto_config, QuicSupportedVersions(), eps) { |
} |
MOCK_METHOD3(CreateQuicSession, QuicSession*( |
@@ -62,8 +61,8 @@ class MockServerConnection : public MockConnection { |
MockServerConnection(QuicGuid guid, |
QuicDispatcher* dispatcher) |
: MockConnection(guid, true), |
- dispatcher_(dispatcher) { |
- } |
+ dispatcher_(dispatcher) {} |
+ |
void UnregisterOnConnectionClosed() { |
LOG(ERROR) << "Unregistering " << guid(); |
dispatcher_->OnConnectionClosed(guid(), QUIC_NO_ERROR); |
@@ -95,6 +94,7 @@ class QuicDispatcherTest : public ::testing::Test { |
dispatcher_(config_, crypto_config_, &eps_), |
session1_(NULL), |
session2_(NULL) { |
+ dispatcher_.Initialize(1); |
} |
virtual ~QuicDispatcherTest() {} |
@@ -202,8 +202,9 @@ TEST_F(QuicDispatcherTest, Shutdown) { |
class MockTimeWaitListManager : public QuicTimeWaitListManager { |
public: |
MockTimeWaitListManager(QuicPacketWriter* writer, |
+ QuicServerSessionVisitor* visitor, |
EpollServer* eps) |
- : QuicTimeWaitListManager(writer, eps, QuicSupportedVersions()) { |
+ : QuicTimeWaitListManager(writer, visitor, eps, QuicSupportedVersions()) { |
} |
MOCK_METHOD4(ProcessPacket, void(const IPEndPoint& server_address, |
@@ -215,7 +216,7 @@ class MockTimeWaitListManager : public QuicTimeWaitListManager { |
TEST_F(QuicDispatcherTest, TimeWaitListManager) { |
MockTimeWaitListManager* time_wait_list_manager = |
new MockTimeWaitListManager( |
- QuicDispatcherPeer::GetWriter(&dispatcher_), &eps_); |
+ QuicDispatcherPeer::GetWriter(&dispatcher_), &dispatcher_, &eps_); |
// dispatcher takes the ownership of time_wait_list_manager. |
QuicDispatcherPeer::SetTimeWaitListManager(&dispatcher_, |
time_wait_list_manager); |
@@ -257,7 +258,7 @@ TEST_F(QuicDispatcherTest, TimeWaitListManager) { |
TEST_F(QuicDispatcherTest, StrayPacketToTimeWaitListManager) { |
MockTimeWaitListManager* time_wait_list_manager = |
new MockTimeWaitListManager( |
- QuicDispatcherPeer::GetWriter(&dispatcher_), &eps_); |
+ QuicDispatcherPeer::GetWriter(&dispatcher_), &dispatcher_, &eps_); |
// dispatcher takes the ownership of time_wait_list_manager. |
QuicDispatcherPeer::SetTimeWaitListManager(&dispatcher_, |
time_wait_list_manager); |
@@ -272,30 +273,31 @@ TEST_F(QuicDispatcherTest, StrayPacketToTimeWaitListManager) { |
ProcessPacket(addr, guid, false, "foo"); |
} |
-class BlockingWriter : public QuicTestWriter { |
+class BlockingWriter : public QuicPacketWriterWrapper { |
public: |
BlockingWriter() : write_blocked_(false) {} |
virtual bool IsWriteBlocked() const OVERRIDE { return write_blocked_; } |
virtual void SetWritable() OVERRIDE { write_blocked_ = false; } |
- virtual bool IsWriteBlockedDataBuffered() const OVERRIDE { return false; } |
virtual WriteResult WritePacket( |
- const char* buffer, size_t buf_len, const IPAddressNumber& self_address, |
+ const char* buffer, |
+ size_t buf_len, |
+ const IPAddressNumber& self_address, |
const IPEndPoint& peer_address, |
QuicBlockedWriterInterface* blocked_writer) OVERRIDE { |
if (write_blocked_) { |
return WriteResult(WRITE_STATUS_BLOCKED, EAGAIN); |
} else { |
- return writer()->WritePacket(buffer, buf_len, self_address, peer_address, |
- blocked_writer); |
+ return QuicPacketWriterWrapper::WritePacket( |
+ buffer, buf_len, self_address, peer_address, blocked_writer); |
} |
} |
bool write_blocked_; |
}; |
-class QuicWriteBlockedListTest : public QuicDispatcherTest { |
+class QuicDispatcherWriteBlockedListTest : public QuicDispatcherTest { |
public: |
virtual void SetUp() { |
writer_ = new BlockingWriter; |
@@ -323,7 +325,7 @@ class QuicWriteBlockedListTest : public QuicDispatcherTest { |
} |
bool SetBlocked() { |
- writer_->write_blocked_ = true;; |
+ writer_->write_blocked_ = true; |
return true; |
} |
@@ -332,12 +334,13 @@ class QuicWriteBlockedListTest : public QuicDispatcherTest { |
QuicDispatcher::WriteBlockedList* blocked_list_; |
}; |
-TEST_F(QuicWriteBlockedListTest, BasicOnCanWrite) { |
+TEST_F(QuicDispatcherWriteBlockedListTest, BasicOnCanWrite) { |
// No OnCanWrite calls because no connections are blocked. |
dispatcher_.OnCanWrite(); |
- // Register connection 1 for events, and make sure it's nofitied. |
- blocked_list_->insert(make_pair(connection1(), true)); |
+ // Register connection 1 for events, and make sure it's notified. |
+ SetBlocked(); |
+ dispatcher_.OnWriteBlocked(connection1()); |
EXPECT_CALL(*connection1(), OnCanWrite()); |
dispatcher_.OnCanWrite(); |
@@ -346,67 +349,75 @@ TEST_F(QuicWriteBlockedListTest, BasicOnCanWrite) { |
EXPECT_FALSE(dispatcher_.OnCanWrite()); |
} |
-TEST_F(QuicWriteBlockedListTest, OnCanWriteOrder) { |
+TEST_F(QuicDispatcherWriteBlockedListTest, OnCanWriteOrder) { |
// Make sure we handle events in order. |
InSequence s; |
- blocked_list_->insert(make_pair(connection1(), true)); |
- blocked_list_->insert(make_pair(connection2(), true)); |
+ SetBlocked(); |
+ dispatcher_.OnWriteBlocked(connection1()); |
+ dispatcher_.OnWriteBlocked(connection2()); |
EXPECT_CALL(*connection1(), OnCanWrite()); |
EXPECT_CALL(*connection2(), OnCanWrite()); |
dispatcher_.OnCanWrite(); |
// Check the other ordering. |
- blocked_list_->insert(make_pair(connection2(), true)); |
- blocked_list_->insert(make_pair(connection1(), true)); |
+ SetBlocked(); |
+ dispatcher_.OnWriteBlocked(connection2()); |
+ dispatcher_.OnWriteBlocked(connection1()); |
EXPECT_CALL(*connection2(), OnCanWrite()); |
EXPECT_CALL(*connection1(), OnCanWrite()); |
dispatcher_.OnCanWrite(); |
} |
-TEST_F(QuicWriteBlockedListTest, OnCanWriteRemove) { |
+TEST_F(QuicDispatcherWriteBlockedListTest, OnCanWriteRemove) { |
// Add and remove one connction. |
- blocked_list_->insert(make_pair(connection1(), true)); |
+ SetBlocked(); |
+ dispatcher_.OnWriteBlocked(connection1()); |
blocked_list_->erase(connection1()); |
EXPECT_CALL(*connection1(), OnCanWrite()).Times(0); |
dispatcher_.OnCanWrite(); |
// Add and remove one connction and make sure it doesn't affect others. |
- blocked_list_->insert(make_pair(connection1(), true)); |
- blocked_list_->insert(make_pair(connection2(), true)); |
+ SetBlocked(); |
+ dispatcher_.OnWriteBlocked(connection1()); |
+ dispatcher_.OnWriteBlocked(connection2()); |
blocked_list_->erase(connection1()); |
EXPECT_CALL(*connection2(), OnCanWrite()); |
dispatcher_.OnCanWrite(); |
// Add it, remove it, and add it back and make sure things are OK. |
- blocked_list_->insert(make_pair(connection1(), true)); |
+ SetBlocked(); |
+ dispatcher_.OnWriteBlocked(connection1()); |
blocked_list_->erase(connection1()); |
- blocked_list_->insert(make_pair(connection1(), true)); |
+ dispatcher_.OnWriteBlocked(connection1()); |
EXPECT_CALL(*connection1(), OnCanWrite()).Times(1); |
dispatcher_.OnCanWrite(); |
} |
-TEST_F(QuicWriteBlockedListTest, DoubleAdd) { |
+TEST_F(QuicDispatcherWriteBlockedListTest, DoubleAdd) { |
// Make sure a double add does not necessitate a double remove. |
- blocked_list_->insert(make_pair(connection1(), true)); |
- blocked_list_->insert(make_pair(connection1(), true)); |
+ SetBlocked(); |
+ dispatcher_.OnWriteBlocked(connection1()); |
+ dispatcher_.OnWriteBlocked(connection1()); |
blocked_list_->erase(connection1()); |
EXPECT_CALL(*connection1(), OnCanWrite()).Times(0); |
dispatcher_.OnCanWrite(); |
// Make sure a double add does not result in two OnCanWrite calls. |
- blocked_list_->insert(make_pair(connection1(), true)); |
- blocked_list_->insert(make_pair(connection1(), true)); |
+ SetBlocked(); |
+ dispatcher_.OnWriteBlocked(connection1()); |
+ dispatcher_.OnWriteBlocked(connection1()); |
EXPECT_CALL(*connection1(), OnCanWrite()).Times(1); |
dispatcher_.OnCanWrite(); |
} |
-TEST_F(QuicWriteBlockedListTest, OnCanWriteHandleBlock) { |
+TEST_F(QuicDispatcherWriteBlockedListTest, OnCanWriteHandleBlock) { |
// Finally make sure if we write block on a write call, we stop calling. |
InSequence s; |
- blocked_list_->insert(make_pair(connection1(), true)); |
- blocked_list_->insert(make_pair(connection2(), true)); |
+ SetBlocked(); |
+ dispatcher_.OnWriteBlocked(connection1()); |
+ dispatcher_.OnWriteBlocked(connection2()); |
EXPECT_CALL(*connection1(), OnCanWrite()).WillOnce( |
- Invoke(this, &QuicWriteBlockedListTest::SetBlocked)); |
+ Invoke(this, &QuicDispatcherWriteBlockedListTest::SetBlocked)); |
EXPECT_CALL(*connection2(), OnCanWrite()).Times(0); |
dispatcher_.OnCanWrite(); |
@@ -415,12 +426,13 @@ TEST_F(QuicWriteBlockedListTest, OnCanWriteHandleBlock) { |
dispatcher_.OnCanWrite(); |
} |
-TEST_F(QuicWriteBlockedListTest, LimitedWrites) { |
+TEST_F(QuicDispatcherWriteBlockedListTest, LimitedWrites) { |
// Make sure we call both writers. The first will register for more writing |
// but should not be immediately called due to limits. |
InSequence s; |
- blocked_list_->insert(make_pair(connection1(), true)); |
- blocked_list_->insert(make_pair(connection2(), true)); |
+ SetBlocked(); |
+ dispatcher_.OnWriteBlocked(connection1()); |
+ dispatcher_.OnWriteBlocked(connection2()); |
EXPECT_CALL(*connection1(), OnCanWrite()).WillOnce(Return(true)); |
EXPECT_CALL(*connection2(), OnCanWrite()).WillOnce(Return(false)); |
dispatcher_.OnCanWrite(); |
@@ -430,13 +442,14 @@ TEST_F(QuicWriteBlockedListTest, LimitedWrites) { |
dispatcher_.OnCanWrite(); |
} |
-TEST_F(QuicWriteBlockedListTest, TestWriteLimits) { |
+TEST_F(QuicDispatcherWriteBlockedListTest, TestWriteLimits) { |
// Finally make sure if we write block on a write call, we stop calling. |
InSequence s; |
- blocked_list_->insert(make_pair(connection1(), true)); |
- blocked_list_->insert(make_pair(connection2(), true)); |
+ SetBlocked(); |
+ dispatcher_.OnWriteBlocked(connection1()); |
+ dispatcher_.OnWriteBlocked(connection2()); |
EXPECT_CALL(*connection1(), OnCanWrite()).WillOnce( |
- Invoke(this, &QuicWriteBlockedListTest::SetBlocked)); |
+ Invoke(this, &QuicDispatcherWriteBlockedListTest::SetBlocked)); |
EXPECT_CALL(*connection2(), OnCanWrite()).Times(0); |
dispatcher_.OnCanWrite(); |