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

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

Issue 1580903002: Convert ignore_limits from a SocketParam to a socket request argument. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/socks_client_socket_pool.h" 5 #include "net/socket/socks_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/time/time.h" 9 #include "base/time/time.h"
10 #include "net/base/load_timing_info.h" 10 #include "net/base/load_timing_info.h"
(...skipping 25 matching lines...) Expand all
36 EXPECT_FALSE(load_timing_info.socket_reused); 36 EXPECT_FALSE(load_timing_info.socket_reused);
37 37
38 ExpectConnectTimingHasTimes(load_timing_info.connect_timing, 38 ExpectConnectTimingHasTimes(load_timing_info.connect_timing,
39 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY); 39 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY);
40 ExpectLoadTimingHasOnlyConnectionTimes(load_timing_info); 40 ExpectLoadTimingHasOnlyConnectionTimes(load_timing_info);
41 } 41 }
42 42
43 43
44 scoped_refptr<TransportSocketParams> CreateProxyHostParams() { 44 scoped_refptr<TransportSocketParams> CreateProxyHostParams() {
45 return new TransportSocketParams( 45 return new TransportSocketParams(
46 HostPortPair("proxy", 80), false, false, OnHostResolutionCallback(), 46 HostPortPair("proxy", 80), false, OnHostResolutionCallback(),
47 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT); 47 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT);
48 } 48 }
49 49
50 scoped_refptr<SOCKSSocketParams> CreateSOCKSv4Params() { 50 scoped_refptr<SOCKSSocketParams> CreateSOCKSv4Params() {
51 return new SOCKSSocketParams( 51 return new SOCKSSocketParams(
52 CreateProxyHostParams(), false /* socks_v5 */, 52 CreateProxyHostParams(), false /* socks_v5 */,
53 HostPortPair("host", 80)); 53 HostPortPair("host", 80));
54 } 54 }
55 55
56 scoped_refptr<SOCKSSocketParams> CreateSOCKSv5Params() { 56 scoped_refptr<SOCKSSocketParams> CreateSOCKSv5Params() {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 &transport_client_socket_factory_), 94 &transport_client_socket_factory_),
95 pool_(kMaxSockets, 95 pool_(kMaxSockets,
96 kMaxSocketsPerGroup, 96 kMaxSocketsPerGroup,
97 &host_resolver_, 97 &host_resolver_,
98 &transport_socket_pool_, 98 &transport_socket_pool_,
99 NULL) {} 99 NULL) {}
100 100
101 ~SOCKSClientSocketPoolTest() override {} 101 ~SOCKSClientSocketPoolTest() override {}
102 102
103 int StartRequestV5(const std::string& group_name, RequestPriority priority) { 103 int StartRequestV5(const std::string& group_name, RequestPriority priority) {
104 return test_base_.StartRequestUsingPool( 104 return test_base_.StartRequestUsingPool(&pool_, group_name, priority, false,
105 &pool_, group_name, priority, CreateSOCKSv5Params()); 105 CreateSOCKSv5Params());
106 } 106 }
107 107
108 int GetOrderOfRequest(size_t index) const { 108 int GetOrderOfRequest(size_t index) const {
109 return test_base_.GetOrderOfRequest(index); 109 return test_base_.GetOrderOfRequest(index);
110 } 110 }
111 111
112 std::vector<scoped_ptr<TestSocketRequest>>* requests() { 112 std::vector<scoped_ptr<TestSocketRequest>>* requests() {
113 return test_base_.requests(); 113 return test_base_.requests();
114 } 114 }
115 115
116 MockClientSocketFactory transport_client_socket_factory_; 116 MockClientSocketFactory transport_client_socket_factory_;
117 MockTransportClientSocketPool transport_socket_pool_; 117 MockTransportClientSocketPool transport_socket_pool_;
118 118
119 MockHostResolver host_resolver_; 119 MockHostResolver host_resolver_;
120 SOCKSClientSocketPool pool_; 120 SOCKSClientSocketPool pool_;
121 ClientSocketPoolTest test_base_; 121 ClientSocketPoolTest test_base_;
122 }; 122 };
123 123
124 TEST_F(SOCKSClientSocketPoolTest, Simple) { 124 TEST_F(SOCKSClientSocketPoolTest, Simple) {
125 SOCKS5MockData data(SYNCHRONOUS); 125 SOCKS5MockData data(SYNCHRONOUS);
126 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK)); 126 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK));
127 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider()); 127 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider());
128 128
129 ClientSocketHandle handle; 129 ClientSocketHandle handle;
130 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, CompletionCallback(), 130 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, false,
131 &pool_, BoundNetLog()); 131 CompletionCallback(), &pool_, BoundNetLog());
132 EXPECT_EQ(OK, rv); 132 EXPECT_EQ(OK, rv);
133 EXPECT_TRUE(handle.is_initialized()); 133 EXPECT_TRUE(handle.is_initialized());
134 EXPECT_TRUE(handle.socket()); 134 EXPECT_TRUE(handle.socket());
135 TestLoadTimingInfo(handle); 135 TestLoadTimingInfo(handle);
136 } 136 }
137 137
138 // Make sure that SOCKSConnectJob passes on its priority to its 138 // Make sure that SOCKSConnectJob passes on its priority to its
139 // socket request on Init. 139 // socket request on Init.
140 TEST_F(SOCKSClientSocketPoolTest, SetSocketRequestPriorityOnInit) { 140 TEST_F(SOCKSClientSocketPoolTest, SetSocketRequestPriorityOnInit) {
141 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) { 141 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) {
142 RequestPriority priority = static_cast<RequestPriority>(i); 142 RequestPriority priority = static_cast<RequestPriority>(i);
143 SOCKS5MockData data(SYNCHRONOUS); 143 SOCKS5MockData data(SYNCHRONOUS);
144 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK)); 144 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK));
145 transport_client_socket_factory_.AddSocketDataProvider( 145 transport_client_socket_factory_.AddSocketDataProvider(
146 data.data_provider()); 146 data.data_provider());
147 147
148 ClientSocketHandle handle; 148 ClientSocketHandle handle;
149 EXPECT_EQ(OK, 149 EXPECT_EQ(OK, handle.Init("a", CreateSOCKSv5Params(), priority, false,
150 handle.Init("a", CreateSOCKSv5Params(), priority, 150 CompletionCallback(), &pool_, BoundNetLog()));
151 CompletionCallback(), &pool_, BoundNetLog()));
152 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority()); 151 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority());
153 handle.socket()->Disconnect(); 152 handle.socket()->Disconnect();
154 } 153 }
155 } 154 }
156 155
157 // Make sure that SOCKSConnectJob passes on its priority to its 156 // Make sure that SOCKSConnectJob passes on its priority to its
158 // HostResolver request (for non-SOCKS5) on Init. 157 // HostResolver request (for non-SOCKS5) on Init.
159 TEST_F(SOCKSClientSocketPoolTest, SetResolvePriorityOnInit) { 158 TEST_F(SOCKSClientSocketPoolTest, SetResolvePriorityOnInit) {
160 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) { 159 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) {
161 RequestPriority priority = static_cast<RequestPriority>(i); 160 RequestPriority priority = static_cast<RequestPriority>(i);
162 SOCKS5MockData data(SYNCHRONOUS); 161 SOCKS5MockData data(SYNCHRONOUS);
163 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK)); 162 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK));
164 transport_client_socket_factory_.AddSocketDataProvider( 163 transport_client_socket_factory_.AddSocketDataProvider(
165 data.data_provider()); 164 data.data_provider());
166 165
167 ClientSocketHandle handle; 166 ClientSocketHandle handle;
168 EXPECT_EQ(ERR_IO_PENDING, 167 EXPECT_EQ(ERR_IO_PENDING,
169 handle.Init("a", CreateSOCKSv4Params(), priority, 168 handle.Init("a", CreateSOCKSv4Params(), priority, false,
170 CompletionCallback(), &pool_, BoundNetLog())); 169 CompletionCallback(), &pool_, BoundNetLog()));
171 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority()); 170 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority());
172 EXPECT_EQ(priority, host_resolver_.last_request_priority()); 171 EXPECT_EQ(priority, host_resolver_.last_request_priority());
173 EXPECT_TRUE(handle.socket() == NULL); 172 EXPECT_TRUE(handle.socket() == NULL);
174 } 173 }
175 } 174 }
176 175
177 TEST_F(SOCKSClientSocketPoolTest, Async) { 176 TEST_F(SOCKSClientSocketPoolTest, Async) {
178 SOCKS5MockData data(ASYNC); 177 SOCKS5MockData data(ASYNC);
179 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider()); 178 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider());
180 179
181 TestCompletionCallback callback; 180 TestCompletionCallback callback;
182 ClientSocketHandle handle; 181 ClientSocketHandle handle;
183 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, callback.callback(), 182 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, false,
184 &pool_, BoundNetLog()); 183 callback.callback(), &pool_, BoundNetLog());
185 EXPECT_EQ(ERR_IO_PENDING, rv); 184 EXPECT_EQ(ERR_IO_PENDING, rv);
186 EXPECT_FALSE(handle.is_initialized()); 185 EXPECT_FALSE(handle.is_initialized());
187 EXPECT_FALSE(handle.socket()); 186 EXPECT_FALSE(handle.socket());
188 187
189 EXPECT_EQ(OK, callback.WaitForResult()); 188 EXPECT_EQ(OK, callback.WaitForResult());
190 EXPECT_TRUE(handle.is_initialized()); 189 EXPECT_TRUE(handle.is_initialized());
191 EXPECT_TRUE(handle.socket()); 190 EXPECT_TRUE(handle.socket());
192 TestLoadTimingInfo(handle); 191 TestLoadTimingInfo(handle);
193 } 192 }
194 193
195 TEST_F(SOCKSClientSocketPoolTest, TransportConnectError) { 194 TEST_F(SOCKSClientSocketPoolTest, TransportConnectError) {
196 StaticSocketDataProvider socket_data; 195 StaticSocketDataProvider socket_data;
197 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, 196 socket_data.set_connect_data(MockConnect(SYNCHRONOUS,
198 ERR_CONNECTION_REFUSED)); 197 ERR_CONNECTION_REFUSED));
199 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 198 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
200 199
201 ClientSocketHandle handle; 200 ClientSocketHandle handle;
202 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, CompletionCallback(), 201 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, false,
203 &pool_, BoundNetLog()); 202 CompletionCallback(), &pool_, BoundNetLog());
204 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, rv); 203 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, rv);
205 EXPECT_FALSE(handle.is_initialized()); 204 EXPECT_FALSE(handle.is_initialized());
206 EXPECT_FALSE(handle.socket()); 205 EXPECT_FALSE(handle.socket());
207 } 206 }
208 207
209 TEST_F(SOCKSClientSocketPoolTest, AsyncTransportConnectError) { 208 TEST_F(SOCKSClientSocketPoolTest, AsyncTransportConnectError) {
210 StaticSocketDataProvider socket_data; 209 StaticSocketDataProvider socket_data;
211 socket_data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); 210 socket_data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED));
212 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 211 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
213 212
214 TestCompletionCallback callback; 213 TestCompletionCallback callback;
215 ClientSocketHandle handle; 214 ClientSocketHandle handle;
216 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, callback.callback(), 215 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, false,
217 &pool_, BoundNetLog()); 216 callback.callback(), &pool_, BoundNetLog());
218 EXPECT_EQ(ERR_IO_PENDING, rv); 217 EXPECT_EQ(ERR_IO_PENDING, rv);
219 EXPECT_FALSE(handle.is_initialized()); 218 EXPECT_FALSE(handle.is_initialized());
220 EXPECT_FALSE(handle.socket()); 219 EXPECT_FALSE(handle.socket());
221 220
222 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult()); 221 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult());
223 EXPECT_FALSE(handle.is_initialized()); 222 EXPECT_FALSE(handle.is_initialized());
224 EXPECT_FALSE(handle.socket()); 223 EXPECT_FALSE(handle.socket());
225 } 224 }
226 225
227 TEST_F(SOCKSClientSocketPoolTest, SOCKSConnectError) { 226 TEST_F(SOCKSClientSocketPoolTest, SOCKSConnectError) {
228 MockRead failed_read[] = { 227 MockRead failed_read[] = {
229 MockRead(SYNCHRONOUS, 0), 228 MockRead(SYNCHRONOUS, 0),
230 }; 229 };
231 StaticSocketDataProvider socket_data( 230 StaticSocketDataProvider socket_data(
232 failed_read, arraysize(failed_read), NULL, 0); 231 failed_read, arraysize(failed_read), NULL, 0);
233 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 232 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
234 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 233 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
235 234
236 ClientSocketHandle handle; 235 ClientSocketHandle handle;
237 EXPECT_EQ(0, transport_socket_pool_.release_count()); 236 EXPECT_EQ(0, transport_socket_pool_.release_count());
238 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, CompletionCallback(), 237 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, false,
239 &pool_, BoundNetLog()); 238 CompletionCallback(), &pool_, BoundNetLog());
240 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, rv); 239 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, rv);
241 EXPECT_FALSE(handle.is_initialized()); 240 EXPECT_FALSE(handle.is_initialized());
242 EXPECT_FALSE(handle.socket()); 241 EXPECT_FALSE(handle.socket());
243 EXPECT_EQ(1, transport_socket_pool_.release_count()); 242 EXPECT_EQ(1, transport_socket_pool_.release_count());
244 } 243 }
245 244
246 TEST_F(SOCKSClientSocketPoolTest, AsyncSOCKSConnectError) { 245 TEST_F(SOCKSClientSocketPoolTest, AsyncSOCKSConnectError) {
247 MockRead failed_read[] = { 246 MockRead failed_read[] = {
248 MockRead(ASYNC, 0), 247 MockRead(ASYNC, 0),
249 }; 248 };
250 StaticSocketDataProvider socket_data( 249 StaticSocketDataProvider socket_data(
251 failed_read, arraysize(failed_read), NULL, 0); 250 failed_read, arraysize(failed_read), NULL, 0);
252 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 251 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
253 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 252 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
254 253
255 TestCompletionCallback callback; 254 TestCompletionCallback callback;
256 ClientSocketHandle handle; 255 ClientSocketHandle handle;
257 EXPECT_EQ(0, transport_socket_pool_.release_count()); 256 EXPECT_EQ(0, transport_socket_pool_.release_count());
258 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, callback.callback(), 257 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, false,
259 &pool_, BoundNetLog()); 258 callback.callback(), &pool_, BoundNetLog());
260 EXPECT_EQ(ERR_IO_PENDING, rv); 259 EXPECT_EQ(ERR_IO_PENDING, rv);
261 EXPECT_FALSE(handle.is_initialized()); 260 EXPECT_FALSE(handle.is_initialized());
262 EXPECT_FALSE(handle.socket()); 261 EXPECT_FALSE(handle.socket());
263 262
264 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, callback.WaitForResult()); 263 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, callback.WaitForResult());
265 EXPECT_FALSE(handle.is_initialized()); 264 EXPECT_FALSE(handle.is_initialized());
266 EXPECT_FALSE(handle.socket()); 265 EXPECT_FALSE(handle.socket());
267 EXPECT_EQ(1, transport_socket_pool_.release_count()); 266 EXPECT_EQ(1, transport_socket_pool_.release_count());
268 } 267 }
269 268
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 333
335 (*requests())[0]->handle()->Reset(); 334 (*requests())[0]->handle()->Reset();
336 (*requests())[1]->handle()->Reset(); 335 (*requests())[1]->handle()->Reset();
337 } 336 }
338 337
339 // It would be nice to also test the timeouts in SOCKSClientSocketPool. 338 // It would be nice to also test the timeouts in SOCKSClientSocketPool.
340 339
341 } // namespace 340 } // namespace
342 341
343 } // namespace net 342 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698