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

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

Issue 9425016: Change MockRead and MockWrite (et. al.) to take an IoMode enum, instead (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 8 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « net/socket/socket_test_util.cc ('k') | net/socket/socks_client_socket_pool_unittest.cc » ('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/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"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 0x01, // Command (CONNECT) 108 0x01, // Command (CONNECT)
109 0x00, // Reserved. 109 0x00, // Reserved.
110 0x03, // Address type (DOMAINNAME). 110 0x03, // Address type (DOMAINNAME).
111 0x09, // Length of domain (9) 111 0x09, // Length of domain (9)
112 // Domain string: 112 // Domain string:
113 'l', 'o', 'c', 'a', 'l', 'h', 'o', 's', 't', 113 'l', 'o', 'c', 'a', 'l', 'h', 'o', 's', 't',
114 0x00, 0x50, // 16-bit port (80) 114 0x00, 0x50, // 16-bit port (80)
115 }; 115 };
116 116
117 MockWrite data_writes[] = { 117 MockWrite data_writes[] = {
118 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 118 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
119 MockWrite(true, kOkRequest, arraysize(kOkRequest)), 119 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest)),
120 MockWrite(true, payload_write.data(), payload_write.size()) }; 120 MockWrite(ASYNC, payload_write.data(), payload_write.size()) };
121 MockRead data_reads[] = { 121 MockRead data_reads[] = {
122 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 122 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
123 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength), 123 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength),
124 MockRead(true, payload_read.data(), payload_read.size()) }; 124 MockRead(ASYNC, payload_read.data(), payload_read.size()) };
125 125
126 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 126 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
127 data_writes, arraysize(data_writes), 127 data_writes, arraysize(data_writes),
128 "localhost", 80, &net_log_)); 128 "localhost", 80, &net_log_));
129 129
130 // At this state the TCP connection is completed but not the SOCKS handshake. 130 // At this state the TCP connection is completed but not the SOCKS handshake.
131 EXPECT_TRUE(tcp_sock_->IsConnected()); 131 EXPECT_TRUE(tcp_sock_->IsConnected());
132 EXPECT_FALSE(user_sock_->IsConnected()); 132 EXPECT_FALSE(user_sock_->IsConnected());
133 133
134 int rv = user_sock_->Connect(callback_.callback()); 134 int rv = user_sock_->Connect(callback_.callback());
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 0x03, // ATYPE 178 0x03, // ATYPE
179 }; 179 };
180 180
181 std::string request(kSOCKS5DomainRequest, arraysize(kSOCKS5DomainRequest)); 181 std::string request(kSOCKS5DomainRequest, arraysize(kSOCKS5DomainRequest));
182 request.push_back(hostname.size()); 182 request.push_back(hostname.size());
183 request.append(hostname); 183 request.append(hostname);
184 request.append(reinterpret_cast<const char*>(&kNwPort), sizeof(kNwPort)); 184 request.append(reinterpret_cast<const char*>(&kNwPort), sizeof(kNwPort));
185 185
186 for (int i = 0; i < 2; ++i) { 186 for (int i = 0; i < 2; ++i) {
187 MockWrite data_writes[] = { 187 MockWrite data_writes[] = {
188 MockWrite(false, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 188 MockWrite(SYNCHRONOUS, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
189 MockWrite(false, request.data(), request.size()) 189 MockWrite(SYNCHRONOUS, request.data(), request.size())
190 }; 190 };
191 MockRead data_reads[] = { 191 MockRead data_reads[] = {
192 MockRead(false, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 192 MockRead(SYNCHRONOUS, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
193 MockRead(false, kSOCKS5OkResponse, kSOCKS5OkResponseLength) 193 MockRead(SYNCHRONOUS, kSOCKS5OkResponse, kSOCKS5OkResponseLength)
194 }; 194 };
195 195
196 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 196 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
197 data_writes, arraysize(data_writes), 197 data_writes, arraysize(data_writes),
198 hostname, 80, NULL)); 198 hostname, 80, NULL));
199 199
200 int rv = user_sock_->Connect(callback_.callback()); 200 int rv = user_sock_->Connect(callback_.callback());
201 EXPECT_EQ(OK, rv); 201 EXPECT_EQ(OK, rv);
202 EXPECT_TRUE(user_sock_->IsConnected()); 202 EXPECT_TRUE(user_sock_->IsConnected());
203 203
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 // Domain string: 238 // Domain string:
239 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', 239 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm',
240 0x00, 0x50, // 16-bit port (80) 240 0x00, 0x50, // 16-bit port (80)
241 }; 241 };
242 242
243 // Test for partial greet request write 243 // Test for partial greet request write
244 { 244 {
245 const char partial1[] = { 0x05, 0x01 }; 245 const char partial1[] = { 0x05, 0x01 };
246 const char partial2[] = { 0x00 }; 246 const char partial2[] = { 0x00 };
247 MockWrite data_writes[] = { 247 MockWrite data_writes[] = {
248 MockWrite(true, arraysize(partial1)), 248 MockWrite(ASYNC, arraysize(partial1)),
249 MockWrite(true, partial2, arraysize(partial2)), 249 MockWrite(ASYNC, partial2, arraysize(partial2)),
250 MockWrite(true, kOkRequest, arraysize(kOkRequest)) }; 250 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest)) };
251 MockRead data_reads[] = { 251 MockRead data_reads[] = {
252 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 252 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
253 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; 253 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) };
254 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 254 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
255 data_writes, arraysize(data_writes), 255 data_writes, arraysize(data_writes),
256 hostname, 80, &net_log_)); 256 hostname, 80, &net_log_));
257 int rv = user_sock_->Connect(callback_.callback()); 257 int rv = user_sock_->Connect(callback_.callback());
258 EXPECT_EQ(ERR_IO_PENDING, rv); 258 EXPECT_EQ(ERR_IO_PENDING, rv);
259 259
260 net::CapturingNetLog::EntryList net_log_entries; 260 net::CapturingNetLog::EntryList net_log_entries;
261 net_log_.GetEntries(&net_log_entries); 261 net_log_.GetEntries(&net_log_entries);
262 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, 262 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0,
263 NetLog::TYPE_SOCKS5_CONNECT)); 263 NetLog::TYPE_SOCKS5_CONNECT));
264 264
265 rv = callback_.WaitForResult(); 265 rv = callback_.WaitForResult();
266 EXPECT_EQ(OK, rv); 266 EXPECT_EQ(OK, rv);
267 EXPECT_TRUE(user_sock_->IsConnected()); 267 EXPECT_TRUE(user_sock_->IsConnected());
268 268
269 net_log_.GetEntries(&net_log_entries); 269 net_log_.GetEntries(&net_log_entries);
270 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, 270 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1,
271 NetLog::TYPE_SOCKS5_CONNECT)); 271 NetLog::TYPE_SOCKS5_CONNECT));
272 } 272 }
273 273
274 // Test for partial greet response read 274 // Test for partial greet response read
275 { 275 {
276 const char partial1[] = { 0x05 }; 276 const char partial1[] = { 0x05 };
277 const char partial2[] = { 0x00 }; 277 const char partial2[] = { 0x00 };
278 MockWrite data_writes[] = { 278 MockWrite data_writes[] = {
279 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 279 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
280 MockWrite(true, kOkRequest, arraysize(kOkRequest)) }; 280 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest)) };
281 MockRead data_reads[] = { 281 MockRead data_reads[] = {
282 MockRead(true, partial1, arraysize(partial1)), 282 MockRead(ASYNC, partial1, arraysize(partial1)),
283 MockRead(true, partial2, arraysize(partial2)), 283 MockRead(ASYNC, partial2, arraysize(partial2)),
284 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; 284 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) };
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 hostname, 80, &net_log_)); 287 hostname, 80, &net_log_));
288 int rv = user_sock_->Connect(callback_.callback()); 288 int rv = user_sock_->Connect(callback_.callback());
289 EXPECT_EQ(ERR_IO_PENDING, rv); 289 EXPECT_EQ(ERR_IO_PENDING, rv);
290 290
291 net::CapturingNetLog::EntryList net_log_entries; 291 net::CapturingNetLog::EntryList net_log_entries;
292 net_log_.GetEntries(&net_log_entries); 292 net_log_.GetEntries(&net_log_entries);
293 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, 293 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0,
294 NetLog::TYPE_SOCKS5_CONNECT)); 294 NetLog::TYPE_SOCKS5_CONNECT));
295 rv = callback_.WaitForResult(); 295 rv = callback_.WaitForResult();
296 EXPECT_EQ(OK, rv); 296 EXPECT_EQ(OK, rv);
297 EXPECT_TRUE(user_sock_->IsConnected()); 297 EXPECT_TRUE(user_sock_->IsConnected());
298 net_log_.GetEntries(&net_log_entries); 298 net_log_.GetEntries(&net_log_entries);
299 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, 299 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1,
300 NetLog::TYPE_SOCKS5_CONNECT)); 300 NetLog::TYPE_SOCKS5_CONNECT));
301 } 301 }
302 302
303 // Test for partial handshake request write. 303 // Test for partial handshake request write.
304 { 304 {
305 const int kSplitPoint = 3; // Break handshake write into two parts. 305 const int kSplitPoint = 3; // Break handshake write into two parts.
306 MockWrite data_writes[] = { 306 MockWrite data_writes[] = {
307 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 307 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
308 MockWrite(true, kOkRequest, kSplitPoint), 308 MockWrite(ASYNC, kOkRequest, kSplitPoint),
309 MockWrite(true, kOkRequest + kSplitPoint, 309 MockWrite(ASYNC, kOkRequest + kSplitPoint,
310 arraysize(kOkRequest) - kSplitPoint) 310 arraysize(kOkRequest) - kSplitPoint)
311 }; 311 };
312 MockRead data_reads[] = { 312 MockRead data_reads[] = {
313 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 313 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
314 MockRead(true, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; 314 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) };
315 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 315 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
316 data_writes, arraysize(data_writes), 316 data_writes, arraysize(data_writes),
317 hostname, 80, &net_log_)); 317 hostname, 80, &net_log_));
318 int rv = user_sock_->Connect(callback_.callback()); 318 int rv = user_sock_->Connect(callback_.callback());
319 EXPECT_EQ(ERR_IO_PENDING, rv); 319 EXPECT_EQ(ERR_IO_PENDING, rv);
320 net::CapturingNetLog::EntryList net_log_entries; 320 net::CapturingNetLog::EntryList net_log_entries;
321 net_log_.GetEntries(&net_log_entries); 321 net_log_.GetEntries(&net_log_entries);
322 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, 322 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0,
323 NetLog::TYPE_SOCKS5_CONNECT)); 323 NetLog::TYPE_SOCKS5_CONNECT));
324 rv = callback_.WaitForResult(); 324 rv = callback_.WaitForResult();
325 EXPECT_EQ(OK, rv); 325 EXPECT_EQ(OK, rv);
326 EXPECT_TRUE(user_sock_->IsConnected()); 326 EXPECT_TRUE(user_sock_->IsConnected());
327 net_log_.GetEntries(&net_log_entries); 327 net_log_.GetEntries(&net_log_entries);
328 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, 328 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1,
329 NetLog::TYPE_SOCKS5_CONNECT)); 329 NetLog::TYPE_SOCKS5_CONNECT));
330 } 330 }
331 331
332 // Test for partial handshake response read 332 // Test for partial handshake response read
333 { 333 {
334 const int kSplitPoint = 6; // Break the handshake read into two parts. 334 const int kSplitPoint = 6; // Break the handshake read into two parts.
335 MockWrite data_writes[] = { 335 MockWrite data_writes[] = {
336 MockWrite(true, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 336 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
337 MockWrite(true, kOkRequest, arraysize(kOkRequest)) 337 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest))
338 }; 338 };
339 MockRead data_reads[] = { 339 MockRead data_reads[] = {
340 MockRead(true, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 340 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
341 MockRead(true, kSOCKS5OkResponse, kSplitPoint), 341 MockRead(ASYNC, kSOCKS5OkResponse, kSplitPoint),
342 MockRead(true, kSOCKS5OkResponse + kSplitPoint, 342 MockRead(ASYNC, kSOCKS5OkResponse + kSplitPoint,
343 kSOCKS5OkResponseLength - kSplitPoint) 343 kSOCKS5OkResponseLength - kSplitPoint)
344 }; 344 };
345 345
346 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 346 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
347 data_writes, arraysize(data_writes), 347 data_writes, arraysize(data_writes),
348 hostname, 80, &net_log_)); 348 hostname, 80, &net_log_));
349 int rv = user_sock_->Connect(callback_.callback()); 349 int rv = user_sock_->Connect(callback_.callback());
350 EXPECT_EQ(ERR_IO_PENDING, rv); 350 EXPECT_EQ(ERR_IO_PENDING, rv);
351 net::CapturingNetLog::EntryList net_log_entries; 351 net::CapturingNetLog::EntryList net_log_entries;
352 net_log_.GetEntries(&net_log_entries); 352 net_log_.GetEntries(&net_log_entries);
353 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, 353 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0,
354 NetLog::TYPE_SOCKS5_CONNECT)); 354 NetLog::TYPE_SOCKS5_CONNECT));
355 rv = callback_.WaitForResult(); 355 rv = callback_.WaitForResult();
356 EXPECT_EQ(OK, rv); 356 EXPECT_EQ(OK, rv);
357 EXPECT_TRUE(user_sock_->IsConnected()); 357 EXPECT_TRUE(user_sock_->IsConnected());
358 net_log_.GetEntries(&net_log_entries); 358 net_log_.GetEntries(&net_log_entries);
359 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, 359 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1,
360 NetLog::TYPE_SOCKS5_CONNECT)); 360 NetLog::TYPE_SOCKS5_CONNECT));
361 } 361 }
362 } 362 }
363 363
364 } // namespace 364 } // namespace
365 365
366 } // namespace net 366 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/socket_test_util.cc ('k') | net/socket/socks_client_socket_pool_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698