Index: net/tools/quic/end_to_end_test.cc |
diff --git a/net/tools/quic/end_to_end_test.cc b/net/tools/quic/end_to_end_test.cc |
index 3e22818784ddbd78bca192120a2c6c5db4ed8254..86cd8183a097a182c9ae07040bfe58ff22ef8388 100644 |
--- a/net/tools/quic/end_to_end_test.cc |
+++ b/net/tools/quic/end_to_end_test.cc |
@@ -4,6 +4,7 @@ |
#include <stddef.h> |
#include <string> |
+#include <sys/epoll.h> |
#include <vector> |
#include "base/basictypes.h" |
@@ -146,6 +147,28 @@ vector<TestParams> GetTestParams() { |
return params; |
} |
+class ServerDelegate : public PacketDroppingTestWriter::Delegate { |
+ public: |
+ explicit ServerDelegate(QuicDispatcher* dispatcher) |
+ : dispatcher_(dispatcher) {} |
+ virtual ~ServerDelegate() {} |
+ virtual void OnCanWrite() OVERRIDE { dispatcher_->OnCanWrite(); } |
+ private: |
+ QuicDispatcher* dispatcher_; |
+}; |
+ |
+class ClientDelegate : public PacketDroppingTestWriter::Delegate { |
+ public: |
+ explicit ClientDelegate(QuicClient* client) : client_(client) {} |
+ virtual ~ClientDelegate() {} |
+ virtual void OnCanWrite() OVERRIDE { |
+ EpollEvent event(EPOLLOUT, false); |
+ client_->OnEvent(client_->fd(), &event); |
+ } |
+ private: |
+ QuicClient* client_; |
+}; |
+ |
class EndToEndTest : public ::testing::TestWithParam<TestParams> { |
protected: |
EndToEndTest() |
@@ -180,7 +203,7 @@ class EndToEndTest : public ::testing::TestWithParam<TestParams> { |
QuicInMemoryCachePeer::ResetForTests(); |
} |
- virtual QuicTestClient* CreateQuicClient(QuicPacketWriterWrapper* writer) { |
+ QuicTestClient* CreateQuicClient(QuicPacketWriterWrapper* writer) { |
QuicTestClient* client = new QuicTestClient(server_address_, |
server_hostname_, |
false, // not secure |
@@ -191,27 +214,28 @@ class EndToEndTest : public ::testing::TestWithParam<TestParams> { |
return client; |
} |
- virtual bool Initialize() { |
+ bool Initialize() { |
// Start the server first, because CreateQuicClient() attempts |
// to connect to the server. |
StartServer(); |
client_.reset(CreateQuicClient(client_writer_)); |
- QuicEpollConnectionHelper* helper = |
+ static EpollEvent event(EPOLLOUT, false); |
+ client_writer_->Initialize( |
reinterpret_cast<QuicEpollConnectionHelper*>( |
QuicConnectionPeer::GetHelper( |
- client_->client()->session()->connection())); |
- client_writer_->SetConnectionHelper(helper); |
+ client_->client()->session()->connection())), |
+ new ClientDelegate(client_->client())); |
return client_->client()->connected(); |
} |
- virtual void SetUp() { |
+ virtual void SetUp() OVERRIDE { |
// The ownership of these gets transferred to the QuicPacketWriterWrapper |
// and QuicDispatcher when Initialize() is executed. |
client_writer_ = new PacketDroppingTestWriter(); |
server_writer_ = new PacketDroppingTestWriter(); |
} |
- virtual void TearDown() { |
+ virtual void TearDown() OVERRIDE { |
StopServer(); |
} |
@@ -225,8 +249,9 @@ class EndToEndTest : public ::testing::TestWithParam<TestParams> { |
QuicDispatcher* dispatcher = |
QuicServerPeer::GetDispatcher(server_thread_->server()); |
QuicDispatcherPeer::UseWriter(dispatcher, server_writer_); |
- server_writer_->SetConnectionHelper( |
- QuicDispatcherPeer::GetHelper(dispatcher)); |
+ server_writer_->Initialize( |
+ QuicDispatcherPeer::GetHelper(dispatcher), |
+ new ServerDelegate(dispatcher)); |
server_thread_->Start(); |
server_started_ = true; |
} |
@@ -466,8 +491,7 @@ TEST_P(EndToEndTest, LargePostNoPacketLossWithDelayAndReordering) { |
EXPECT_EQ(kFooResponseBody, client_->SendCustomSynchronousRequest(request)); |
} |
-// TODO(ianswett): Re-enable once b/12646613 and b/11206052 are fixed. |
-TEST_P(EndToEndTest, DISABLED_LargePostWithPacketLossAndBlockedSocket) { |
+TEST_P(EndToEndTest, LargePostWithPacketLossAndBlockedSocket) { |
// Connect with lower fake packet loss than we'd like to test. Until |
// b/10126687 is fixed, losing handshake packets is pretty brutal. |
SetPacketLossPercentage(5); |
@@ -475,7 +499,7 @@ TEST_P(EndToEndTest, DISABLED_LargePostWithPacketLossAndBlockedSocket) { |
// Wait for the server SHLO before upping the packet loss. |
client_->client()->WaitForCryptoHandshakeConfirmed(); |
- SetPacketLossPercentage(30); |
+ SetPacketLossPercentage(10); |
client_writer_->set_fake_blocked_socket_percentage(10); |
// 10 Kb body. |
@@ -814,11 +838,10 @@ class WrongAddressWriter : public QuicPacketWriterWrapper { |
const char* buffer, |
size_t buf_len, |
const IPAddressNumber& real_self_address, |
- const IPEndPoint& peer_address, |
- QuicBlockedWriterInterface* blocked_writer) OVERRIDE { |
+ const IPEndPoint& peer_address) OVERRIDE { |
// Use wrong address! |
return QuicPacketWriterWrapper::WritePacket( |
- buffer, buf_len, self_address_.address(), peer_address, blocked_writer); |
+ buffer, buf_len, self_address_.address(), peer_address); |
} |
virtual bool IsWriteBlockedDataBuffered() const OVERRIDE { |