Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(652)

Unified Diff: net/socket/websocket_transport_client_socket_pool_unittest.cc

Issue 835623003: Add a delay when unlocking WebSocket endpoints. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Document WebSocketEndpointLockManager Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/socket/websocket_endpoint_lock_manager_unittest.cc ('k') | net/websockets/websocket_stream_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/socket/websocket_transport_client_socket_pool_unittest.cc
diff --git a/net/socket/websocket_transport_client_socket_pool_unittest.cc b/net/socket/websocket_transport_client_socket_pool_unittest.cc
index 2189181b9fcb893f87093f768978f34ba8327385..03bdf4390964baee2dadf9d265003241b90351e7 100644
--- a/net/socket/websocket_transport_client_socket_pool_unittest.cc
+++ b/net/socket/websocket_transport_client_socket_pool_unittest.cc
@@ -48,7 +48,7 @@ void RunLoopForTimePeriod(base::TimeDelta period) {
run_loop.Run();
}
-class WebSocketTransportClientSocketPoolTest : public testing::Test {
+class WebSocketTransportClientSocketPoolTest : public ::testing::Test {
protected:
WebSocketTransportClientSocketPoolTest()
: params_(new TransportSocketParams(
@@ -68,10 +68,15 @@ class WebSocketTransportClientSocketPoolTest : public testing::Test {
NULL) {}
~WebSocketTransportClientSocketPoolTest() override {
+ RunUntilIdle();
+ // ReleaseAllConnections() calls RunUntilIdle() after releasing each
+ // connection.
ReleaseAllConnections(ClientSocketPoolTest::NO_KEEP_ALIVE);
EXPECT_TRUE(WebSocketEndpointLockManager::GetInstance()->IsEmpty());
}
+ static void RunUntilIdle() { base::RunLoop().RunUntilIdle(); }
+
int StartRequest(const std::string& group_name, RequestPriority priority) {
scoped_refptr<TransportSocketParams> params(
new TransportSocketParams(
@@ -108,6 +113,7 @@ class WebSocketTransportClientSocketPoolTest : public testing::Test {
MockTransportClientSocketFactory client_socket_factory_;
WebSocketTransportClientSocketPool pool_;
ClientSocketPoolTest test_base_;
+ ScopedWebSocketEndpointZeroUnlockDelay zero_unlock_delay_;
private:
DISALLOW_COPY_AND_ASSIGN(WebSocketTransportClientSocketPoolTest);
@@ -502,7 +508,7 @@ TEST_F(WebSocketTransportClientSocketPoolTest, LockReleasedOnHandleReset) {
EXPECT_EQ(OK, request(0)->WaitForResult());
EXPECT_FALSE(request(1)->handle()->is_initialized());
request(0)->handle()->Reset();
- base::RunLoop().RunUntilIdle();
+ RunUntilIdle();
EXPECT_TRUE(request(1)->handle()->is_initialized());
}
@@ -518,7 +524,7 @@ TEST_F(WebSocketTransportClientSocketPoolTest, LockReleasedOnHandleDelete) {
EXPECT_EQ(OK, callback.WaitForResult());
EXPECT_FALSE(request(0)->handle()->is_initialized());
handle.reset();
- base::RunLoop().RunUntilIdle();
+ RunUntilIdle();
EXPECT_TRUE(request(0)->handle()->is_initialized());
}
@@ -531,7 +537,7 @@ TEST_F(WebSocketTransportClientSocketPoolTest,
EXPECT_EQ(OK, request(0)->WaitForResult());
EXPECT_FALSE(request(1)->handle()->is_initialized());
WebSocketTransportClientSocketPool::UnlockEndpoint(request(0)->handle());
- base::RunLoop().RunUntilIdle();
+ RunUntilIdle();
EXPECT_TRUE(request(1)->handle()->is_initialized());
}
@@ -548,7 +554,7 @@ TEST_F(WebSocketTransportClientSocketPoolTest,
EXPECT_EQ(ERR_IO_PENDING, StartRequest("a", kDefaultPriority));
EXPECT_EQ(ERR_IO_PENDING, StartRequest("a", kDefaultPriority));
- base::RunLoop().RunUntilIdle();
+ RunUntilIdle();
pool_.CancelRequest("a", request(0)->handle());
EXPECT_EQ(OK, request(1)->WaitForResult());
}
@@ -902,8 +908,9 @@ TEST_F(WebSocketTransportClientSocketPoolTest, DISABLED_OverallTimeoutApplies) {
TEST_F(WebSocketTransportClientSocketPoolTest, MaxSocketsEnforced) {
host_resolver_->set_synchronous_mode(true);
for (int i = 0; i < kMaxSockets; ++i) {
- EXPECT_EQ(OK, StartRequest("a", kDefaultPriority));
+ ASSERT_EQ(OK, StartRequest("a", kDefaultPriority));
WebSocketTransportClientSocketPool::UnlockEndpoint(request(i)->handle());
+ RunUntilIdle();
}
EXPECT_EQ(ERR_IO_PENDING, StartRequest("a", kDefaultPriority));
}
@@ -914,13 +921,13 @@ TEST_F(WebSocketTransportClientSocketPoolTest, MaxSocketsEnforcedWhenPending) {
}
// Now there are 32 sockets waiting to connect, and one stalled.
for (int i = 0; i < kMaxSockets; ++i) {
- base::RunLoop().RunUntilIdle();
+ RunUntilIdle();
EXPECT_TRUE(request(i)->handle()->is_initialized());
EXPECT_TRUE(request(i)->handle()->socket());
WebSocketTransportClientSocketPool::UnlockEndpoint(request(i)->handle());
}
// Now there are 32 sockets connected, and one stalled.
- base::RunLoop().RunUntilIdle();
+ RunUntilIdle();
EXPECT_FALSE(request(kMaxSockets)->handle()->is_initialized());
EXPECT_FALSE(request(kMaxSockets)->handle()->socket());
}
@@ -928,8 +935,9 @@ TEST_F(WebSocketTransportClientSocketPoolTest, MaxSocketsEnforcedWhenPending) {
TEST_F(WebSocketTransportClientSocketPoolTest, StalledSocketReleased) {
host_resolver_->set_synchronous_mode(true);
for (int i = 0; i < kMaxSockets; ++i) {
- EXPECT_EQ(OK, StartRequest("a", kDefaultPriority));
+ ASSERT_EQ(OK, StartRequest("a", kDefaultPriority));
WebSocketTransportClientSocketPool::UnlockEndpoint(request(i)->handle());
+ RunUntilIdle();
}
EXPECT_EQ(ERR_IO_PENDING, StartRequest("a", kDefaultPriority));
@@ -953,7 +961,7 @@ TEST_F(WebSocketTransportClientSocketPoolTest,
}
EXPECT_EQ(OK, request(0)->WaitForResult());
request(1)->handle()->Reset();
- base::RunLoop().RunUntilIdle();
+ RunUntilIdle();
EXPECT_FALSE(pool_.IsStalled());
}
@@ -972,6 +980,7 @@ TEST_F(WebSocketTransportClientSocketPoolTest,
EXPECT_EQ(ERR_IO_PENDING, StartRequest("a", kDefaultPriority));
}
request(kMaxSockets)->handle()->Reset();
+ RunUntilIdle();
EXPECT_FALSE(pool_.IsStalled());
}
@@ -1114,6 +1123,7 @@ TEST_F(WebSocketTransportClientSocketPoolTest, CancelRequestReclaimsSockets) {
request(0)->handle()->Reset(); // calls CancelRequest()
+ RunUntilIdle();
// We should now be able to create a new connection without blocking on the
// endpoint lock.
EXPECT_EQ(OK, StartRequest("a", kDefaultPriority));
@@ -1123,11 +1133,12 @@ TEST_F(WebSocketTransportClientSocketPoolTest, CancelRequestReclaimsSockets) {
// Endpoint, not two.
TEST_F(WebSocketTransportClientSocketPoolTest, EndpointLockIsOnlyReleasedOnce) {
host_resolver_->set_synchronous_mode(true);
- EXPECT_EQ(OK, StartRequest("a", kDefaultPriority));
+ ASSERT_EQ(OK, StartRequest("a", kDefaultPriority));
EXPECT_EQ(ERR_IO_PENDING, StartRequest("a", kDefaultPriority));
EXPECT_EQ(ERR_IO_PENDING, StartRequest("a", kDefaultPriority));
// First socket completes handshake.
WebSocketTransportClientSocketPool::UnlockEndpoint(request(0)->handle());
+ RunUntilIdle();
// First socket is closed.
request(0)->handle()->Reset();
// Second socket should have been released.
« no previous file with comments | « net/socket/websocket_endpoint_lock_manager_unittest.cc ('k') | net/websockets/websocket_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698