OLD | NEW |
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/socks5_client_socket.h" | 5 #include "net/socket/socks5_client_socket.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <iterator> | 8 #include <iterator> |
9 #include <map> | 9 #include <map> |
10 | 10 |
(...skipping 26 matching lines...) Expand all Loading... |
37 MockWrite writes[], | 37 MockWrite writes[], |
38 size_t writes_count, | 38 size_t writes_count, |
39 const std::string& hostname, | 39 const std::string& hostname, |
40 int port, | 40 int port, |
41 NetLog* net_log); | 41 NetLog* net_log); |
42 | 42 |
43 void SetUp() override; | 43 void SetUp() override; |
44 | 44 |
45 protected: | 45 protected: |
46 const uint16 kNwPort; | 46 const uint16 kNwPort; |
47 CapturingNetLog net_log_; | 47 TestNetLog net_log_; |
48 scoped_ptr<SOCKS5ClientSocket> user_sock_; | 48 scoped_ptr<SOCKS5ClientSocket> user_sock_; |
49 AddressList address_list_; | 49 AddressList address_list_; |
50 // Filled in by BuildMockSocket() and owned by its return value | 50 // Filled in by BuildMockSocket() and owned by its return value |
51 // (which |user_sock| is set to). | 51 // (which |user_sock| is set to). |
52 StreamSocket* tcp_sock_; | 52 StreamSocket* tcp_sock_; |
53 TestCompletionCallback callback_; | 53 TestCompletionCallback callback_; |
54 scoped_ptr<MockHostResolver> host_resolver_; | 54 scoped_ptr<MockHostResolver> host_resolver_; |
55 scoped_ptr<SocketDataProvider> data_; | 55 scoped_ptr<SocketDataProvider> data_; |
56 | 56 |
57 private: | 57 private: |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 "localhost", 80, &net_log_); | 139 "localhost", 80, &net_log_); |
140 | 140 |
141 // At this state the TCP connection is completed but not the SOCKS handshake. | 141 // At this state the TCP connection is completed but not the SOCKS handshake. |
142 EXPECT_TRUE(tcp_sock_->IsConnected()); | 142 EXPECT_TRUE(tcp_sock_->IsConnected()); |
143 EXPECT_FALSE(user_sock_->IsConnected()); | 143 EXPECT_FALSE(user_sock_->IsConnected()); |
144 | 144 |
145 int rv = user_sock_->Connect(callback_.callback()); | 145 int rv = user_sock_->Connect(callback_.callback()); |
146 EXPECT_EQ(ERR_IO_PENDING, rv); | 146 EXPECT_EQ(ERR_IO_PENDING, rv); |
147 EXPECT_FALSE(user_sock_->IsConnected()); | 147 EXPECT_FALSE(user_sock_->IsConnected()); |
148 | 148 |
149 CapturingNetLog::CapturedEntryList net_log_entries; | 149 TestNetLog::CapturedEntryList net_log_entries; |
150 net_log_.GetEntries(&net_log_entries); | 150 net_log_.GetEntries(&net_log_entries); |
151 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, | 151 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, |
152 NetLog::TYPE_SOCKS5_CONNECT)); | 152 NetLog::TYPE_SOCKS5_CONNECT)); |
153 | 153 |
154 rv = callback_.WaitForResult(); | 154 rv = callback_.WaitForResult(); |
155 | 155 |
156 EXPECT_EQ(OK, rv); | 156 EXPECT_EQ(OK, rv); |
157 EXPECT_TRUE(user_sock_->IsConnected()); | 157 EXPECT_TRUE(user_sock_->IsConnected()); |
158 | 158 |
159 net_log_.GetEntries(&net_log_entries); | 159 net_log_.GetEntries(&net_log_entries); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest)) }; | 263 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest)) }; |
264 MockRead data_reads[] = { | 264 MockRead data_reads[] = { |
265 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), | 265 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), |
266 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; | 266 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; |
267 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), | 267 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), |
268 data_writes, arraysize(data_writes), | 268 data_writes, arraysize(data_writes), |
269 hostname, 80, &net_log_); | 269 hostname, 80, &net_log_); |
270 int rv = user_sock_->Connect(callback_.callback()); | 270 int rv = user_sock_->Connect(callback_.callback()); |
271 EXPECT_EQ(ERR_IO_PENDING, rv); | 271 EXPECT_EQ(ERR_IO_PENDING, rv); |
272 | 272 |
273 CapturingNetLog::CapturedEntryList net_log_entries; | 273 TestNetLog::CapturedEntryList net_log_entries; |
274 net_log_.GetEntries(&net_log_entries); | 274 net_log_.GetEntries(&net_log_entries); |
275 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, | 275 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, |
276 NetLog::TYPE_SOCKS5_CONNECT)); | 276 NetLog::TYPE_SOCKS5_CONNECT)); |
277 | 277 |
278 rv = callback_.WaitForResult(); | 278 rv = callback_.WaitForResult(); |
279 EXPECT_EQ(OK, rv); | 279 EXPECT_EQ(OK, rv); |
280 EXPECT_TRUE(user_sock_->IsConnected()); | 280 EXPECT_TRUE(user_sock_->IsConnected()); |
281 | 281 |
282 net_log_.GetEntries(&net_log_entries); | 282 net_log_.GetEntries(&net_log_entries); |
283 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, | 283 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, |
(...skipping 10 matching lines...) Expand all Loading... |
294 MockRead data_reads[] = { | 294 MockRead data_reads[] = { |
295 MockRead(ASYNC, partial1, arraysize(partial1)), | 295 MockRead(ASYNC, partial1, arraysize(partial1)), |
296 MockRead(ASYNC, partial2, arraysize(partial2)), | 296 MockRead(ASYNC, partial2, arraysize(partial2)), |
297 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; | 297 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; |
298 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), | 298 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), |
299 data_writes, arraysize(data_writes), | 299 data_writes, arraysize(data_writes), |
300 hostname, 80, &net_log_); | 300 hostname, 80, &net_log_); |
301 int rv = user_sock_->Connect(callback_.callback()); | 301 int rv = user_sock_->Connect(callback_.callback()); |
302 EXPECT_EQ(ERR_IO_PENDING, rv); | 302 EXPECT_EQ(ERR_IO_PENDING, rv); |
303 | 303 |
304 CapturingNetLog::CapturedEntryList net_log_entries; | 304 TestNetLog::CapturedEntryList net_log_entries; |
305 net_log_.GetEntries(&net_log_entries); | 305 net_log_.GetEntries(&net_log_entries); |
306 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, | 306 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, |
307 NetLog::TYPE_SOCKS5_CONNECT)); | 307 NetLog::TYPE_SOCKS5_CONNECT)); |
308 rv = callback_.WaitForResult(); | 308 rv = callback_.WaitForResult(); |
309 EXPECT_EQ(OK, rv); | 309 EXPECT_EQ(OK, rv); |
310 EXPECT_TRUE(user_sock_->IsConnected()); | 310 EXPECT_TRUE(user_sock_->IsConnected()); |
311 net_log_.GetEntries(&net_log_entries); | 311 net_log_.GetEntries(&net_log_entries); |
312 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, | 312 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, |
313 NetLog::TYPE_SOCKS5_CONNECT)); | 313 NetLog::TYPE_SOCKS5_CONNECT)); |
314 } | 314 } |
315 | 315 |
316 // Test for partial handshake request write. | 316 // Test for partial handshake request write. |
317 { | 317 { |
318 const int kSplitPoint = 3; // Break handshake write into two parts. | 318 const int kSplitPoint = 3; // Break handshake write into two parts. |
319 MockWrite data_writes[] = { | 319 MockWrite data_writes[] = { |
320 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), | 320 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), |
321 MockWrite(ASYNC, kOkRequest, kSplitPoint), | 321 MockWrite(ASYNC, kOkRequest, kSplitPoint), |
322 MockWrite(ASYNC, kOkRequest + kSplitPoint, | 322 MockWrite(ASYNC, kOkRequest + kSplitPoint, |
323 arraysize(kOkRequest) - kSplitPoint) | 323 arraysize(kOkRequest) - kSplitPoint) |
324 }; | 324 }; |
325 MockRead data_reads[] = { | 325 MockRead data_reads[] = { |
326 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), | 326 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), |
327 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; | 327 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; |
328 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), | 328 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), |
329 data_writes, arraysize(data_writes), | 329 data_writes, arraysize(data_writes), |
330 hostname, 80, &net_log_); | 330 hostname, 80, &net_log_); |
331 int rv = user_sock_->Connect(callback_.callback()); | 331 int rv = user_sock_->Connect(callback_.callback()); |
332 EXPECT_EQ(ERR_IO_PENDING, rv); | 332 EXPECT_EQ(ERR_IO_PENDING, rv); |
333 CapturingNetLog::CapturedEntryList net_log_entries; | 333 TestNetLog::CapturedEntryList net_log_entries; |
334 net_log_.GetEntries(&net_log_entries); | 334 net_log_.GetEntries(&net_log_entries); |
335 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, | 335 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, |
336 NetLog::TYPE_SOCKS5_CONNECT)); | 336 NetLog::TYPE_SOCKS5_CONNECT)); |
337 rv = callback_.WaitForResult(); | 337 rv = callback_.WaitForResult(); |
338 EXPECT_EQ(OK, rv); | 338 EXPECT_EQ(OK, rv); |
339 EXPECT_TRUE(user_sock_->IsConnected()); | 339 EXPECT_TRUE(user_sock_->IsConnected()); |
340 net_log_.GetEntries(&net_log_entries); | 340 net_log_.GetEntries(&net_log_entries); |
341 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, | 341 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, |
342 NetLog::TYPE_SOCKS5_CONNECT)); | 342 NetLog::TYPE_SOCKS5_CONNECT)); |
343 } | 343 } |
(...skipping 10 matching lines...) Expand all Loading... |
354 MockRead(ASYNC, kSOCKS5OkResponse, kSplitPoint), | 354 MockRead(ASYNC, kSOCKS5OkResponse, kSplitPoint), |
355 MockRead(ASYNC, kSOCKS5OkResponse + kSplitPoint, | 355 MockRead(ASYNC, kSOCKS5OkResponse + kSplitPoint, |
356 kSOCKS5OkResponseLength - kSplitPoint) | 356 kSOCKS5OkResponseLength - kSplitPoint) |
357 }; | 357 }; |
358 | 358 |
359 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), | 359 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), |
360 data_writes, arraysize(data_writes), | 360 data_writes, arraysize(data_writes), |
361 hostname, 80, &net_log_); | 361 hostname, 80, &net_log_); |
362 int rv = user_sock_->Connect(callback_.callback()); | 362 int rv = user_sock_->Connect(callback_.callback()); |
363 EXPECT_EQ(ERR_IO_PENDING, rv); | 363 EXPECT_EQ(ERR_IO_PENDING, rv); |
364 CapturingNetLog::CapturedEntryList net_log_entries; | 364 TestNetLog::CapturedEntryList net_log_entries; |
365 net_log_.GetEntries(&net_log_entries); | 365 net_log_.GetEntries(&net_log_entries); |
366 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, | 366 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, |
367 NetLog::TYPE_SOCKS5_CONNECT)); | 367 NetLog::TYPE_SOCKS5_CONNECT)); |
368 rv = callback_.WaitForResult(); | 368 rv = callback_.WaitForResult(); |
369 EXPECT_EQ(OK, rv); | 369 EXPECT_EQ(OK, rv); |
370 EXPECT_TRUE(user_sock_->IsConnected()); | 370 EXPECT_TRUE(user_sock_->IsConnected()); |
371 net_log_.GetEntries(&net_log_entries); | 371 net_log_.GetEntries(&net_log_entries); |
372 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, | 372 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, |
373 NetLog::TYPE_SOCKS5_CONNECT)); | 373 NetLog::TYPE_SOCKS5_CONNECT)); |
374 } | 374 } |
375 } | 375 } |
376 | 376 |
377 } // namespace | 377 } // namespace |
378 | 378 |
379 } // namespace net | 379 } // namespace net |
OLD | NEW |