OLD | NEW |
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/tcp_client_socket.h" | 5 #include "net/socket/tcp_client_socket.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "net/base/address_list.h" | 8 #include "net/base/address_list.h" |
9 #include "net/base/host_resolver.h" | 9 #include "net/base/host_resolver.h" |
10 #include "net/base/io_buffer.h" | 10 #include "net/base/io_buffer.h" |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 scoped_refptr<IOBuffer> buf(new IOBuffer(4096)); | 270 scoped_refptr<IOBuffer> buf(new IOBuffer(4096)); |
271 uint32 bytes_read = DrainClientSocket(buf, 4096, arraysize(kServerReply) - 1, | 271 uint32 bytes_read = DrainClientSocket(buf, 4096, arraysize(kServerReply) - 1, |
272 &callback); | 272 &callback); |
273 ASSERT_EQ(bytes_read, arraysize(kServerReply) - 1); | 273 ASSERT_EQ(bytes_read, arraysize(kServerReply) - 1); |
274 | 274 |
275 // All data has been read now. Read once more to force an ERR_IO_PENDING, and | 275 // All data has been read now. Read once more to force an ERR_IO_PENDING, and |
276 // then close the server socket, and note the close. | 276 // then close the server socket, and note the close. |
277 | 277 |
278 rv = sock_->Read(buf, 4096, &callback); | 278 rv = sock_->Read(buf, 4096, &callback); |
279 ASSERT_EQ(ERR_IO_PENDING, rv); | 279 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 280 EXPECT_EQ(static_cast<int64>(std::string(kServerReply).size()), |
| 281 sock_->NumBytesRead()); |
280 CloseServerSocket(); | 282 CloseServerSocket(); |
281 EXPECT_EQ(0, callback.WaitForResult()); | 283 EXPECT_EQ(0, callback.WaitForResult()); |
282 } | 284 } |
283 | 285 |
284 TEST_P(TransportClientSocketTest, Read_SmallChunks) { | 286 TEST_P(TransportClientSocketTest, Read_SmallChunks) { |
285 TestCompletionCallback callback; | 287 TestCompletionCallback callback; |
286 int rv = sock_->Connect(&callback); | 288 int rv = sock_->Connect(&callback); |
287 if (rv != OK) { | 289 if (rv != OK) { |
288 ASSERT_EQ(rv, ERR_IO_PENDING); | 290 ASSERT_EQ(rv, ERR_IO_PENDING); |
289 | 291 |
(...skipping 12 matching lines...) Expand all Loading... |
302 rv = callback.WaitForResult(); | 304 rv = callback.WaitForResult(); |
303 | 305 |
304 ASSERT_EQ(1, rv); | 306 ASSERT_EQ(1, rv); |
305 bytes_read += rv; | 307 bytes_read += rv; |
306 } | 308 } |
307 | 309 |
308 // All data has been read now. Read once more to force an ERR_IO_PENDING, and | 310 // All data has been read now. Read once more to force an ERR_IO_PENDING, and |
309 // then close the server socket, and note the close. | 311 // then close the server socket, and note the close. |
310 | 312 |
311 rv = sock_->Read(buf, 1, &callback); | 313 rv = sock_->Read(buf, 1, &callback); |
| 314 EXPECT_EQ(static_cast<int64>(std::string(kServerReply).size()), |
| 315 sock_->NumBytesRead()); |
312 ASSERT_EQ(ERR_IO_PENDING, rv); | 316 ASSERT_EQ(ERR_IO_PENDING, rv); |
313 CloseServerSocket(); | 317 CloseServerSocket(); |
314 EXPECT_EQ(0, callback.WaitForResult()); | 318 EXPECT_EQ(0, callback.WaitForResult()); |
315 } | 319 } |
316 | 320 |
317 TEST_P(TransportClientSocketTest, Read_Interrupted) { | 321 TEST_P(TransportClientSocketTest, Read_Interrupted) { |
318 TestCompletionCallback callback; | 322 TestCompletionCallback callback; |
319 int rv = sock_->Connect(&callback); | 323 int rv = sock_->Connect(&callback); |
320 if (rv != OK) { | 324 if (rv != OK) { |
321 ASSERT_EQ(ERR_IO_PENDING, rv); | 325 ASSERT_EQ(ERR_IO_PENDING, rv); |
322 | 326 |
323 rv = callback.WaitForResult(); | 327 rv = callback.WaitForResult(); |
324 EXPECT_EQ(rv, OK); | 328 EXPECT_EQ(rv, OK); |
325 } | 329 } |
326 SendClientRequest(); | 330 SendClientRequest(); |
327 | 331 |
328 // Do a partial read and then exit. This test should not crash! | 332 // Do a partial read and then exit. This test should not crash! |
329 scoped_refptr<IOBuffer> buf(new IOBuffer(16)); | 333 scoped_refptr<IOBuffer> buf(new IOBuffer(16)); |
330 rv = sock_->Read(buf, 16, &callback); | 334 rv = sock_->Read(buf, 16, &callback); |
331 EXPECT_TRUE(rv >= 0 || rv == ERR_IO_PENDING); | 335 EXPECT_TRUE(rv >= 0 || rv == ERR_IO_PENDING); |
| 336 EXPECT_EQ(0, sock_->NumBytesRead()); |
332 | 337 |
333 if (rv == ERR_IO_PENDING) | 338 if (rv == ERR_IO_PENDING) { |
334 rv = callback.WaitForResult(); | 339 rv = callback.WaitForResult(); |
| 340 EXPECT_EQ(16, sock_->NumBytesRead()); |
| 341 } |
335 | 342 |
336 EXPECT_NE(0, rv); | 343 EXPECT_NE(0, rv); |
337 } | 344 } |
338 | 345 |
339 TEST_P(TransportClientSocketTest, DISABLED_FullDuplex_ReadFirst) { | 346 TEST_P(TransportClientSocketTest, DISABLED_FullDuplex_ReadFirst) { |
340 TestCompletionCallback callback; | 347 TestCompletionCallback callback; |
341 int rv = sock_->Connect(&callback); | 348 int rv = sock_->Connect(&callback); |
342 if (rv != OK) { | 349 if (rv != OK) { |
343 ASSERT_EQ(rv, ERR_IO_PENDING); | 350 ASSERT_EQ(rv, ERR_IO_PENDING); |
344 | 351 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 // Close the server socket, so there will at least be a 0-byte read. | 434 // Close the server socket, so there will at least be a 0-byte read. |
428 CloseServerSocket(); | 435 CloseServerSocket(); |
429 | 436 |
430 rv = callback.WaitForResult(); | 437 rv = callback.WaitForResult(); |
431 EXPECT_GE(rv, 0); | 438 EXPECT_GE(rv, 0); |
432 } | 439 } |
433 | 440 |
434 } // namespace | 441 } // namespace |
435 | 442 |
436 } // namespace net | 443 } // namespace net |
OLD | NEW |