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

Unified Diff: net/socket/client_socket_pool_base_unittest.cc

Issue 10083024: Revert 132478 - Attempt to close idle connections in higher layer socket pools when a lower layer p… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 8 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/client_socket_pool_base.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/socket/client_socket_pool_base_unittest.cc
===================================================================
--- net/socket/client_socket_pool_base_unittest.cc (revision 132618)
+++ net/socket/client_socket_pool_base_unittest.cc (working copy)
@@ -3416,173 +3416,6 @@
EXPECT_EQ(1, pool_->NumActiveSocketsInGroup("a"));
}
-class MockLayeredPool : public LayeredPool {
- public:
- MockLayeredPool(TestClientSocketPool* pool,
- const std::string& group_name)
- : pool_(pool),
- params_(new TestSocketParams),
- group_name_(group_name),
- can_release_connection_(true) {
- pool_->AddLayeredPool(this);
- }
-
- ~MockLayeredPool() {
- pool_->RemoveLayeredPool(this);
- }
-
- int RequestSocket(TestClientSocketPool* pool) {
- return handle_.Init(group_name_, params_, kDefaultPriority,
- callback_.callback(), pool, BoundNetLog());
- }
-
- int RequestSocketWithoutLimits(TestClientSocketPool* pool) {
- params_->set_ignore_limits(true);
- return handle_.Init(group_name_, params_, kDefaultPriority,
- callback_.callback(), pool, BoundNetLog());
- }
-
- bool ReleaseOneConnection() {
- if (!handle_.is_initialized() || !can_release_connection_) {
- return false;
- }
- handle_.socket()->Disconnect();
- handle_.Reset();
- return true;
- }
-
- void set_can_release_connection(bool can_release_connection) {
- can_release_connection_ = can_release_connection;
- }
-
- MOCK_METHOD0(CloseOneIdleConnection, bool());
-
- private:
- TestClientSocketPool* const pool_;
- scoped_refptr<TestSocketParams> params_;
- ClientSocketHandle handle_;
- TestCompletionCallback callback_;
- const std::string group_name_;
- bool can_release_connection_;
-};
-
-TEST_F(ClientSocketPoolBaseTest, FailToCloseIdleSocketsNotHeldByLayeredPool) {
- CreatePool(kDefaultMaxSockets, kDefaultMaxSocketsPerGroup);
- connect_job_factory_->set_job_type(TestConnectJob::kMockJob);
-
- MockLayeredPool mock_layered_pool(pool_.get(), "foo");
- EXPECT_EQ(OK, mock_layered_pool.RequestSocket(pool_.get()));
- EXPECT_CALL(mock_layered_pool, CloseOneIdleConnection())
- .WillOnce(Return(false));
- EXPECT_FALSE(pool_->CloseOneIdleConnectionInLayeredPool());
-}
-
-TEST_F(ClientSocketPoolBaseTest, ForciblyCloseIdleSocketsHeldByLayeredPool) {
- CreatePool(kDefaultMaxSockets, kDefaultMaxSocketsPerGroup);
- connect_job_factory_->set_job_type(TestConnectJob::kMockJob);
-
- MockLayeredPool mock_layered_pool(pool_.get(), "foo");
- EXPECT_EQ(OK, mock_layered_pool.RequestSocket(pool_.get()));
- EXPECT_CALL(mock_layered_pool, CloseOneIdleConnection())
- .WillOnce(Invoke(&mock_layered_pool,
- &MockLayeredPool::ReleaseOneConnection));
- EXPECT_TRUE(pool_->CloseOneIdleConnectionInLayeredPool());
-}
-
-// This test exercises the codepath which caused http://crbug.com/109876
-TEST_F(ClientSocketPoolBaseTest,
- CloseIdleSocketsHeldByLayeredPoolInSameGroupWhenNeeded) {
- CreatePool(2, 2);
- std::list<TestConnectJob::JobType> job_types;
- job_types.push_back(TestConnectJob::kMockJob);
- job_types.push_back(TestConnectJob::kMockJob);
- job_types.push_back(TestConnectJob::kMockFailingJob);
- job_types.push_back(TestConnectJob::kMockJob);
- connect_job_factory_->set_job_types(&job_types);
-
- ClientSocketHandle handle1;
- TestCompletionCallback callback1;
- EXPECT_EQ(OK, handle1.Init("group1",
- params_,
- kDefaultPriority,
- callback1.callback(),
- pool_.get(),
- BoundNetLog()));
-
- MockLayeredPool mock_layered_pool(pool_.get(), "group2");
- EXPECT_EQ(OK, mock_layered_pool.RequestSocket(pool_.get()));
- EXPECT_CALL(mock_layered_pool, CloseOneIdleConnection())
- .WillRepeatedly(Invoke(&mock_layered_pool,
- &MockLayeredPool::ReleaseOneConnection));
- mock_layered_pool.set_can_release_connection(false);
-
- // This connection attempt will fail when the next request causes the
- // MockLayeredPool to delete the socket it's holding. This request is
- // needed to trigger the destruction of the "group2" Group.
- ClientSocketHandle handle3;
- TestCompletionCallback callback3;
- EXPECT_EQ(ERR_IO_PENDING, handle3.Init("group2",
- params_,
- kDefaultPriority,
- callback3.callback(),
- pool_.get(),
- BoundNetLog()));
-
- mock_layered_pool.set_can_release_connection(true);
- ClientSocketHandle handle4;
- TestCompletionCallback callback4;
- EXPECT_EQ(OK, handle4.Init("group2",
- params_,
- kDefaultPriority,
- callback4.callback(),
- pool_.get(),
- BoundNetLog()));
-}
-
-TEST_F(ClientSocketPoolBaseTest, CloseIdleSocketsHeldByLayeredPoolWhenNeeded) {
- CreatePool(1, 1);
- connect_job_factory_->set_job_type(TestConnectJob::kMockJob);
-
- MockLayeredPool mock_layered_pool(pool_.get(), "foo");
- EXPECT_EQ(OK, mock_layered_pool.RequestSocket(pool_.get()));
- EXPECT_CALL(mock_layered_pool, CloseOneIdleConnection())
- .WillOnce(Invoke(&mock_layered_pool,
- &MockLayeredPool::ReleaseOneConnection));
- ClientSocketHandle handle;
- TestCompletionCallback callback;
- EXPECT_EQ(OK, handle.Init("a",
- params_,
- kDefaultPriority,
- callback.callback(),
- pool_.get(),
- BoundNetLog()));
-}
-
-TEST_F(ClientSocketPoolBaseTest,
- CloseMultipleIdleSocketsHeldByLayeredPoolWhenNeeded) {
- CreatePool(1, 1);
- connect_job_factory_->set_job_type(TestConnectJob::kMockJob);
-
- MockLayeredPool mock_layered_pool1(pool_.get(), "foo");
- EXPECT_EQ(OK, mock_layered_pool1.RequestSocket(pool_.get()));
- EXPECT_CALL(mock_layered_pool1, CloseOneIdleConnection())
- .WillRepeatedly(Invoke(&mock_layered_pool1,
- &MockLayeredPool::ReleaseOneConnection));
- MockLayeredPool mock_layered_pool2(pool_.get(), "bar");
- EXPECT_EQ(OK, mock_layered_pool2.RequestSocketWithoutLimits(pool_.get()));
- EXPECT_CALL(mock_layered_pool2, CloseOneIdleConnection())
- .WillRepeatedly(Invoke(&mock_layered_pool2,
- &MockLayeredPool::ReleaseOneConnection));
- ClientSocketHandle handle;
- TestCompletionCallback callback;
- EXPECT_EQ(OK, handle.Init("a",
- params_,
- kDefaultPriority,
- callback.callback(),
- pool_.get(),
- BoundNetLog()));
-}
-
} // namespace
} // namespace net
« no previous file with comments | « net/socket/client_socket_pool_base.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698