| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/transport_client_socket_pool.h" | 5 #include "net/socket/transport_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/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 790 return callback_.WaitForResult(); | 790 return callback_.WaitForResult(); |
| 791 } | 791 } |
| 792 | 792 |
| 793 private: | 793 private: |
| 794 ClientSocketHandle* const handle_; | 794 ClientSocketHandle* const handle_; |
| 795 TransportClientSocketPool* const pool_; | 795 TransportClientSocketPool* const pool_; |
| 796 bool within_callback_; | 796 bool within_callback_; |
| 797 TestCompletionCallback callback_; | 797 TestCompletionCallback callback_; |
| 798 }; | 798 }; |
| 799 | 799 |
| 800 TEST_F(TransportClientSocketPoolTest, RequestTwice) { | 800 // Disabled in release with dcheck : http://crbug.com/94501 |
| 801 #if defined(DCHECK_ALWAYS_ON) |
| 802 #define MAYBE_RequestTwice DISABLED_RequestTwice |
| 803 #else |
| 804 #define MAYBE_RequestTwice RequestTwice |
| 805 #endif |
| 806 TEST_F(TransportClientSocketPoolTest, MAYBE_RequestTwice) { |
| 801 ClientSocketHandle handle; | 807 ClientSocketHandle handle; |
| 802 RequestSocketCallback callback(&handle, &pool_); | 808 RequestSocketCallback callback(&handle, &pool_); |
| 803 scoped_refptr<TransportSocketParams> dest(new TransportSocketParams( | 809 scoped_refptr<TransportSocketParams> dest(new TransportSocketParams( |
| 804 HostPortPair("www.google.com", 80), LOWEST, GURL(), false, false)); | 810 HostPortPair("www.google.com", 80), LOWEST, GURL(), false, false)); |
| 805 int rv = handle.Init("a", dest, LOWEST, &callback, &pool_, | 811 int rv = handle.Init("a", dest, LOWEST, &callback, &pool_, |
| 806 BoundNetLog()); | 812 BoundNetLog()); |
| 807 ASSERT_EQ(ERR_IO_PENDING, rv); | 813 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 808 | 814 |
| 809 // The callback is going to request "www.google.com". We want it to complete | 815 // The callback is going to request "www.google.com". We want it to complete |
| 810 // synchronously this time. | 816 // synchronously this time. |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 EXPECT_EQ(0, pool_.IdleSocketCount()); | 995 EXPECT_EQ(0, pool_.IdleSocketCount()); |
| 990 } | 996 } |
| 991 } | 997 } |
| 992 | 998 |
| 993 // Test the case where a socket took long enough to start the creation | 999 // Test the case where a socket took long enough to start the creation |
| 994 // of the backup socket and never completes, and then the backup | 1000 // of the backup socket and never completes, and then the backup |
| 995 // connection fails. | 1001 // connection fails. |
| 996 // | 1002 // |
| 997 // Flaky on Mac + Linux - http://crbug.com/86550 | 1003 // Flaky on Mac + Linux - http://crbug.com/86550 |
| 998 // Flaky on ChromeOS - http://crbug.com/89273 | 1004 // Flaky on ChromeOS - http://crbug.com/89273 |
| 1005 // Disabled in release with dcheck : http://crbug.com/94501 |
| 999 #if defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_LINUX) | 1006 #if defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_LINUX) |
| 1000 #define MAYBE_BackupSocketFailAfterStall FLAKY_BackupSocketFailAfterStall | 1007 #define MAYBE_BackupSocketFailAfterStall FLAKY_BackupSocketFailAfterStall |
| 1008 #elif defined(DCHECK_ALWAYS_ON) |
| 1009 #define MAYBE_BackupSocketFailAfterStall DISABLED_BackupSocketFailAfterStall |
| 1001 #else | 1010 #else |
| 1002 #define MAYBE_BackupSocketFailAfterStall BackupSocketFailAfterStall | 1011 #define MAYBE_BackupSocketFailAfterStall BackupSocketFailAfterStall |
| 1003 #endif | 1012 #endif |
| 1004 TEST_F(TransportClientSocketPoolTest, MAYBE_BackupSocketFailAfterStall) { | 1013 TEST_F(TransportClientSocketPoolTest, MAYBE_BackupSocketFailAfterStall) { |
| 1005 MockClientSocketFactory::ClientSocketType case_types[] = { | 1014 MockClientSocketFactory::ClientSocketType case_types[] = { |
| 1006 // The first socket will not connect. | 1015 // The first socket will not connect. |
| 1007 MockClientSocketFactory::MOCK_STALLED_CLIENT_SOCKET, | 1016 MockClientSocketFactory::MOCK_STALLED_CLIENT_SOCKET, |
| 1008 // The second socket will fail immediately. | 1017 // The second socket will fail immediately. |
| 1009 MockClientSocketFactory::MOCK_FAILING_CLIENT_SOCKET | 1018 MockClientSocketFactory::MOCK_FAILING_CLIENT_SOCKET |
| 1010 }; | 1019 }; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1039 EXPECT_EQ(0, pool_.IdleSocketCount()); | 1048 EXPECT_EQ(0, pool_.IdleSocketCount()); |
| 1040 handle.Reset(); | 1049 handle.Reset(); |
| 1041 | 1050 |
| 1042 // Reset for the next case. | 1051 // Reset for the next case. |
| 1043 host_resolver_->set_synchronous_mode(false); | 1052 host_resolver_->set_synchronous_mode(false); |
| 1044 } | 1053 } |
| 1045 | 1054 |
| 1046 // Test the case where a socket took long enough to start the creation | 1055 // Test the case where a socket took long enough to start the creation |
| 1047 // of the backup socket and eventually completes, but the backup socket | 1056 // of the backup socket and eventually completes, but the backup socket |
| 1048 // fails. | 1057 // fails. |
| 1049 TEST_F(TransportClientSocketPoolTest, BackupSocketFailAfterDelay) { | 1058 // Disabled in release with dcheck : http://crbug.com/94501 |
| 1059 #if defined(DCHECK_ALWAYS_ON) |
| 1060 #define MAYBE_BackupSocketFailAfterDelay DISABLED_BackupSocketFailAfterDelay |
| 1061 #else |
| 1062 #define MAYBE_BackupSocketFailAfterDelay BackupSocketFailAfterDelay |
| 1063 #endif |
| 1064 TEST_F(TransportClientSocketPoolTest, MAYBE_BackupSocketFailAfterDelay) { |
| 1050 MockClientSocketFactory::ClientSocketType case_types[] = { | 1065 MockClientSocketFactory::ClientSocketType case_types[] = { |
| 1051 // The first socket will connect, although delayed. | 1066 // The first socket will connect, although delayed. |
| 1052 MockClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET, | 1067 MockClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET, |
| 1053 // The second socket will not connect. | 1068 // The second socket will not connect. |
| 1054 MockClientSocketFactory::MOCK_FAILING_CLIENT_SOCKET | 1069 MockClientSocketFactory::MOCK_FAILING_CLIENT_SOCKET |
| 1055 }; | 1070 }; |
| 1056 | 1071 |
| 1057 client_socket_factory_.set_client_socket_types(case_types, 2); | 1072 client_socket_factory_.set_client_socket_types(case_types, 2); |
| 1058 client_socket_factory_.set_delay_ms(5000); | 1073 client_socket_factory_.set_delay_ms(5000); |
| 1059 | 1074 |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1235 EXPECT_TRUE(handle.socket()); | 1250 EXPECT_TRUE(handle.socket()); |
| 1236 IPEndPoint endpoint; | 1251 IPEndPoint endpoint; |
| 1237 handle.socket()->GetLocalAddress(&endpoint); | 1252 handle.socket()->GetLocalAddress(&endpoint); |
| 1238 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size()); | 1253 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size()); |
| 1239 EXPECT_EQ(1, client_socket_factory_.allocation_count()); | 1254 EXPECT_EQ(1, client_socket_factory_.allocation_count()); |
| 1240 } | 1255 } |
| 1241 | 1256 |
| 1242 } // namespace | 1257 } // namespace |
| 1243 | 1258 |
| 1244 } // namespace net | 1259 } // namespace net |
| OLD | NEW |