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

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

Issue 1696005: Add net log entries that summarize transmit and receive byte counts. (Closed)
Patch Set: More tests and address comments Created 10 years, 8 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
« no previous file with comments | « net/socket/socks5_client_socket.cc ('k') | net/socket/socks_client_socket.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) 2009 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/socks5_client_socket.h" 5 #include "net/socket/socks5_client_socket.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 9
10 #include "net/base/address_list.h" 10 #include "net/base/address_list.h"
11 #include "net/base/net_log.h" 11 #include "net/base/net_log.h"
(...skipping 17 matching lines...) Expand all
29 // Base class to test SOCKS5ClientSocket 29 // Base class to test SOCKS5ClientSocket
30 class SOCKS5ClientSocketTest : public PlatformTest { 30 class SOCKS5ClientSocketTest : public PlatformTest {
31 public: 31 public:
32 SOCKS5ClientSocketTest(); 32 SOCKS5ClientSocketTest();
33 // Create a SOCKSClientSocket on top of a MockSocket. 33 // Create a SOCKSClientSocket on top of a MockSocket.
34 SOCKS5ClientSocket* BuildMockSocket(MockRead reads[], 34 SOCKS5ClientSocket* BuildMockSocket(MockRead reads[],
35 size_t reads_count, 35 size_t reads_count,
36 MockWrite writes[], 36 MockWrite writes[],
37 size_t writes_count, 37 size_t writes_count,
38 const std::string& hostname, 38 const std::string& hostname,
39 int port); 39 int port,
40 NetLog* net_log);
40 41
41 virtual void SetUp(); 42 virtual void SetUp();
42 43
43 protected: 44 protected:
44 const uint16 kNwPort; 45 const uint16 kNwPort;
46 CapturingNetLog net_log_;
45 scoped_ptr<SOCKS5ClientSocket> user_sock_; 47 scoped_ptr<SOCKS5ClientSocket> user_sock_;
46 AddressList address_list_; 48 AddressList address_list_;
47 ClientSocket* tcp_sock_; 49 ClientSocket* tcp_sock_;
48 TestCompletionCallback callback_; 50 TestCompletionCallback callback_;
49 scoped_refptr<MockHostResolver> host_resolver_; 51 scoped_refptr<MockHostResolver> host_resolver_;
50 scoped_ptr<SocketDataProvider> data_; 52 scoped_ptr<SocketDataProvider> data_;
51 53
52 private: 54 private:
53 DISALLOW_COPY_AND_ASSIGN(SOCKS5ClientSocketTest); 55 DISALLOW_COPY_AND_ASSIGN(SOCKS5ClientSocketTest);
54 }; 56 };
55 57
56 SOCKS5ClientSocketTest::SOCKS5ClientSocketTest() 58 SOCKS5ClientSocketTest::SOCKS5ClientSocketTest()
57 : kNwPort(htons(80)), host_resolver_(new MockHostResolver) { 59 : kNwPort(htons(80)),
60 net_log_(CapturingNetLog::kUnbounded),
61 host_resolver_(new MockHostResolver) {
58 } 62 }
59 63
60 // Set up platform before every test case 64 // Set up platform before every test case
61 void SOCKS5ClientSocketTest::SetUp() { 65 void SOCKS5ClientSocketTest::SetUp() {
62 PlatformTest::SetUp(); 66 PlatformTest::SetUp();
63 67
64 // Resolve the "localhost" AddressList used by the TCP connection to connect. 68 // Resolve the "localhost" AddressList used by the TCP connection to connect.
65 HostResolver::RequestInfo info("www.socks-proxy.com", 1080); 69 HostResolver::RequestInfo info("www.socks-proxy.com", 1080);
66 int rv = host_resolver_->Resolve(info, &address_list_, NULL, NULL, NULL); 70 int rv = host_resolver_->Resolve(info, &address_list_, NULL, NULL, NULL);
67 ASSERT_EQ(OK, rv); 71 ASSERT_EQ(OK, rv);
68 } 72 }
69 73
70 SOCKS5ClientSocket* SOCKS5ClientSocketTest::BuildMockSocket( 74 SOCKS5ClientSocket* SOCKS5ClientSocketTest::BuildMockSocket(
71 MockRead reads[], 75 MockRead reads[],
72 size_t reads_count, 76 size_t reads_count,
73 MockWrite writes[], 77 MockWrite writes[],
74 size_t writes_count, 78 size_t writes_count,
75 const std::string& hostname, 79 const std::string& hostname,
76 int port) { 80 int port,
81 NetLog* net_log) {
77 TestCompletionCallback callback; 82 TestCompletionCallback callback;
78 data_.reset(new StaticSocketDataProvider(reads, reads_count, 83 data_.reset(new StaticSocketDataProvider(reads, reads_count,
79 writes, writes_count)); 84 writes, writes_count));
80 tcp_sock_ = new MockTCPClientSocket(address_list_, data_.get()); 85 tcp_sock_ = new MockTCPClientSocket(address_list_, net_log, data_.get());
81 86
82 int rv = tcp_sock_->Connect(&callback, NULL); 87 int rv = tcp_sock_->Connect(&callback);
83 EXPECT_EQ(ERR_IO_PENDING, rv); 88 EXPECT_EQ(ERR_IO_PENDING, rv);
84 rv = callback.WaitForResult(); 89 rv = callback.WaitForResult();
85 EXPECT_EQ(OK, rv); 90 EXPECT_EQ(OK, rv);
86 EXPECT_TRUE(tcp_sock_->IsConnected()); 91 EXPECT_TRUE(tcp_sock_->IsConnected());
87 92
88 return new SOCKS5ClientSocket(tcp_sock_, 93 return new SOCKS5ClientSocket(tcp_sock_,
89 HostResolver::RequestInfo(hostname, port)); 94 HostResolver::RequestInfo(hostname, port));
90 } 95 }
91 96
92 // Tests a complete SOCKS5 handshake and the disconnection. 97 // Tests a complete SOCKS5 handshake and the disconnection.
(...skipping 16 matching lines...) Expand all
109 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 114 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
110 MockWrite(true, kOkRequest, arraysize(kOkRequest)), 115 MockWrite(true, kOkRequest, arraysize(kOkRequest)),
111 MockWrite(true, payload_write.data(), payload_write.size()) }; 116 MockWrite(true, payload_write.data(), payload_write.size()) };
112 MockRead data_reads[] = { 117 MockRead data_reads[] = {
113 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 118 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
114 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength), 119 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength),
115 MockRead(true, payload_read.data(), payload_read.size()) }; 120 MockRead(true, payload_read.data(), payload_read.size()) };
116 121
117 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 122 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
118 data_writes, arraysize(data_writes), 123 data_writes, arraysize(data_writes),
119 "localhost", 80)); 124 "localhost", 80, &net_log_));
120 125
121 // At this state the TCP connection is completed but not the SOCKS handshake. 126 // At this state the TCP connection is completed but not the SOCKS handshake.
122 EXPECT_TRUE(tcp_sock_->IsConnected()); 127 EXPECT_TRUE(tcp_sock_->IsConnected());
123 EXPECT_FALSE(user_sock_->IsConnected()); 128 EXPECT_FALSE(user_sock_->IsConnected());
124 129
125 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); 130 int rv = user_sock_->Connect(&callback_);
126 int rv = user_sock_->Connect(&callback_, log.bound());
127 EXPECT_EQ(ERR_IO_PENDING, rv); 131 EXPECT_EQ(ERR_IO_PENDING, rv);
128 EXPECT_FALSE(user_sock_->IsConnected()); 132 EXPECT_FALSE(user_sock_->IsConnected());
129 EXPECT_TRUE(LogContainsBeginEvent(log.entries(), 0, NetLog::TYPE_SOCKS5_CONNEC T)); 133 EXPECT_TRUE(LogContainsBeginEvent(net_log_.entries(), 0,
134 NetLog::TYPE_SOCKS5_CONNECT));
130 135
131 rv = callback_.WaitForResult(); 136 rv = callback_.WaitForResult();
132 137
133 EXPECT_EQ(OK, rv); 138 EXPECT_EQ(OK, rv);
134 EXPECT_TRUE(user_sock_->IsConnected()); 139 EXPECT_TRUE(user_sock_->IsConnected());
135 EXPECT_TRUE(LogContainsEndEvent(log.entries(), -1, NetLog::TYPE_SOCKS5_CONNECT )); 140 EXPECT_TRUE(LogContainsEndEvent(net_log_.entries(), -1,
141 NetLog::TYPE_SOCKS5_CONNECT));
136 142
137 scoped_refptr<IOBuffer> buffer = new IOBuffer(payload_write.size()); 143 scoped_refptr<IOBuffer> buffer = new IOBuffer(payload_write.size());
138 memcpy(buffer->data(), payload_write.data(), payload_write.size()); 144 memcpy(buffer->data(), payload_write.data(), payload_write.size());
139 rv = user_sock_->Write(buffer, payload_write.size(), &callback_); 145 rv = user_sock_->Write(buffer, payload_write.size(), &callback_);
140 EXPECT_EQ(ERR_IO_PENDING, rv); 146 EXPECT_EQ(ERR_IO_PENDING, rv);
141 rv = callback_.WaitForResult(); 147 rv = callback_.WaitForResult();
142 EXPECT_EQ(static_cast<int>(payload_write.size()), rv); 148 EXPECT_EQ(static_cast<int>(payload_write.size()), rv);
143 149
144 buffer = new IOBuffer(payload_read.size()); 150 buffer = new IOBuffer(payload_read.size());
145 rv = user_sock_->Read(buffer, payload_read.size(), &callback_); 151 rv = user_sock_->Read(buffer, payload_read.size(), &callback_);
(...skipping 27 matching lines...) Expand all
173 MockWrite(false, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 179 MockWrite(false, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
174 MockWrite(false, request.data(), request.size()) 180 MockWrite(false, request.data(), request.size())
175 }; 181 };
176 MockRead data_reads[] = { 182 MockRead data_reads[] = {
177 MockRead(false, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 183 MockRead(false, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
178 MockRead(false, kSOCKS5OkResponse, kSOCKS5OkResponseLength) 184 MockRead(false, kSOCKS5OkResponse, kSOCKS5OkResponseLength)
179 }; 185 };
180 186
181 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 187 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
182 data_writes, arraysize(data_writes), 188 data_writes, arraysize(data_writes),
183 hostname, 80)); 189 hostname, 80, NULL));
184 190
185 int rv = user_sock_->Connect(&callback_, NULL); 191 int rv = user_sock_->Connect(&callback_);
186 EXPECT_EQ(OK, rv); 192 EXPECT_EQ(OK, rv);
187 EXPECT_TRUE(user_sock_->IsConnected()); 193 EXPECT_TRUE(user_sock_->IsConnected());
188 194
189 user_sock_->Disconnect(); 195 user_sock_->Disconnect();
190 EXPECT_FALSE(user_sock_->IsConnected()); 196 EXPECT_FALSE(user_sock_->IsConnected());
191 } 197 }
192 } 198 }
193 199
194 // Test that we fail trying to connect to a hosname longer than 255 bytes. 200 // Test that we fail trying to connect to a hosname longer than 255 bytes.
195 TEST_F(SOCKS5ClientSocketTest, LargeHostNameFails) { 201 TEST_F(SOCKS5ClientSocketTest, LargeHostNameFails) {
196 // Create a string of length 256, where each character is 'x'. 202 // Create a string of length 256, where each character is 'x'.
197 std::string large_host_name; 203 std::string large_host_name;
198 std::fill_n(std::back_inserter(large_host_name), 256, 'x'); 204 std::fill_n(std::back_inserter(large_host_name), 256, 'x');
199 205
200 // Create a SOCKS socket, with mock transport socket. 206 // Create a SOCKS socket, with mock transport socket.
201 MockWrite data_writes[] = {MockWrite()}; 207 MockWrite data_writes[] = {MockWrite()};
202 MockRead data_reads[] = {MockRead()}; 208 MockRead data_reads[] = {MockRead()};
203 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 209 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
204 data_writes, arraysize(data_writes), 210 data_writes, arraysize(data_writes),
205 large_host_name, 80)); 211 large_host_name, 80, NULL));
206 212
207 // Try to connect -- should fail (without having read/written anything to 213 // Try to connect -- should fail (without having read/written anything to
208 // the transport socket first) because the hostname is too long. 214 // the transport socket first) because the hostname is too long.
209 TestCompletionCallback callback; 215 TestCompletionCallback callback;
210 int rv = user_sock_->Connect(&callback, NULL); 216 int rv = user_sock_->Connect(&callback);
211 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, rv); 217 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, rv);
212 } 218 }
213 219
214 TEST_F(SOCKS5ClientSocketTest, PartialReadWrites) { 220 TEST_F(SOCKS5ClientSocketTest, PartialReadWrites) {
215 const std::string hostname = "www.google.com"; 221 const std::string hostname = "www.google.com";
216 222
217 const char kOkRequest[] = { 223 const char kOkRequest[] = {
218 0x05, // Version 224 0x05, // Version
219 0x01, // Command (CONNECT) 225 0x01, // Command (CONNECT)
220 0x00, // Reserved. 226 0x00, // Reserved.
(...skipping 10 matching lines...) Expand all
231 const char partial2[] = { 0x00 }; 237 const char partial2[] = { 0x00 };
232 MockWrite data_writes[] = { 238 MockWrite data_writes[] = {
233 MockWrite(true, arraysize(partial1)), 239 MockWrite(true, arraysize(partial1)),
234 MockWrite(true, partial2, arraysize(partial2)), 240 MockWrite(true, partial2, arraysize(partial2)),
235 MockWrite(true, kOkRequest, arraysize(kOkRequest)) }; 241 MockWrite(true, kOkRequest, arraysize(kOkRequest)) };
236 MockRead data_reads[] = { 242 MockRead data_reads[] = {
237 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 243 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
238 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; 244 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength) };
239 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 245 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
240 data_writes, arraysize(data_writes), 246 data_writes, arraysize(data_writes),
241 hostname, 80)); 247 hostname, 80, &net_log_));
242 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); 248 int rv = user_sock_->Connect(&callback_);
243 int rv = user_sock_->Connect(&callback_, log.bound());
244 EXPECT_EQ(ERR_IO_PENDING, rv); 249 EXPECT_EQ(ERR_IO_PENDING, rv);
245 EXPECT_TRUE(LogContainsBeginEvent(log.entries(), 0, NetLog::TYPE_SOCKS5_CONN ECT)); 250 EXPECT_TRUE(LogContainsBeginEvent(net_log_.entries(), 0,
251 NetLog::TYPE_SOCKS5_CONNECT));
246 rv = callback_.WaitForResult(); 252 rv = callback_.WaitForResult();
247 EXPECT_EQ(OK, rv); 253 EXPECT_EQ(OK, rv);
248 EXPECT_TRUE(user_sock_->IsConnected()); 254 EXPECT_TRUE(user_sock_->IsConnected());
249 EXPECT_TRUE(LogContainsEndEvent(log.entries(), -1, NetLog::TYPE_SOCKS5_CONNE CT)); 255 EXPECT_TRUE(LogContainsEndEvent(net_log_.entries(), -1,
256 NetLog::TYPE_SOCKS5_CONNECT));
250 } 257 }
251 258
252 // Test for partial greet response read 259 // Test for partial greet response read
253 { 260 {
254 const char partial1[] = { 0x05 }; 261 const char partial1[] = { 0x05 };
255 const char partial2[] = { 0x00 }; 262 const char partial2[] = { 0x00 };
256 MockWrite data_writes[] = { 263 MockWrite data_writes[] = {
257 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 264 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
258 MockWrite(true, kOkRequest, arraysize(kOkRequest)) }; 265 MockWrite(true, kOkRequest, arraysize(kOkRequest)) };
259 MockRead data_reads[] = { 266 MockRead data_reads[] = {
260 MockRead(true, partial1, arraysize(partial1)), 267 MockRead(true, partial1, arraysize(partial1)),
261 MockRead(true, partial2, arraysize(partial2)), 268 MockRead(true, partial2, arraysize(partial2)),
262 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; 269 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength) };
263 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 270 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
264 data_writes, arraysize(data_writes), 271 data_writes, arraysize(data_writes),
265 hostname, 80)); 272 hostname, 80, &net_log_));
266 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); 273 int rv = user_sock_->Connect(&callback_);
267 int rv = user_sock_->Connect(&callback_, log.bound());
268 EXPECT_EQ(ERR_IO_PENDING, rv); 274 EXPECT_EQ(ERR_IO_PENDING, rv);
269 EXPECT_TRUE(LogContainsBeginEvent(log.entries(), 0, NetLog::TYPE_SOCKS5_CONN ECT)); 275 EXPECT_TRUE(LogContainsBeginEvent(net_log_.entries(), 0,
276 NetLog::TYPE_SOCKS5_CONNECT));
270 rv = callback_.WaitForResult(); 277 rv = callback_.WaitForResult();
271 EXPECT_EQ(OK, rv); 278 EXPECT_EQ(OK, rv);
272 EXPECT_TRUE(user_sock_->IsConnected()); 279 EXPECT_TRUE(user_sock_->IsConnected());
273 EXPECT_TRUE(LogContainsEndEvent(log.entries(), -1, NetLog::TYPE_SOCKS5_CONNE CT)); 280 EXPECT_TRUE(LogContainsEndEvent(net_log_.entries(), -1,
281 NetLog::TYPE_SOCKS5_CONNECT));
274 } 282 }
275 283
276 // Test for partial handshake request write. 284 // Test for partial handshake request write.
277 { 285 {
278 const int kSplitPoint = 3; // Break handshake write into two parts. 286 const int kSplitPoint = 3; // Break handshake write into two parts.
279 MockWrite data_writes[] = { 287 MockWrite data_writes[] = {
280 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 288 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
281 MockWrite(true, kOkRequest, kSplitPoint), 289 MockWrite(true, kOkRequest, kSplitPoint),
282 MockWrite(true, kOkRequest + kSplitPoint, 290 MockWrite(true, kOkRequest + kSplitPoint,
283 arraysize(kOkRequest) - kSplitPoint) 291 arraysize(kOkRequest) - kSplitPoint)
284 }; 292 };
285 MockRead data_reads[] = { 293 MockRead data_reads[] = {
286 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 294 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
287 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; 295 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength) };
288 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 296 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
289 data_writes, arraysize(data_writes), 297 data_writes, arraysize(data_writes),
290 hostname, 80)); 298 hostname, 80, &net_log_));
291 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); 299 int rv = user_sock_->Connect(&callback_);
292 int rv = user_sock_->Connect(&callback_, log.bound());
293 EXPECT_EQ(ERR_IO_PENDING, rv); 300 EXPECT_EQ(ERR_IO_PENDING, rv);
294 EXPECT_TRUE(LogContainsBeginEvent(log.entries(), 0, NetLog::TYPE_SOCKS5_CONN ECT)); 301 EXPECT_TRUE(LogContainsBeginEvent(net_log_.entries(), 0,
302 NetLog::TYPE_SOCKS5_CONNECT));
295 rv = callback_.WaitForResult(); 303 rv = callback_.WaitForResult();
296 EXPECT_EQ(OK, rv); 304 EXPECT_EQ(OK, rv);
297 EXPECT_TRUE(user_sock_->IsConnected()); 305 EXPECT_TRUE(user_sock_->IsConnected());
298 EXPECT_TRUE(LogContainsEndEvent(log.entries(), -1, NetLog::TYPE_SOCKS5_CONNE CT)); 306 EXPECT_TRUE(LogContainsEndEvent(net_log_.entries(), -1,
307 NetLog::TYPE_SOCKS5_CONNECT));
299 } 308 }
300 309
301 // Test for partial handshake response read 310 // Test for partial handshake response read
302 { 311 {
303 const int kSplitPoint = 6; // Break the handshake read into two parts. 312 const int kSplitPoint = 6; // Break the handshake read into two parts.
304 MockWrite data_writes[] = { 313 MockWrite data_writes[] = {
305 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 314 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
306 MockWrite(true, kOkRequest, arraysize(kOkRequest)) 315 MockWrite(true, kOkRequest, arraysize(kOkRequest))
307 }; 316 };
308 MockRead data_reads[] = { 317 MockRead data_reads[] = {
309 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 318 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
310 MockRead(true, kSOCKS5OkResponse, kSplitPoint), 319 MockRead(true, kSOCKS5OkResponse, kSplitPoint),
311 MockRead(true, kSOCKS5OkResponse + kSplitPoint, 320 MockRead(true, kSOCKS5OkResponse + kSplitPoint,
312 kSOCKS5OkResponseLength - kSplitPoint) 321 kSOCKS5OkResponseLength - kSplitPoint)
313 }; 322 };
314 323
315 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 324 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
316 data_writes, arraysize(data_writes), 325 data_writes, arraysize(data_writes),
317 hostname, 80)); 326 hostname, 80, &net_log_));
318 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); 327 int rv = user_sock_->Connect(&callback_);
319 int rv = user_sock_->Connect(&callback_, log.bound());
320 EXPECT_EQ(ERR_IO_PENDING, rv); 328 EXPECT_EQ(ERR_IO_PENDING, rv);
321 EXPECT_TRUE(LogContainsBeginEvent(log.entries(), 0, NetLog::TYPE_SOCKS5_CONN ECT)); 329 EXPECT_TRUE(LogContainsBeginEvent(net_log_.entries(), 0,
330 NetLog::TYPE_SOCKS5_CONNECT));
322 rv = callback_.WaitForResult(); 331 rv = callback_.WaitForResult();
323 EXPECT_EQ(OK, rv); 332 EXPECT_EQ(OK, rv);
324 EXPECT_TRUE(user_sock_->IsConnected()); 333 EXPECT_TRUE(user_sock_->IsConnected());
325 EXPECT_TRUE(LogContainsEndEvent(log.entries(), -1, NetLog::TYPE_SOCKS5_CONNE CT)); 334 EXPECT_TRUE(LogContainsEndEvent(net_log_.entries(), -1,
335 NetLog::TYPE_SOCKS5_CONNECT));
326 } 336 }
327 } 337 }
328 338
329 } // namespace 339 } // namespace
330 340
331 } // namespace net 341 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/socks5_client_socket.cc ('k') | net/socket/socks_client_socket.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698