Commit 753174b0 authored by Helen Li's avatar Helen Li Committed by Commit Bot

Fix and re-enable TCPSocketTest.ServerReceivesMultipleAccept

This test is flaky because the test closes client connection during each
for-loop iteration. When server checks whether the connection is still connected
using accepted_socket_->GetPeerAddress() in
network::TCPServerSocket::OnAcceptCompleted(), it will get
net::ERR_SOCKET_NOT_CONNECTED (-15).

This test keeps the client sockets alive and delay disconnecting them until
server finishes all Accept() callbacks.

Bug: 821224
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_mojo
Change-Id: I7bf12704272f9ccc23c085c6d72db28a3d0dbe67
Reviewed-on: https://chromium-review.googlesource.com/966802Reviewed-by: default avatarMatt Menke <mmenke@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543743}
parent 0fc4d4da
...@@ -477,8 +477,7 @@ TEST_F(TCPSocketTest, CannotConnectToWrongInterface) { ...@@ -477,8 +477,7 @@ TEST_F(TCPSocketTest, CannotConnectToWrongInterface) {
} }
} }
// TODO(xunjieli): This test is flaky on MacOS crbug.com/821224. TEST_F(TCPSocketTest, ServerReceivesMultipleAccept) {
TEST_F(TCPSocketTest, DISABLED_ServerReceivesMultipleAccept) {
uint32_t backlog = 10; uint32_t backlog = 10;
TestServer server; TestServer server;
server.Start(backlog); server.Start(backlog);
...@@ -496,6 +495,7 @@ TEST_F(TCPSocketTest, DISABLED_ServerReceivesMultipleAccept) { ...@@ -496,6 +495,7 @@ TEST_F(TCPSocketTest, DISABLED_ServerReceivesMultipleAccept) {
EXPECT_EQ(net::ERR_INSUFFICIENT_RESOURCES, callback.WaitForResult()); EXPECT_EQ(net::ERR_INSUFFICIENT_RESOURCES, callback.WaitForResult());
// After handling incoming connections, all callbacks should now complete. // After handling incoming connections, all callbacks should now complete.
std::vector<mojom::TCPConnectedSocketPtr> client_sockets;
for (size_t i = 0; i < backlog; ++i) { for (size_t i = 0; i < backlog; ++i) {
TestTCPConnectedSocketObserver observer; TestTCPConnectedSocketObserver observer;
mojo::ScopedDataPipeConsumerHandle client_socket_receive_handle; mojo::ScopedDataPipeConsumerHandle client_socket_receive_handle;
...@@ -506,6 +506,7 @@ TEST_F(TCPSocketTest, DISABLED_ServerReceivesMultipleAccept) { ...@@ -506,6 +506,7 @@ TEST_F(TCPSocketTest, DISABLED_ServerReceivesMultipleAccept) {
mojo::MakeRequest(&client_socket), observer.GetObserverPtr(), mojo::MakeRequest(&client_socket), observer.GetObserverPtr(),
base::nullopt /*local_addr*/, server.server_addr(), base::nullopt /*local_addr*/, server.server_addr(),
&client_socket_receive_handle, &client_socket_send_handle)); &client_socket_receive_handle, &client_socket_send_handle));
client_sockets.push_back(std::move(client_socket));
} }
for (const auto& callback : accept_callbacks) { for (const auto& callback : accept_callbacks) {
EXPECT_EQ(net::OK, callback->WaitForResult()); EXPECT_EQ(net::OK, callback->WaitForResult());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment