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
std::unique_ptr<StreamSocket> socket) override {
base::AutoLock lock(lock_);
did_get_socket_on_complete_ = socket && socket->IsConnected();
complete_loop_.Quit();
}
void WaitUntilFirstConnectionAccepted() { accept_loop_.Run(); }
void WaitUntilGotSocketFromResponseCompleted() { complete_loop_.Run(); }
size_t SocketAcceptedCount() const {
base::AutoLock lock(lock_);
return socket_accepted_count_;
......@@ -127,6 +130,7 @@ class TestConnectionListener
bool did_get_socket_on_complete_;
base::RunLoop accept_loop_;
base::RunLoop complete_loop_;
scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
mutable base::Lock lock_;
......@@ -357,6 +361,8 @@ TEST_P(EmbeddedTestServerTest, ConnectionListenerRead) {
WaitForResponses(1);
EXPECT_EQ(1u, connection_listener_.SocketAcceptedCount());
EXPECT_TRUE(connection_listener_.DidReadFromSocket());
connection_listener_.WaitUntilGotSocketFromResponseCompleted();
EXPECT_TRUE(connection_listener_.DidGetSocketOnComplete());
}
......@@ -372,6 +378,8 @@ TEST_P(EmbeddedTestServerTest, ConnectionListenerComplete) {
WaitForResponses(1);
EXPECT_EQ(1u, connection_listener_.SocketAcceptedCount());
EXPECT_TRUE(connection_listener_.DidReadFromSocket());
connection_listener_.WaitUntilGotSocketFromResponseCompleted();
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