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

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

Issue 10546071: CapturingNetLog - remove maximum entries constructor argument. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 8 years, 6 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/socks5_client_socket_unittest.cc ('k') | net/socket/ssl_client_socket_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) 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.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 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 TEST_F(SOCKSClientSocketTest, CompleteHandshake) { 125 TEST_F(SOCKSClientSocketTest, CompleteHandshake) {
126 const std::string payload_write = "random data"; 126 const std::string payload_write = "random data";
127 const std::string payload_read = "moar random data"; 127 const std::string payload_read = "moar random data";
128 128
129 MockWrite data_writes[] = { 129 MockWrite data_writes[] = {
130 MockWrite(ASYNC, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)), 130 MockWrite(ASYNC, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)),
131 MockWrite(ASYNC, payload_write.data(), payload_write.size()) }; 131 MockWrite(ASYNC, payload_write.data(), payload_write.size()) };
132 MockRead data_reads[] = { 132 MockRead data_reads[] = {
133 MockRead(ASYNC, kSOCKSOkReply, arraysize(kSOCKSOkReply)), 133 MockRead(ASYNC, kSOCKSOkReply, arraysize(kSOCKSOkReply)),
134 MockRead(ASYNC, payload_read.data(), payload_read.size()) }; 134 MockRead(ASYNC, payload_read.data(), payload_read.size()) };
135 CapturingNetLog log(CapturingNetLog::kUnbounded); 135 CapturingNetLog log;
136 136
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_.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::CapturedEntryList entries; 150 CapturingNetLog::CapturedEntryList 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(
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 }; 199 };
200 200
201 //--------------------------------------- 201 //---------------------------------------
202 202
203 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 203 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
204 MockWrite data_writes[] = { 204 MockWrite data_writes[] = {
205 MockWrite(SYNCHRONOUS, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) }; 205 MockWrite(SYNCHRONOUS, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) };
206 MockRead data_reads[] = { 206 MockRead data_reads[] = {
207 MockRead(SYNCHRONOUS, tests[i].fail_reply, 207 MockRead(SYNCHRONOUS, tests[i].fail_reply,
208 arraysize(tests[i].fail_reply)) }; 208 arraysize(tests[i].fail_reply)) };
209 CapturingNetLog log(CapturingNetLog::kUnbounded); 209 CapturingNetLog log;
210 210
211 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 211 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
212 data_writes, arraysize(data_writes), 212 data_writes, arraysize(data_writes),
213 host_resolver_.get(), 213 host_resolver_.get(),
214 "localhost", 80, 214 "localhost", 80,
215 &log)); 215 &log));
216 216
217 int rv = user_sock_->Connect(callback_.callback()); 217 int rv = user_sock_->Connect(callback_.callback());
218 EXPECT_EQ(ERR_IO_PENDING, rv); 218 EXPECT_EQ(ERR_IO_PENDING, rv);
219 219
220 net::CapturingNetLog::CapturedEntryList entries; 220 CapturingNetLog::CapturedEntryList entries;
221 log.GetEntries(&entries); 221 log.GetEntries(&entries);
222 EXPECT_TRUE(LogContainsBeginEvent( 222 EXPECT_TRUE(LogContainsBeginEvent(
223 entries, 0, NetLog::TYPE_SOCKS_CONNECT)); 223 entries, 0, NetLog::TYPE_SOCKS_CONNECT));
224 224
225 rv = callback_.WaitForResult(); 225 rv = callback_.WaitForResult();
226 EXPECT_EQ(tests[i].fail_code, rv); 226 EXPECT_EQ(tests[i].fail_code, rv);
227 EXPECT_FALSE(user_sock_->IsConnected()); 227 EXPECT_FALSE(user_sock_->IsConnected());
228 EXPECT_TRUE(tcp_sock_->IsConnected()); 228 EXPECT_TRUE(tcp_sock_->IsConnected());
229 log.GetEntries(&entries); 229 log.GetEntries(&entries);
230 EXPECT_TRUE(LogContainsEndEvent( 230 EXPECT_TRUE(LogContainsEndEvent(
231 entries, -1, NetLog::TYPE_SOCKS_CONNECT)); 231 entries, -1, NetLog::TYPE_SOCKS_CONNECT));
232 } 232 }
233 } 233 }
234 234
235 // Tests scenario when the server sends the handshake response in 235 // Tests scenario when the server sends the handshake response in
236 // more than one packet. 236 // more than one packet.
237 TEST_F(SOCKSClientSocketTest, PartialServerReads) { 237 TEST_F(SOCKSClientSocketTest, PartialServerReads) {
238 const char kSOCKSPartialReply1[] = { 0x00 }; 238 const char kSOCKSPartialReply1[] = { 0x00 };
239 const char kSOCKSPartialReply2[] = { 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; 239 const char kSOCKSPartialReply2[] = { 0x5A, 0x00, 0x00, 0, 0, 0, 0 };
240 240
241 MockWrite data_writes[] = { 241 MockWrite data_writes[] = {
242 MockWrite(ASYNC, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) }; 242 MockWrite(ASYNC, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) };
243 MockRead data_reads[] = { 243 MockRead data_reads[] = {
244 MockRead(ASYNC, kSOCKSPartialReply1, arraysize(kSOCKSPartialReply1)), 244 MockRead(ASYNC, kSOCKSPartialReply1, arraysize(kSOCKSPartialReply1)),
245 MockRead(ASYNC, kSOCKSPartialReply2, arraysize(kSOCKSPartialReply2)) }; 245 MockRead(ASYNC, kSOCKSPartialReply2, arraysize(kSOCKSPartialReply2)) };
246 CapturingNetLog log(CapturingNetLog::kUnbounded); 246 CapturingNetLog log;
247 247
248 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 248 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
249 data_writes, arraysize(data_writes), 249 data_writes, arraysize(data_writes),
250 host_resolver_.get(), 250 host_resolver_.get(),
251 "localhost", 80, 251 "localhost", 80,
252 &log)); 252 &log));
253 253
254 int rv = user_sock_->Connect(callback_.callback()); 254 int rv = user_sock_->Connect(callback_.callback());
255 EXPECT_EQ(ERR_IO_PENDING, rv); 255 EXPECT_EQ(ERR_IO_PENDING, rv);
256 net::CapturingNetLog::CapturedEntryList entries; 256 CapturingNetLog::CapturedEntryList entries;
257 log.GetEntries(&entries); 257 log.GetEntries(&entries);
258 EXPECT_TRUE(LogContainsBeginEvent( 258 EXPECT_TRUE(LogContainsBeginEvent(
259 entries, 0, NetLog::TYPE_SOCKS_CONNECT)); 259 entries, 0, NetLog::TYPE_SOCKS_CONNECT));
260 260
261 rv = callback_.WaitForResult(); 261 rv = callback_.WaitForResult();
262 EXPECT_EQ(OK, rv); 262 EXPECT_EQ(OK, rv);
263 EXPECT_TRUE(user_sock_->IsConnected()); 263 EXPECT_TRUE(user_sock_->IsConnected());
264 log.GetEntries(&entries); 264 log.GetEntries(&entries);
265 EXPECT_TRUE(LogContainsEndEvent( 265 EXPECT_TRUE(LogContainsEndEvent(
266 entries, -1, NetLog::TYPE_SOCKS_CONNECT)); 266 entries, -1, NetLog::TYPE_SOCKS_CONNECT));
267 } 267 }
268 268
269 // Tests scenario when the client sends the handshake request in 269 // Tests scenario when the client sends the handshake request in
270 // more than one packet. 270 // more than one packet.
271 TEST_F(SOCKSClientSocketTest, PartialClientWrites) { 271 TEST_F(SOCKSClientSocketTest, PartialClientWrites) {
272 const char kSOCKSPartialRequest1[] = { 0x04, 0x01 }; 272 const char kSOCKSPartialRequest1[] = { 0x04, 0x01 };
273 const char kSOCKSPartialRequest2[] = { 0x00, 0x50, 127, 0, 0, 1, 0 }; 273 const char kSOCKSPartialRequest2[] = { 0x00, 0x50, 127, 0, 0, 1, 0 };
274 274
275 MockWrite data_writes[] = { 275 MockWrite data_writes[] = {
276 MockWrite(ASYNC, arraysize(kSOCKSPartialRequest1)), 276 MockWrite(ASYNC, arraysize(kSOCKSPartialRequest1)),
277 // simulate some empty writes 277 // simulate some empty writes
278 MockWrite(ASYNC, 0), 278 MockWrite(ASYNC, 0),
279 MockWrite(ASYNC, 0), 279 MockWrite(ASYNC, 0),
280 MockWrite(ASYNC, kSOCKSPartialRequest2, 280 MockWrite(ASYNC, kSOCKSPartialRequest2,
281 arraysize(kSOCKSPartialRequest2)) }; 281 arraysize(kSOCKSPartialRequest2)) };
282 MockRead data_reads[] = { 282 MockRead data_reads[] = {
283 MockRead(ASYNC, kSOCKSOkReply, arraysize(kSOCKSOkReply)) }; 283 MockRead(ASYNC, kSOCKSOkReply, arraysize(kSOCKSOkReply)) };
284 CapturingNetLog log(CapturingNetLog::kUnbounded); 284 CapturingNetLog log;
285 285
286 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 286 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
287 data_writes, arraysize(data_writes), 287 data_writes, arraysize(data_writes),
288 host_resolver_.get(), 288 host_resolver_.get(),
289 "localhost", 80, 289 "localhost", 80,
290 &log)); 290 &log));
291 291
292 int rv = user_sock_->Connect(callback_.callback()); 292 int rv = user_sock_->Connect(callback_.callback());
293 EXPECT_EQ(ERR_IO_PENDING, rv); 293 EXPECT_EQ(ERR_IO_PENDING, rv);
294 net::CapturingNetLog::CapturedEntryList entries; 294 CapturingNetLog::CapturedEntryList entries;
295 log.GetEntries(&entries); 295 log.GetEntries(&entries);
296 EXPECT_TRUE(LogContainsBeginEvent( 296 EXPECT_TRUE(LogContainsBeginEvent(
297 entries, 0, NetLog::TYPE_SOCKS_CONNECT)); 297 entries, 0, NetLog::TYPE_SOCKS_CONNECT));
298 298
299 rv = callback_.WaitForResult(); 299 rv = callback_.WaitForResult();
300 EXPECT_EQ(OK, rv); 300 EXPECT_EQ(OK, rv);
301 EXPECT_TRUE(user_sock_->IsConnected()); 301 EXPECT_TRUE(user_sock_->IsConnected());
302 log.GetEntries(&entries); 302 log.GetEntries(&entries);
303 EXPECT_TRUE(LogContainsEndEvent( 303 EXPECT_TRUE(LogContainsEndEvent(
304 entries, -1, NetLog::TYPE_SOCKS_CONNECT)); 304 entries, -1, NetLog::TYPE_SOCKS_CONNECT));
305 } 305 }
306 306
307 // Tests the case when the server sends a smaller sized handshake data 307 // Tests the case when the server sends a smaller sized handshake data
308 // and closes the connection. 308 // and closes the connection.
309 TEST_F(SOCKSClientSocketTest, FailedSocketRead) { 309 TEST_F(SOCKSClientSocketTest, FailedSocketRead) {
310 MockWrite data_writes[] = { 310 MockWrite data_writes[] = {
311 MockWrite(ASYNC, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) }; 311 MockWrite(ASYNC, kSOCKSOkRequest, arraysize(kSOCKSOkRequest)) };
312 MockRead data_reads[] = { 312 MockRead data_reads[] = {
313 MockRead(ASYNC, kSOCKSOkReply, arraysize(kSOCKSOkReply) - 2), 313 MockRead(ASYNC, kSOCKSOkReply, arraysize(kSOCKSOkReply) - 2),
314 // close connection unexpectedly 314 // close connection unexpectedly
315 MockRead(SYNCHRONOUS, 0) }; 315 MockRead(SYNCHRONOUS, 0) };
316 CapturingNetLog log(CapturingNetLog::kUnbounded); 316 CapturingNetLog log;
317 317
318 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads), 318 user_sock_.reset(BuildMockSocket(data_reads, arraysize(data_reads),
319 data_writes, arraysize(data_writes), 319 data_writes, arraysize(data_writes),
320 host_resolver_.get(), 320 host_resolver_.get(),
321 "localhost", 80, 321 "localhost", 80,
322 &log)); 322 &log));
323 323
324 int rv = user_sock_->Connect(callback_.callback()); 324 int rv = user_sock_->Connect(callback_.callback());
325 EXPECT_EQ(ERR_IO_PENDING, rv); 325 EXPECT_EQ(ERR_IO_PENDING, rv);
326 net::CapturingNetLog::CapturedEntryList entries; 326 CapturingNetLog::CapturedEntryList entries;
327 log.GetEntries(&entries); 327 log.GetEntries(&entries);
328 EXPECT_TRUE(LogContainsBeginEvent( 328 EXPECT_TRUE(LogContainsBeginEvent(
329 entries, 0, NetLog::TYPE_SOCKS_CONNECT)); 329 entries, 0, NetLog::TYPE_SOCKS_CONNECT));
330 330
331 rv = callback_.WaitForResult(); 331 rv = callback_.WaitForResult();
332 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv); 332 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv);
333 EXPECT_FALSE(user_sock_->IsConnected()); 333 EXPECT_FALSE(user_sock_->IsConnected());
334 log.GetEntries(&entries); 334 log.GetEntries(&entries);
335 EXPECT_TRUE(LogContainsEndEvent( 335 EXPECT_TRUE(LogContainsEndEvent(
336 entries, -1, NetLog::TYPE_SOCKS_CONNECT)); 336 entries, -1, NetLog::TYPE_SOCKS_CONNECT));
337 } 337 }
338 338
339 // Tries to connect to an unknown hostname. Should fail rather than 339 // Tries to connect to an unknown hostname. Should fail rather than
340 // falling back to SOCKS4a. 340 // falling back to SOCKS4a.
341 TEST_F(SOCKSClientSocketTest, FailedDNS) { 341 TEST_F(SOCKSClientSocketTest, FailedDNS) {
342 const char hostname[] = "unresolved.ipv4.address"; 342 const char hostname[] = "unresolved.ipv4.address";
343 343
344 host_resolver_->rules()->AddSimulatedFailure(hostname); 344 host_resolver_->rules()->AddSimulatedFailure(hostname);
345 345
346 CapturingNetLog log(CapturingNetLog::kUnbounded); 346 CapturingNetLog log;
347 347
348 user_sock_.reset(BuildMockSocket(NULL, 0, 348 user_sock_.reset(BuildMockSocket(NULL, 0,
349 NULL, 0, 349 NULL, 0,
350 host_resolver_.get(), 350 host_resolver_.get(),
351 hostname, 80, 351 hostname, 80,
352 &log)); 352 &log));
353 353
354 int rv = user_sock_->Connect(callback_.callback()); 354 int rv = user_sock_->Connect(callback_.callback());
355 EXPECT_EQ(ERR_IO_PENDING, rv); 355 EXPECT_EQ(ERR_IO_PENDING, rv);
356 net::CapturingNetLog::CapturedEntryList entries; 356 CapturingNetLog::CapturedEntryList entries;
357 log.GetEntries(&entries); 357 log.GetEntries(&entries);
358 EXPECT_TRUE(LogContainsBeginEvent( 358 EXPECT_TRUE(LogContainsBeginEvent(
359 entries, 0, NetLog::TYPE_SOCKS_CONNECT)); 359 entries, 0, NetLog::TYPE_SOCKS_CONNECT));
360 360
361 rv = callback_.WaitForResult(); 361 rv = callback_.WaitForResult();
362 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, rv); 362 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, rv);
363 EXPECT_FALSE(user_sock_->IsConnected()); 363 EXPECT_FALSE(user_sock_->IsConnected());
364 log.GetEntries(&entries); 364 log.GetEntries(&entries);
365 EXPECT_TRUE(LogContainsEndEvent( 365 EXPECT_TRUE(LogContainsEndEvent(
366 entries, -1, NetLog::TYPE_SOCKS_CONNECT)); 366 entries, -1, NetLog::TYPE_SOCKS_CONNECT));
(...skipping 28 matching lines...) Expand all
395 // Disconnect the SOCKS socket -- this should cancel the outstanding resolve. 395 // Disconnect the SOCKS socket -- this should cancel the outstanding resolve.
396 user_sock_->Disconnect(); 396 user_sock_->Disconnect();
397 397
398 EXPECT_FALSE(hanging_resolver->HasOutstandingRequest()); 398 EXPECT_FALSE(hanging_resolver->HasOutstandingRequest());
399 399
400 EXPECT_FALSE(user_sock_->IsConnected()); 400 EXPECT_FALSE(user_sock_->IsConnected());
401 EXPECT_FALSE(user_sock_->IsConnectedAndIdle()); 401 EXPECT_FALSE(user_sock_->IsConnectedAndIdle());
402 } 402 }
403 403
404 } // namespace net 404 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/socks5_client_socket_unittest.cc ('k') | net/socket/ssl_client_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698