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

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

Issue 8824006: Migrate net/socket/socket.h, net/socket/stream_socket.h to base::Bind(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 9 years 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
« no previous file with comments | « net/socket/socks_client_socket_pool.cc ('k') | net/socket/ssl_client_socket_mac.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/socks_client_socket.h" 5 #include "net/socket/socks_client_socket.h"
6 6
7 #include "net/base/address_list.h" 7 #include "net/base/address_list.h"
8 #include "net/base/net_log.h" 8 #include "net/base/net_log.h"
9 #include "net/base/net_log_unittest.h" 9 #include "net/base/net_log_unittest.h"
10 #include "net/base/mock_host_resolver.h" 10 #include "net/base/mock_host_resolver.h"
(...skipping 20 matching lines...) Expand all
31 MockWrite writes[], size_t writes_count, 31 MockWrite writes[], size_t writes_count,
32 HostResolver* host_resolver, 32 HostResolver* host_resolver,
33 const std::string& hostname, int port, 33 const std::string& hostname, int port,
34 NetLog* net_log); 34 NetLog* net_log);
35 virtual void SetUp(); 35 virtual void SetUp();
36 36
37 protected: 37 protected:
38 scoped_ptr<SOCKSClientSocket> user_sock_; 38 scoped_ptr<SOCKSClientSocket> user_sock_;
39 AddressList address_list_; 39 AddressList address_list_;
40 StreamSocket* tcp_sock_; 40 StreamSocket* tcp_sock_;
41 TestOldCompletionCallback callback_; 41 TestCompletionCallback callback_;
42 scoped_ptr<MockHostResolver> host_resolver_; 42 scoped_ptr<MockHostResolver> host_resolver_;
43 scoped_ptr<SocketDataProvider> data_; 43 scoped_ptr<SocketDataProvider> data_;
44 }; 44 };
45 45
46 SOCKSClientSocketTest::SOCKSClientSocketTest() 46 SOCKSClientSocketTest::SOCKSClientSocketTest()
47 : host_resolver_(new MockHostResolver) { 47 : host_resolver_(new MockHostResolver) {
48 } 48 }
49 49
50 // Set up platform before every test case 50 // Set up platform before every test case
51 void SOCKSClientSocketTest::SetUp() { 51 void SOCKSClientSocketTest::SetUp() {
52 PlatformTest::SetUp(); 52 PlatformTest::SetUp();
53 } 53 }
54 54
55 SOCKSClientSocket* SOCKSClientSocketTest::BuildMockSocket( 55 SOCKSClientSocket* SOCKSClientSocketTest::BuildMockSocket(
56 MockRead reads[], 56 MockRead reads[],
57 size_t reads_count, 57 size_t reads_count,
58 MockWrite writes[], 58 MockWrite writes[],
59 size_t writes_count, 59 size_t writes_count,
60 HostResolver* host_resolver, 60 HostResolver* host_resolver,
61 const std::string& hostname, 61 const std::string& hostname,
62 int port, 62 int port,
63 NetLog* net_log) { 63 NetLog* net_log) {
64 64
65 TestOldCompletionCallback callback; 65 TestCompletionCallback callback;
66 data_.reset(new StaticSocketDataProvider(reads, reads_count, 66 data_.reset(new StaticSocketDataProvider(reads, reads_count,
67 writes, writes_count)); 67 writes, writes_count));
68 tcp_sock_ = new MockTCPClientSocket(address_list_, net_log, data_.get()); 68 tcp_sock_ = new MockTCPClientSocket(address_list_, net_log, data_.get());
69 69
70 int rv = tcp_sock_->Connect(&callback); 70 int rv = tcp_sock_->Connect(callback.callback());
71 EXPECT_EQ(ERR_IO_PENDING, rv); 71 EXPECT_EQ(ERR_IO_PENDING, rv);
72 rv = callback.WaitForResult(); 72 rv = callback.WaitForResult();
73 EXPECT_EQ(OK, rv); 73 EXPECT_EQ(OK, rv);
74 EXPECT_TRUE(tcp_sock_->IsConnected()); 74 EXPECT_TRUE(tcp_sock_->IsConnected());
75 75
76 return new SOCKSClientSocket(tcp_sock_, 76 return new SOCKSClientSocket(tcp_sock_,
77 HostResolver::RequestInfo(HostPortPair(hostname, port)), 77 HostResolver::RequestInfo(HostPortPair(hostname, port)),
78 host_resolver); 78 host_resolver);
79 } 79 }
80 80
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 137 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
138 data_writes, arraysize(data_writes), 138 data_writes, arraysize(data_writes),
139 host_resolver_.get(), 139 host_resolver_.get(),
140 "localhost", 80, 140 "localhost", 80,
141 &log)); 141 &log));
142 142
143 // At this state the TCP connection is completed but not the SOCKS handshake. 143 // At this state the TCP connection is completed but not the SOCKS handshake.
144 EXPECT_TRUE(tcp_sock_->IsConnected()); 144 EXPECT_TRUE(tcp_sock_->IsConnected());
145 EXPECT_FALSE(user_sock_->IsConnected()); 145 EXPECT_FALSE(user_sock_->IsConnected());
146 146
147 int rv = user_sock_->Connect(&callback_); 147 int rv = user_sock_->Connect(callback_.callback());
148 EXPECT_EQ(ERR_IO_PENDING, rv); 148 EXPECT_EQ(ERR_IO_PENDING, rv);
149 149
150 net::CapturingNetLog::EntryList entries; 150 net::CapturingNetLog::EntryList entries;
151 log.GetEntries(&entries); 151 log.GetEntries(&entries);
152 EXPECT_TRUE( 152 EXPECT_TRUE(
153 LogContainsBeginEvent(entries, 0, NetLog::TYPE_SOCKS_CONNECT)); 153 LogContainsBeginEvent(entries, 0, NetLog::TYPE_SOCKS_CONNECT));
154 EXPECT_FALSE(user_sock_->IsConnected()); 154 EXPECT_FALSE(user_sock_->IsConnected());
155 155
156 rv = callback_.WaitForResult(); 156 rv = callback_.WaitForResult();
157 EXPECT_EQ(OK, rv); 157 EXPECT_EQ(OK, rv);
158 EXPECT_TRUE(user_sock_->IsConnected()); 158 EXPECT_TRUE(user_sock_->IsConnected());
159 log.GetEntries(&entries); 159 log.GetEntries(&entries);
160 EXPECT_TRUE(LogContainsEndEvent( 160 EXPECT_TRUE(LogContainsEndEvent(
161 entries, -1, NetLog::TYPE_SOCKS_CONNECT)); 161 entries, -1, NetLog::TYPE_SOCKS_CONNECT));
162 162
163 scoped_refptr<IOBuffer> buffer(new IOBuffer(payload_write.size())); 163 scoped_refptr<IOBuffer> buffer(new IOBuffer(payload_write.size()));
164 memcpy(buffer->data(), payload_write.data(), payload_write.size()); 164 memcpy(buffer->data(), payload_write.data(), payload_write.size());
165 rv = user_sock_->Write(buffer, payload_write.size(), &callback_); 165 rv = user_sock_->Write(buffer, payload_write.size(), callback_.callback());
166 EXPECT_EQ(ERR_IO_PENDING, rv); 166 EXPECT_EQ(ERR_IO_PENDING, rv);
167 rv = callback_.WaitForResult(); 167 rv = callback_.WaitForResult();
168 EXPECT_EQ(static_cast<int>(payload_write.size()), rv); 168 EXPECT_EQ(static_cast<int>(payload_write.size()), rv);
169 169
170 buffer = new IOBuffer(payload_read.size()); 170 buffer = new IOBuffer(payload_read.size());
171 rv = user_sock_->Read(buffer, payload_read.size(), &callback_); 171 rv = user_sock_->Read(buffer, payload_read.size(), callback_.callback());
172 EXPECT_EQ(ERR_IO_PENDING, rv); 172 EXPECT_EQ(ERR_IO_PENDING, rv);
173 rv = callback_.WaitForResult(); 173 rv = callback_.WaitForResult();
174 EXPECT_EQ(static_cast<int>(payload_read.size()), rv); 174 EXPECT_EQ(static_cast<int>(payload_read.size()), rv);
175 EXPECT_EQ(payload_read, std::string(buffer->data(), payload_read.size())); 175 EXPECT_EQ(payload_read, std::string(buffer->data(), payload_read.size()));
176 176
177 user_sock_->Disconnect(); 177 user_sock_->Disconnect();
178 EXPECT_FALSE(tcp_sock_->IsConnected()); 178 EXPECT_FALSE(tcp_sock_->IsConnected());
179 EXPECT_FALSE(user_sock_->IsConnected()); 179 EXPECT_FALSE(user_sock_->IsConnected());
180 } 180 }
181 181
(...skipping 24 matching lines...) Expand all
206 MockRead data_reads[] = { 206 MockRead data_reads[] = {
207 MockRead(false, tests[i].fail_reply, arraysize(tests[i].fail_reply)) }; 207 MockRead(false, tests[i].fail_reply, arraysize(tests[i].fail_reply)) };
208 CapturingNetLog log(CapturingNetLog::kUnbounded); 208 CapturingNetLog log(CapturingNetLog::kUnbounded);
209 209
210 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 210 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
211 data_writes, arraysize(data_writes), 211 data_writes, arraysize(data_writes),
212 host_resolver_.get(), 212 host_resolver_.get(),
213 "localhost", 80, 213 "localhost", 80,
214 &log)); 214 &log));
215 215
216 int rv = user_sock_->Connect(&callback_); 216 int rv = user_sock_->Connect(callback_.callback());
217 EXPECT_EQ(ERR_IO_PENDING, rv); 217 EXPECT_EQ(ERR_IO_PENDING, rv);
218 218
219 net::CapturingNetLog::EntryList entries; 219 net::CapturingNetLog::EntryList entries;
220 log.GetEntries(&entries); 220 log.GetEntries(&entries);
221 EXPECT_TRUE(LogContainsBeginEvent( 221 EXPECT_TRUE(LogContainsBeginEvent(
222 entries, 0, NetLog::TYPE_SOCKS_CONNECT)); 222 entries, 0, NetLog::TYPE_SOCKS_CONNECT));
223 223
224 rv = callback_.WaitForResult(); 224 rv = callback_.WaitForResult();
225 EXPECT_EQ(tests[i].fail_code, rv); 225 EXPECT_EQ(tests[i].fail_code, rv);
226 EXPECT_FALSE(user_sock_->IsConnected()); 226 EXPECT_FALSE(user_sock_->IsConnected());
(...skipping 16 matching lines...) Expand all
243 MockRead(true, kSOCKSPartialReply1, arraysize(kSOCKSPartialReply1)), 243 MockRead(true, kSOCKSPartialReply1, arraysize(kSOCKSPartialReply1)),
244 MockRead(true, kSOCKSPartialReply2, arraysize(kSOCKSPartialReply2)) }; 244 MockRead(true, kSOCKSPartialReply2, arraysize(kSOCKSPartialReply2)) };
245 CapturingNetLog log(CapturingNetLog::kUnbounded); 245 CapturingNetLog log(CapturingNetLog::kUnbounded);
246 246
247 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 247 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
248 data_writes, arraysize(data_writes), 248 data_writes, arraysize(data_writes),
249 host_resolver_.get(), 249 host_resolver_.get(),
250 "localhost", 80, 250 "localhost", 80,
251 &log)); 251 &log));
252 252
253 int rv = user_sock_->Connect(&callback_); 253 int rv = user_sock_->Connect(callback_.callback());
254 EXPECT_EQ(ERR_IO_PENDING, rv); 254 EXPECT_EQ(ERR_IO_PENDING, rv);
255 net::CapturingNetLog::EntryList entries; 255 net::CapturingNetLog::EntryList entries;
256 log.GetEntries(&entries); 256 log.GetEntries(&entries);
257 EXPECT_TRUE(LogContainsBeginEvent( 257 EXPECT_TRUE(LogContainsBeginEvent(
258 entries, 0, NetLog::TYPE_SOCKS_CONNECT)); 258 entries, 0, NetLog::TYPE_SOCKS_CONNECT));
259 259
260 rv = callback_.WaitForResult(); 260 rv = callback_.WaitForResult();
261 EXPECT_EQ(OK, rv); 261 EXPECT_EQ(OK, rv);
262 EXPECT_TRUE(user_sock_->IsConnected()); 262 EXPECT_TRUE(user_sock_->IsConnected());
263 log.GetEntries(&entries); 263 log.GetEntries(&entries);
(...skipping 17 matching lines...) Expand all
281 MockRead data_reads[] = { 281 MockRead data_reads[] = {
282 MockRead(true, kSOCKSOkReply, arraysize(kSOCKSOkReply)) }; 282 MockRead(true, kSOCKSOkReply, arraysize(kSOCKSOkReply)) };
283 CapturingNetLog log(CapturingNetLog::kUnbounded); 283 CapturingNetLog log(CapturingNetLog::kUnbounded);
284 284
285 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 285 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
286 data_writes, arraysize(data_writes), 286 data_writes, arraysize(data_writes),
287 host_resolver_.get(), 287 host_resolver_.get(),
288 "localhost", 80, 288 "localhost", 80,
289 &log)); 289 &log));
290 290
291 int rv = user_sock_->Connect(&callback_); 291 int rv = user_sock_->Connect(callback_.callback());
292 EXPECT_EQ(ERR_IO_PENDING, rv); 292 EXPECT_EQ(ERR_IO_PENDING, rv);
293 net::CapturingNetLog::EntryList entries; 293 net::CapturingNetLog::EntryList entries;
294 log.GetEntries(&entries); 294 log.GetEntries(&entries);
295 EXPECT_TRUE(LogContainsBeginEvent( 295 EXPECT_TRUE(LogContainsBeginEvent(
296 entries, 0, NetLog::TYPE_SOCKS_CONNECT)); 296 entries, 0, NetLog::TYPE_SOCKS_CONNECT));
297 297
298 rv = callback_.WaitForResult(); 298 rv = callback_.WaitForResult();
299 EXPECT_EQ(OK, rv); 299 EXPECT_EQ(OK, rv);
300 EXPECT_TRUE(user_sock_->IsConnected()); 300 EXPECT_TRUE(user_sock_->IsConnected());
301 log.GetEntries(&entries); 301 log.GetEntries(&entries);
(...skipping 11 matching lines...) Expand all
313 // close connection unexpectedly 313 // close connection unexpectedly
314 MockRead(false, 0) }; 314 MockRead(false, 0) };
315 CapturingNetLog log(CapturingNetLog::kUnbounded); 315 CapturingNetLog log(CapturingNetLog::kUnbounded);
316 316
317 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 317 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
318 data_writes, arraysize(data_writes), 318 data_writes, arraysize(data_writes),
319 host_resolver_.get(), 319 host_resolver_.get(),
320 "localhost", 80, 320 "localhost", 80,
321 &log)); 321 &log));
322 322
323 int rv = user_sock_->Connect(&callback_); 323 int rv = user_sock_->Connect(callback_.callback());
324 EXPECT_EQ(ERR_IO_PENDING, rv); 324 EXPECT_EQ(ERR_IO_PENDING, rv);
325 net::CapturingNetLog::EntryList entries; 325 net::CapturingNetLog::EntryList entries;
326 log.GetEntries(&entries); 326 log.GetEntries(&entries);
327 EXPECT_TRUE(LogContainsBeginEvent( 327 EXPECT_TRUE(LogContainsBeginEvent(
328 entries, 0, NetLog::TYPE_SOCKS_CONNECT)); 328 entries, 0, NetLog::TYPE_SOCKS_CONNECT));
329 329
330 rv = callback_.WaitForResult(); 330 rv = callback_.WaitForResult();
331 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv); 331 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv);
332 EXPECT_FALSE(user_sock_->IsConnected()); 332 EXPECT_FALSE(user_sock_->IsConnected());
333 log.GetEntries(&entries); 333 log.GetEntries(&entries);
334 EXPECT_TRUE(LogContainsEndEvent( 334 EXPECT_TRUE(LogContainsEndEvent(
335 entries, -1, NetLog::TYPE_SOCKS_CONNECT)); 335 entries, -1, NetLog::TYPE_SOCKS_CONNECT));
336 } 336 }
337 337
338 // Tries to connect to an unknown hostname. Should fail rather than 338 // Tries to connect to an unknown hostname. Should fail rather than
339 // falling back to SOCKS4a. 339 // falling back to SOCKS4a.
340 TEST_F(SOCKSClientSocketTest, FailedDNS) { 340 TEST_F(SOCKSClientSocketTest, FailedDNS) {
341 const char hostname[] = "unresolved.ipv4.address"; 341 const char hostname[] = "unresolved.ipv4.address";
342 342
343 host_resolver_->rules()->AddSimulatedFailure(hostname); 343 host_resolver_->rules()->AddSimulatedFailure(hostname);
344 344
345 CapturingNetLog log(CapturingNetLog::kUnbounded); 345 CapturingNetLog log(CapturingNetLog::kUnbounded);
346 346
347 user_sock_.reset(BuildMockSocket(NULL, 0, 347 user_sock_.reset(BuildMockSocket(NULL, 0,
348 NULL, 0, 348 NULL, 0,
349 host_resolver_.get(), 349 host_resolver_.get(),
350 hostname, 80, 350 hostname, 80,
351 &log)); 351 &log));
352 352
353 int rv = user_sock_->Connect(&callback_); 353 int rv = user_sock_->Connect(callback_.callback());
354 EXPECT_EQ(ERR_IO_PENDING, rv); 354 EXPECT_EQ(ERR_IO_PENDING, rv);
355 net::CapturingNetLog::EntryList entries; 355 net::CapturingNetLog::EntryList entries;
356 log.GetEntries(&entries); 356 log.GetEntries(&entries);
357 EXPECT_TRUE(LogContainsBeginEvent( 357 EXPECT_TRUE(LogContainsBeginEvent(
358 entries, 0, NetLog::TYPE_SOCKS_CONNECT)); 358 entries, 0, NetLog::TYPE_SOCKS_CONNECT));
359 359
360 rv = callback_.WaitForResult(); 360 rv = callback_.WaitForResult();
361 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, rv); 361 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, rv);
362 EXPECT_FALSE(user_sock_->IsConnected()); 362 EXPECT_FALSE(user_sock_->IsConnected());
363 log.GetEntries(&entries); 363 log.GetEntries(&entries);
(...skipping 11 matching lines...) Expand all
375 MockWrite data_writes[] = { MockWrite(false, "", 0) }; 375 MockWrite data_writes[] = { MockWrite(false, "", 0) };
376 MockRead data_reads[] = { MockRead(false, "", 0) }; 376 MockRead data_reads[] = { MockRead(false, "", 0) };
377 377
378 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 378 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
379 data_writes, arraysize(data_writes), 379 data_writes, arraysize(data_writes),
380 hanging_resolver.get(), 380 hanging_resolver.get(),
381 "foo", 80, 381 "foo", 80,
382 NULL)); 382 NULL));
383 383
384 // Start connecting (will get stuck waiting for the host to resolve). 384 // Start connecting (will get stuck waiting for the host to resolve).
385 int rv = user_sock_->Connect(&callback_); 385 int rv = user_sock_->Connect(callback_.callback());
386 EXPECT_EQ(ERR_IO_PENDING, rv); 386 EXPECT_EQ(ERR_IO_PENDING, rv);
387 387
388 EXPECT_FALSE(user_sock_->IsConnected()); 388 EXPECT_FALSE(user_sock_->IsConnected());
389 EXPECT_FALSE(user_sock_->IsConnectedAndIdle()); 389 EXPECT_FALSE(user_sock_->IsConnectedAndIdle());
390 390
391 // The host resolver should have received the resolve request. 391 // The host resolver should have received the resolve request.
392 EXPECT_TRUE(hanging_resolver->HasOutstandingRequest()); 392 EXPECT_TRUE(hanging_resolver->HasOutstandingRequest());
393 393
394 // Disconnect the SOCKS socket -- this should cancel the outstanding resolve. 394 // Disconnect the SOCKS socket -- this should cancel the outstanding resolve.
395 user_sock_->Disconnect(); 395 user_sock_->Disconnect();
396 396
397 EXPECT_FALSE(hanging_resolver->HasOutstandingRequest()); 397 EXPECT_FALSE(hanging_resolver->HasOutstandingRequest());
398 398
399 EXPECT_FALSE(user_sock_->IsConnected()); 399 EXPECT_FALSE(user_sock_->IsConnected());
400 EXPECT_FALSE(user_sock_->IsConnectedAndIdle()); 400 EXPECT_FALSE(user_sock_->IsConnectedAndIdle());
401 } 401 }
402 402
403 } // namespace net 403 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/socks_client_socket_pool.cc ('k') | net/socket/ssl_client_socket_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698