Commit 1d0c501e authored by Robert Ogden's avatar Robert Ogden Committed by Commit Bot

Fix EmbeddedTestServer unit test flakes

Adds a run loop to wait for the socket to be passed to the connection
listener when it is expected.

Bug: 1073761
Change-Id: Ie2efe7b8b7b61b4cf9df091ba4d773be6da060c6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2163424
Commit-Queue: Matt Menke <mmenke@chromium.org>
Reviewed-by: default avatarMatt Menke <mmenke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#762126}
parent 9ee1417f
...@@ -102,10 +102,13 @@ class TestConnectionListener ...@@ -102,10 +102,13 @@ class TestConnectionListener
std::unique_ptr<StreamSocket> socket) override { std::unique_ptr<StreamSocket> socket) override {
base::AutoLock lock(lock_); base::AutoLock lock(lock_);
did_get_socket_on_complete_ = socket && socket->IsConnected(); did_get_socket_on_complete_ = socket && socket->IsConnected();
complete_loop_.Quit();
} }
void WaitUntilFirstConnectionAccepted() { accept_loop_.Run(); } void WaitUntilFirstConnectionAccepted() { accept_loop_.Run(); }
void WaitUntilGotSocketFromResponseCompleted() { complete_loop_.Run(); }
size_t SocketAcceptedCount() const { size_t SocketAcceptedCount() const {
base::AutoLock lock(lock_); base::AutoLock lock(lock_);
return socket_accepted_count_; return socket_accepted_count_;
...@@ -127,6 +130,7 @@ class TestConnectionListener ...@@ -127,6 +130,7 @@ class TestConnectionListener
bool did_get_socket_on_complete_; bool did_get_socket_on_complete_;
base::RunLoop accept_loop_; base::RunLoop accept_loop_;
base::RunLoop complete_loop_;
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
mutable base::Lock lock_; mutable base::Lock lock_;
...@@ -357,6 +361,8 @@ TEST_P(EmbeddedTestServerTest, ConnectionListenerRead) { ...@@ -357,6 +361,8 @@ TEST_P(EmbeddedTestServerTest, ConnectionListenerRead) {
WaitForResponses(1); WaitForResponses(1);
EXPECT_EQ(1u, connection_listener_.SocketAcceptedCount()); EXPECT_EQ(1u, connection_listener_.SocketAcceptedCount());
EXPECT_TRUE(connection_listener_.DidReadFromSocket()); EXPECT_TRUE(connection_listener_.DidReadFromSocket());
connection_listener_.WaitUntilGotSocketFromResponseCompleted();
EXPECT_TRUE(connection_listener_.DidGetSocketOnComplete()); EXPECT_TRUE(connection_listener_.DidGetSocketOnComplete());
} }
...@@ -372,6 +378,8 @@ TEST_P(EmbeddedTestServerTest, ConnectionListenerComplete) { ...@@ -372,6 +378,8 @@ TEST_P(EmbeddedTestServerTest, ConnectionListenerComplete) {
WaitForResponses(1); WaitForResponses(1);
EXPECT_EQ(1u, connection_listener_.SocketAcceptedCount()); EXPECT_EQ(1u, connection_listener_.SocketAcceptedCount());
EXPECT_TRUE(connection_listener_.DidReadFromSocket()); EXPECT_TRUE(connection_listener_.DidReadFromSocket());
connection_listener_.WaitUntilGotSocketFromResponseCompleted();
EXPECT_TRUE(connection_listener_.DidGetSocketOnComplete()); EXPECT_TRUE(connection_listener_.DidGetSocketOnComplete());
} }
......
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