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

Side by Side Diff: net/socket/tcp_client_socket_pool_unittest.cc

Issue 2802015: Massively simplify the NetworkChangeNotifier infrastructure:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/socket/tcp_client_socket_pool.h" 5 #include "net/socket/tcp_client_socket_pool.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "net/base/mock_host_resolver.h" 10 #include "net/base/mock_host_resolver.h"
11 #include "net/base/mock_network_change_notifier.h"
12 #include "net/base/net_errors.h" 11 #include "net/base/net_errors.h"
13 #include "net/base/test_completion_callback.h" 12 #include "net/base/test_completion_callback.h"
14 #include "net/socket/client_socket.h" 13 #include "net/socket/client_socket.h"
15 #include "net/socket/client_socket_factory.h" 14 #include "net/socket/client_socket_factory.h"
16 #include "net/socket/client_socket_handle.h" 15 #include "net/socket/client_socket_handle.h"
17 #include "net/socket/client_socket_pool_histograms.h" 16 #include "net/socket/client_socket_pool_histograms.h"
18 #include "net/socket/socket_test_util.h" 17 #include "net/socket/socket_test_util.h"
19 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
20 19
21 namespace net { 20 namespace net {
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 TCPClientSocketPoolTest() 264 TCPClientSocketPoolTest()
266 : ignored_socket_params_( 265 : ignored_socket_params_(
267 HostPortPair("ignored", 80), MEDIUM, GURL(), false), 266 HostPortPair("ignored", 80), MEDIUM, GURL(), false),
268 histograms_(new ClientSocketPoolHistograms("TCPUnitTest")), 267 histograms_(new ClientSocketPoolHistograms("TCPUnitTest")),
269 host_resolver_(new MockHostResolver), 268 host_resolver_(new MockHostResolver),
270 pool_(new TCPClientSocketPool(kMaxSockets, 269 pool_(new TCPClientSocketPool(kMaxSockets,
271 kMaxSocketsPerGroup, 270 kMaxSocketsPerGroup,
272 histograms_, 271 histograms_,
273 host_resolver_, 272 host_resolver_,
274 &client_socket_factory_, 273 &client_socket_factory_,
275 &notifier_,
276 NULL)) { 274 NULL)) {
277 } 275 }
278 276
279 int StartRequest(const std::string& group_name, RequestPriority priority) { 277 int StartRequest(const std::string& group_name, RequestPriority priority) {
280 return StartRequestUsingPool( 278 return StartRequestUsingPool(
281 pool_, group_name, priority, ignored_socket_params_); 279 pool_, group_name, priority, ignored_socket_params_);
282 } 280 }
283 281
284 TCPSocketParams ignored_socket_params_; 282 TCPSocketParams ignored_socket_params_;
285 scoped_refptr<ClientSocketPoolHistograms> histograms_; 283 scoped_refptr<ClientSocketPoolHistograms> histograms_;
286 scoped_refptr<MockHostResolver> host_resolver_; 284 scoped_refptr<MockHostResolver> host_resolver_;
287 MockClientSocketFactory client_socket_factory_; 285 MockClientSocketFactory client_socket_factory_;
288 MockNetworkChangeNotifier notifier_;
289 scoped_refptr<TCPClientSocketPool> pool_; 286 scoped_refptr<TCPClientSocketPool> pool_;
290 }; 287 };
291 288
292 TEST_F(TCPClientSocketPoolTest, Basic) { 289 TEST_F(TCPClientSocketPoolTest, Basic) {
293 TestCompletionCallback callback; 290 TestCompletionCallback callback;
294 ClientSocketHandle handle; 291 ClientSocketHandle handle;
295 TCPSocketParams dest(HostPortPair("www.google.com", 80), LOW, GURL(), false); 292 TCPSocketParams dest(HostPortPair("www.google.com", 80), LOW, GURL(), false);
296 int rv = handle.Init("a", dest, LOW, &callback, pool_, BoundNetLog()); 293 int rv = handle.Init("a", dest, LOW, &callback, pool_, BoundNetLog());
297 EXPECT_EQ(ERR_IO_PENDING, rv); 294 EXPECT_EQ(ERR_IO_PENDING, rv);
298 EXPECT_FALSE(handle.is_initialized()); 295 EXPECT_FALSE(handle.is_initialized());
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 674
678 handle.Reset(); 675 handle.Reset();
679 676
680 // Need to run all pending to release the socket back to the pool. 677 // Need to run all pending to release the socket back to the pool.
681 MessageLoop::current()->RunAllPending(); 678 MessageLoop::current()->RunAllPending();
682 679
683 // Now we should have 1 idle socket. 680 // Now we should have 1 idle socket.
684 EXPECT_EQ(1, pool_->IdleSocketCount()); 681 EXPECT_EQ(1, pool_->IdleSocketCount());
685 682
686 // After an IP address change, we should have 0 idle sockets. 683 // After an IP address change, we should have 0 idle sockets.
687 notifier_.NotifyIPAddressChange(); 684 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
685 MessageLoop::current()->RunAllPending(); // Notification happens async.
686
688 EXPECT_EQ(0, pool_->IdleSocketCount()); 687 EXPECT_EQ(0, pool_->IdleSocketCount());
689 } 688 }
690 689
691 TEST_F(TCPClientSocketPoolTest, BackupSocketConnect) { 690 TEST_F(TCPClientSocketPoolTest, BackupSocketConnect) {
692 // Case 1 tests the first socket stalling, and the backup connecting. 691 // Case 1 tests the first socket stalling, and the backup connecting.
693 MockClientSocketFactory::ClientSocketType case1_types[] = { 692 MockClientSocketFactory::ClientSocketType case1_types[] = {
694 // The first socket will not connect. 693 // The first socket will not connect.
695 MockClientSocketFactory::MOCK_STALLED_CLIENT_SOCKET, 694 MockClientSocketFactory::MOCK_STALLED_CLIENT_SOCKET,
696 // The second socket will connect more quickly. 695 // The second socket will connect more quickly.
697 MockClientSocketFactory::MOCK_CLIENT_SOCKET 696 MockClientSocketFactory::MOCK_CLIENT_SOCKET
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 MessageLoop::current()->RunAllPending(); 734 MessageLoop::current()->RunAllPending();
736 735
737 EXPECT_EQ(OK, callback.WaitForResult()); 736 EXPECT_EQ(OK, callback.WaitForResult());
738 EXPECT_TRUE(handle.is_initialized()); 737 EXPECT_TRUE(handle.is_initialized());
739 EXPECT_TRUE(handle.socket()); 738 EXPECT_TRUE(handle.socket());
740 739
741 // One socket is stalled, the other is active. 740 // One socket is stalled, the other is active.
742 EXPECT_EQ(0, pool_->IdleSocketCount()); 741 EXPECT_EQ(0, pool_->IdleSocketCount());
743 handle.Reset(); 742 handle.Reset();
744 743
745 pool_ = new TCPClientSocketPool(kMaxSockets, 744 pool_ = new TCPClientSocketPool(kMaxSockets, kMaxSocketsPerGroup,
746 kMaxSocketsPerGroup, 745 histograms_, host_resolver_, &client_socket_factory_, NULL);
747 histograms_,
748 host_resolver_,
749 &client_socket_factory_,
750 NULL,
751 NULL);
752 } 746 }
753 } 747 }
754 748
755 // Test the case where a socket took long enough to start the creation 749 // Test the case where a socket took long enough to start the creation
756 // of the backup socket, but then we cancelled the request after that. 750 // of the backup socket, but then we cancelled the request after that.
757 TEST_F(TCPClientSocketPoolTest, BackupSocketCancel) { 751 TEST_F(TCPClientSocketPoolTest, BackupSocketCancel) {
758 client_socket_factory_.set_client_socket_type( 752 client_socket_factory_.set_client_socket_type(
759 MockClientSocketFactory::MOCK_STALLED_CLIENT_SOCKET); 753 MockClientSocketFactory::MOCK_STALLED_CLIENT_SOCKET);
760 754
761 enum { CANCEL_BEFORE_WAIT, CANCEL_AFTER_WAIT }; 755 enum { CANCEL_BEFORE_WAIT, CANCEL_AFTER_WAIT };
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 EXPECT_FALSE(handle.socket()); 874 EXPECT_FALSE(handle.socket());
881 handle.Reset(); 875 handle.Reset();
882 876
883 // Reset for the next case. 877 // Reset for the next case.
884 host_resolver_->set_synchronous_mode(false); 878 host_resolver_->set_synchronous_mode(false);
885 } 879 }
886 880
887 } // namespace 881 } // namespace
888 882
889 } // namespace net 883 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698