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

Side by Side Diff: webrtc/base/virtualsocket_unittest.cc

Issue 1944683002: Read recv timestamps from socket (posix only). (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 4 years, 7 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 | « webrtc/base/testutils.h ('k') | webrtc/base/virtualsocketserver.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 /* 1 /*
2 * Copyright 2006 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2006 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 EXPECT_EQ(b->GetRemoteAddress(), a->GetLocalAddress()); 457 EXPECT_EQ(b->GetRemoteAddress(), a->GetLocalAddress());
458 458
459 EXPECT_EQ(1, a->Send("a", 1)); 459 EXPECT_EQ(1, a->Send("a", 1));
460 b->Close(); 460 b->Close();
461 EXPECT_EQ(1, a->Send("b", 1)); 461 EXPECT_EQ(1, a->Send("b", 1));
462 462
463 ss_->ProcessMessagesUntilIdle(); 463 ss_->ProcessMessagesUntilIdle();
464 464
465 char buffer[10]; 465 char buffer[10];
466 EXPECT_FALSE(sink.Check(b.get(), testing::SSE_READ)); 466 EXPECT_FALSE(sink.Check(b.get(), testing::SSE_READ));
467 EXPECT_EQ(-1, b->Recv(buffer, 10)); 467 EXPECT_EQ(-1, b->Recv(buffer, 10, nullptr));
468 468
469 EXPECT_TRUE(sink.Check(a, testing::SSE_CLOSE)); 469 EXPECT_TRUE(sink.Check(a, testing::SSE_CLOSE));
470 EXPECT_EQ(a->GetState(), AsyncSocket::CS_CLOSED); 470 EXPECT_EQ(a->GetState(), AsyncSocket::CS_CLOSED);
471 EXPECT_EQ(a->GetRemoteAddress(), kEmptyAddr); 471 EXPECT_EQ(a->GetRemoteAddress(), kEmptyAddr);
472 472
473 // No signal for Closer 473 // No signal for Closer
474 EXPECT_FALSE(sink.Check(b.get(), testing::SSE_CLOSE)); 474 EXPECT_FALSE(sink.Check(b.get(), testing::SSE_CLOSE));
475 EXPECT_EQ(b->GetState(), AsyncSocket::CS_CLOSED); 475 EXPECT_EQ(b->GetState(), AsyncSocket::CS_CLOSED);
476 EXPECT_EQ(b->GetRemoteAddress(), kEmptyAddr); 476 EXPECT_EQ(b->GetRemoteAddress(), kEmptyAddr);
477 } 477 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 ss_->ProcessMessagesUntilIdle(); 524 ss_->ProcessMessagesUntilIdle();
525 EXPECT_FALSE(sink.Check(a, testing::SSE_WRITE)); 525 EXPECT_FALSE(sink.Check(a, testing::SSE_WRITE));
526 EXPECT_FALSE(sink.Check(b, testing::SSE_READ)); 526 EXPECT_FALSE(sink.Check(b, testing::SSE_READ));
527 527
528 // No more room in send or receive buffer 528 // No more room in send or receive buffer
529 result = a->Send(send_buffer + send_pos, kDataSize - send_pos); 529 result = a->Send(send_buffer + send_pos, kDataSize - send_pos);
530 EXPECT_EQ(-1, result); 530 EXPECT_EQ(-1, result);
531 EXPECT_TRUE(a->IsBlocking()); 531 EXPECT_TRUE(a->IsBlocking());
532 532
533 // Read a subset of the data 533 // Read a subset of the data
534 result = b->Recv(recv_buffer + recv_pos, 500); 534 result = b->Recv(recv_buffer + recv_pos, 500, nullptr);
535 EXPECT_EQ(500, result); 535 EXPECT_EQ(500, result);
536 recv_pos += result; 536 recv_pos += result;
537 537
538 ss_->ProcessMessagesUntilIdle(); 538 ss_->ProcessMessagesUntilIdle();
539 EXPECT_TRUE(sink.Check(a, testing::SSE_WRITE)); 539 EXPECT_TRUE(sink.Check(a, testing::SSE_WRITE));
540 EXPECT_TRUE(sink.Check(b, testing::SSE_READ)); 540 EXPECT_TRUE(sink.Check(b, testing::SSE_READ));
541 541
542 // Room for more on the sending side 542 // Room for more on the sending side
543 result = a->Send(send_buffer + send_pos, kDataSize - send_pos); 543 result = a->Send(send_buffer + send_pos, kDataSize - send_pos);
544 EXPECT_EQ(500, result); 544 EXPECT_EQ(500, result);
545 send_pos += result; 545 send_pos += result;
546 546
547 // Empty the recv buffer 547 // Empty the recv buffer
548 while (true) { 548 while (true) {
549 result = b->Recv(recv_buffer + recv_pos, kDataSize - recv_pos); 549 result = b->Recv(recv_buffer + recv_pos, kDataSize - recv_pos, nullptr);
550 if (result < 0) { 550 if (result < 0) {
551 EXPECT_EQ(-1, result); 551 EXPECT_EQ(-1, result);
552 EXPECT_TRUE(b->IsBlocking()); 552 EXPECT_TRUE(b->IsBlocking());
553 break; 553 break;
554 } 554 }
555 recv_pos += result; 555 recv_pos += result;
556 } 556 }
557 557
558 ss_->ProcessMessagesUntilIdle(); 558 ss_->ProcessMessagesUntilIdle();
559 EXPECT_TRUE(sink.Check(b, testing::SSE_READ)); 559 EXPECT_TRUE(sink.Check(b, testing::SSE_READ));
560 560
561 // Continue to empty the recv buffer 561 // Continue to empty the recv buffer
562 while (true) { 562 while (true) {
563 result = b->Recv(recv_buffer + recv_pos, kDataSize - recv_pos); 563 result = b->Recv(recv_buffer + recv_pos, kDataSize - recv_pos, nullptr);
564 if (result < 0) { 564 if (result < 0) {
565 EXPECT_EQ(-1, result); 565 EXPECT_EQ(-1, result);
566 EXPECT_TRUE(b->IsBlocking()); 566 EXPECT_TRUE(b->IsBlocking());
567 break; 567 break;
568 } 568 }
569 recv_pos += result; 569 recv_pos += result;
570 } 570 }
571 571
572 // Send last of the data 572 // Send last of the data
573 result = a->Send(send_buffer + send_pos, kDataSize - send_pos); 573 result = a->Send(send_buffer + send_pos, kDataSize - send_pos);
574 EXPECT_EQ(500, result); 574 EXPECT_EQ(500, result);
575 send_pos += result; 575 send_pos += result;
576 576
577 ss_->ProcessMessagesUntilIdle(); 577 ss_->ProcessMessagesUntilIdle();
578 EXPECT_TRUE(sink.Check(b, testing::SSE_READ)); 578 EXPECT_TRUE(sink.Check(b, testing::SSE_READ));
579 579
580 // Receive the last of the data 580 // Receive the last of the data
581 while (true) { 581 while (true) {
582 result = b->Recv(recv_buffer + recv_pos, kDataSize - recv_pos); 582 result = b->Recv(recv_buffer + recv_pos, kDataSize - recv_pos, nullptr);
583 if (result < 0) { 583 if (result < 0) {
584 EXPECT_EQ(-1, result); 584 EXPECT_EQ(-1, result);
585 EXPECT_TRUE(b->IsBlocking()); 585 EXPECT_TRUE(b->IsBlocking());
586 break; 586 break;
587 } 587 }
588 recv_pos += result; 588 recv_pos += result;
589 } 589 }
590 590
591 ss_->ProcessMessagesUntilIdle(); 591 ss_->ProcessMessagesUntilIdle();
592 EXPECT_FALSE(sink.Check(b, testing::SSE_READ)); 592 EXPECT_FALSE(sink.Check(b, testing::SSE_READ));
(...skipping 26 matching lines...) Expand all
619 char buffer[2] = { 0, 0 }; 619 char buffer[2] = { 0, 0 };
620 const char cNumPackets = 10; 620 const char cNumPackets = 10;
621 for (char i = 0; i < cNumPackets; ++i) { 621 for (char i = 0; i < cNumPackets; ++i) {
622 buffer[0] = '0' + i; 622 buffer[0] = '0' + i;
623 EXPECT_EQ(1, a->Send(buffer, 1)); 623 EXPECT_EQ(1, a->Send(buffer, 1));
624 } 624 }
625 625
626 ss_->ProcessMessagesUntilIdle(); 626 ss_->ProcessMessagesUntilIdle();
627 627
628 for (char i = 0; i < cNumPackets; ++i) { 628 for (char i = 0; i < cNumPackets; ++i) {
629 EXPECT_EQ(1, b->Recv(buffer, sizeof(buffer))); 629 EXPECT_EQ(1, b->Recv(buffer, sizeof(buffer), nullptr));
630 EXPECT_EQ(static_cast<char>('0' + i), buffer[0]); 630 EXPECT_EQ(static_cast<char>('0' + i), buffer[0]);
631 } 631 }
632 632
633 // Next, deliver packets at random intervals 633 // Next, deliver packets at random intervals
634 const uint32_t mean = 50; 634 const uint32_t mean = 50;
635 const uint32_t stddev = 50; 635 const uint32_t stddev = 50;
636 636
637 ss_->set_delay_mean(mean); 637 ss_->set_delay_mean(mean);
638 ss_->set_delay_stddev(stddev); 638 ss_->set_delay_stddev(stddev);
639 ss_->UpdateDelayDistribution(); 639 ss_->UpdateDelayDistribution();
640 640
641 for (char i = 0; i < cNumPackets; ++i) { 641 for (char i = 0; i < cNumPackets; ++i) {
642 buffer[0] = 'A' + i; 642 buffer[0] = 'A' + i;
643 EXPECT_EQ(1, a->Send(buffer, 1)); 643 EXPECT_EQ(1, a->Send(buffer, 1));
644 } 644 }
645 645
646 ss_->ProcessMessagesUntilIdle(); 646 ss_->ProcessMessagesUntilIdle();
647 647
648 for (char i = 0; i < cNumPackets; ++i) { 648 for (char i = 0; i < cNumPackets; ++i) {
649 EXPECT_EQ(1, b->Recv(buffer, sizeof(buffer))); 649 EXPECT_EQ(1, b->Recv(buffer, sizeof(buffer), nullptr));
650 EXPECT_EQ(static_cast<char>('A' + i), buffer[0]); 650 EXPECT_EQ(static_cast<char>('A' + i), buffer[0]);
651 } 651 }
652 } 652 }
653 653
654 // It is important that initial_addr's port has to be 0 such that the 654 // It is important that initial_addr's port has to be 0 such that the
655 // incremental port behavior could ensure the 2 Binds result in different 655 // incremental port behavior could ensure the 2 Binds result in different
656 // address. 656 // address.
657 void BandwidthTest(const SocketAddress& initial_addr) { 657 void BandwidthTest(const SocketAddress& initial_addr) {
658 AsyncSocket* send_socket = 658 AsyncSocket* send_socket =
659 ss_->CreateAsyncSocket(initial_addr.family(), SOCK_DGRAM); 659 ss_->CreateAsyncSocket(initial_addr.family(), SOCK_DGRAM);
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
1052 << " N=" << kTestSamples[sidx]; 1052 << " N=" << kTestSamples[sidx];
1053 EXPECT_NEAR(kStdDev, stddev, 0.1 * kStdDev) 1053 EXPECT_NEAR(kStdDev, stddev, 0.1 * kStdDev)
1054 << "M=" << kTestMean[midx] 1054 << "M=" << kTestMean[midx]
1055 << " SD=" << kStdDev 1055 << " SD=" << kStdDev
1056 << " N=" << kTestSamples[sidx]; 1056 << " N=" << kTestSamples[sidx];
1057 delete f; 1057 delete f;
1058 } 1058 }
1059 } 1059 }
1060 } 1060 }
1061 } 1061 }
OLDNEW
« no previous file with comments | « webrtc/base/testutils.h ('k') | webrtc/base/virtualsocketserver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698