OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |