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

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

Issue 7648010: SSLServerSocketTest.DataTransfer should keep reading until it has read (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 4 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 | « no previous file | no next file » | 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 // This test suite uses SSLClientSocket to test the implementation of 5 // This test suite uses SSLClientSocket to test the implementation of
6 // SSLServerSocket. In order to establish connections between the sockets 6 // SSLServerSocket. In order to establish connections between the sockets
7 // we need two additional classes: 7 // we need two additional classes:
8 // 1. FakeSocket 8 // 1. FakeSocket
9 // Connects SSL socket to FakeDataChannel. This class is just a stub. 9 // Connects SSL socket to FakeDataChannel. This class is just a stub.
10 // 10 //
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 if (client_ret == net::ERR_IO_PENDING) { 364 if (client_ret == net::ERR_IO_PENDING) {
365 ASSERT_EQ(net::OK, connect_callback.WaitForResult()); 365 ASSERT_EQ(net::OK, connect_callback.WaitForResult());
366 } 366 }
367 if (server_ret == net::ERR_IO_PENDING) { 367 if (server_ret == net::ERR_IO_PENDING) {
368 ASSERT_EQ(net::OK, handshake_callback.WaitForResult()); 368 ASSERT_EQ(net::OK, handshake_callback.WaitForResult());
369 } 369 }
370 370
371 const int kReadBufSize = 1024; 371 const int kReadBufSize = 1024;
372 scoped_refptr<net::StringIOBuffer> write_buf = 372 scoped_refptr<net::StringIOBuffer> write_buf =
373 new net::StringIOBuffer("testing123"); 373 new net::StringIOBuffer("testing123");
374 scoped_refptr<net::IOBuffer> read_buf = new net::IOBuffer(kReadBufSize); 374 scoped_refptr<net::DrainableIOBuffer> read_buf =
375 new net::DrainableIOBuffer(new net::IOBuffer(kReadBufSize),
376 kReadBufSize);
375 377
376 // Write then read. 378 // Write then read.
377 TestCompletionCallback write_callback; 379 TestCompletionCallback write_callback;
378 TestCompletionCallback read_callback; 380 TestCompletionCallback read_callback;
379 server_ret = server_socket_->Write(write_buf, write_buf->size(), 381 server_ret = server_socket_->Write(write_buf, write_buf->size(),
380 &write_callback); 382 &write_callback);
381 EXPECT_TRUE(server_ret > 0 || server_ret == net::ERR_IO_PENDING); 383 EXPECT_TRUE(server_ret > 0 || server_ret == net::ERR_IO_PENDING);
382 client_ret = client_socket_->Read(read_buf, kReadBufSize, &read_callback); 384 client_ret = client_socket_->Read(read_buf, read_buf->BytesRemaining(),
rvargas (doing something else) 2011/08/15 18:31:41 Is it important for this test that the write and t
wtc 2011/08/16 00:04:05 I am not sure either. I can implement this change
385 &read_callback);
383 EXPECT_TRUE(client_ret > 0 || client_ret == net::ERR_IO_PENDING); 386 EXPECT_TRUE(client_ret > 0 || client_ret == net::ERR_IO_PENDING);
384 387
385 if (server_ret == net::ERR_IO_PENDING) { 388 if (server_ret == net::ERR_IO_PENDING) {
rvargas (doing something else) 2011/08/15 18:31:41 This can be simplified with write_callback.GetResu
386 EXPECT_GT(write_callback.WaitForResult(), 0); 389 server_ret = write_callback.WaitForResult();
390 EXPECT_GT(server_ret, 0);
387 } 391 }
388 if (client_ret == net::ERR_IO_PENDING) { 392 if (client_ret == net::ERR_IO_PENDING) {
389 EXPECT_GT(read_callback.WaitForResult(), 0); 393 client_ret = read_callback.WaitForResult();
394 EXPECT_GT(client_ret, 0);
390 } 395 }
396 int bytes_read = client_ret;
397 read_buf->DidConsume(client_ret);
398 while (bytes_read < write_buf->size()) {
399 client_ret = client_socket_->Read(read_buf, read_buf->BytesRemaining(),
400 &read_callback);
401 EXPECT_TRUE(client_ret > 0 || client_ret == net::ERR_IO_PENDING);
402 if (client_ret == net::ERR_IO_PENDING) {
403 client_ret = read_callback.WaitForResult();
404 EXPECT_GT(client_ret, 0);
rvargas (doing something else) 2011/08/15 18:31:41 If we really care about failures, we should add co
405 }
406 bytes_read += client_ret;
rvargas (doing something else) 2011/08/15 18:31:41 nit: we could use BytesConsumed() here, instead of
407 read_buf->DidConsume(client_ret);
408 }
409 read_buf->SetOffset(0);
410 EXPECT_EQ(write_buf->size(), bytes_read);
391 EXPECT_EQ(0, memcmp(write_buf->data(), read_buf->data(), write_buf->size())); 411 EXPECT_EQ(0, memcmp(write_buf->data(), read_buf->data(), write_buf->size()));
392 412
393 // Read then write. 413 // Read then write.
rvargas (doing something else) 2011/08/15 18:31:41 Looks like we are not really doing this.
394 write_buf = new net::StringIOBuffer("hello123"); 414 write_buf = new net::StringIOBuffer("hello123");
395 server_ret = server_socket_->Read(read_buf, kReadBufSize, &read_callback); 415 server_ret = server_socket_->Read(read_buf, read_buf->BytesRemaining(),
416 &read_callback);
396 EXPECT_TRUE(server_ret > 0 || server_ret == net::ERR_IO_PENDING); 417 EXPECT_TRUE(server_ret > 0 || server_ret == net::ERR_IO_PENDING);
397 client_ret = client_socket_->Write(write_buf, write_buf->size(), 418 client_ret = client_socket_->Write(write_buf, write_buf->size(),
398 &write_callback); 419 &write_callback);
399 EXPECT_TRUE(client_ret > 0 || client_ret == net::ERR_IO_PENDING); 420 EXPECT_TRUE(client_ret > 0 || client_ret == net::ERR_IO_PENDING);
400 421
401 if (server_ret == net::ERR_IO_PENDING) { 422 if (server_ret == net::ERR_IO_PENDING) {
402 EXPECT_GT(read_callback.WaitForResult(), 0); 423 server_ret = read_callback.WaitForResult();
424 EXPECT_GT(server_ret, 0);
403 } 425 }
404 if (client_ret == net::ERR_IO_PENDING) { 426 if (client_ret == net::ERR_IO_PENDING) {
405 EXPECT_GT(write_callback.WaitForResult(), 0); 427 client_ret = write_callback.WaitForResult();
428 EXPECT_GT(client_ret, 0);
406 } 429 }
430 bytes_read = server_ret;
431 read_buf->DidConsume(server_ret);
432 while (bytes_read < write_buf->size()) {
433 server_ret = server_socket_->Read(read_buf, read_buf->BytesRemaining(),
434 &read_callback);
435 EXPECT_TRUE(server_ret > 0 || server_ret == net::ERR_IO_PENDING);
436 if (server_ret == net::ERR_IO_PENDING) {
437 server_ret = read_callback.WaitForResult();
438 EXPECT_GT(server_ret, 0);
439 }
440 bytes_read += server_ret;
441 read_buf->DidConsume(server_ret);
442 }
443 read_buf->SetOffset(0);
444 EXPECT_EQ(write_buf->size(), bytes_read);
407 EXPECT_EQ(0, memcmp(write_buf->data(), read_buf->data(), write_buf->size())); 445 EXPECT_EQ(0, memcmp(write_buf->data(), read_buf->data(), write_buf->size()));
408 } 446 }
409 447
410 // This test executes ExportKeyingMaterial() on the client and server sockets, 448 // This test executes ExportKeyingMaterial() on the client and server sockets,
411 // after connecting them, and verifies that the results match. 449 // after connecting them, and verifies that the results match.
412 // This test will fail if False Start is enabled (see crbug.com/90208). 450 // This test will fail if False Start is enabled (see crbug.com/90208).
413 TEST_F(SSLServerSocketTest, ExportKeyingMaterial) { 451 TEST_F(SSLServerSocketTest, ExportKeyingMaterial) {
414 Initialize(); 452 Initialize();
415 453
416 TestCompletionCallback connect_callback; 454 TestCompletionCallback connect_callback;
(...skipping 29 matching lines...) Expand all
446 const char* kKeyingLabelBad = "EXPERIMENTAL-server-socket-test-bad"; 484 const char* kKeyingLabelBad = "EXPERIMENTAL-server-socket-test-bad";
447 unsigned char client_bad[kKeyingMaterialSize]; 485 unsigned char client_bad[kKeyingMaterialSize];
448 rv = client_socket_->ExportKeyingMaterial(kKeyingLabelBad, kKeyingContext, 486 rv = client_socket_->ExportKeyingMaterial(kKeyingLabelBad, kKeyingContext,
449 client_bad, sizeof(client_bad)); 487 client_bad, sizeof(client_bad));
450 ASSERT_EQ(rv, net::OK); 488 ASSERT_EQ(rv, net::OK);
451 EXPECT_TRUE(memcmp(server_out, client_bad, sizeof(server_out)) != 0); 489 EXPECT_TRUE(memcmp(server_out, client_bad, sizeof(server_out)) != 0);
452 } 490 }
453 #endif 491 #endif
454 492
455 } // namespace net 493 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698