| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 .WillRepeatedly(Return(true)); | 581 .WillRepeatedly(Return(true)); |
| 582 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); | 582 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); |
| 583 clock_.AdvanceTimeMilliseconds(5); | 583 clock_.AdvanceTimeMilliseconds(5); |
| 584 send_bucket_->Process(); | 584 send_bucket_->Process(); |
| 585 EXPECT_EQ(0u, send_bucket_->QueueSizePackets()); | 585 EXPECT_EQ(0u, send_bucket_->QueueSizePackets()); |
| 586 } | 586 } |
| 587 | 587 |
| 588 TEST_F(PacedSenderTest, Pause) { | 588 TEST_F(PacedSenderTest, Pause) { |
| 589 uint32_t ssrc_low_priority = 12345; | 589 uint32_t ssrc_low_priority = 12345; |
| 590 uint32_t ssrc = 12346; | 590 uint32_t ssrc = 12346; |
| 591 uint32_t ssrc_high_priority = 12347; |
| 591 uint16_t sequence_number = 1234; | 592 uint16_t sequence_number = 1234; |
| 592 int64_t capture_time_ms = clock_.TimeInMilliseconds(); | 593 int64_t capture_time_ms = clock_.TimeInMilliseconds(); |
| 593 | 594 |
| 594 EXPECT_EQ(0, send_bucket_->QueueInMs()); | 595 EXPECT_EQ(0, send_bucket_->QueueInMs()); |
| 595 | 596 |
| 596 // Due to the multiplicative factor we can send 5 packets during a send | 597 // Due to the multiplicative factor we can send 5 packets during a send |
| 597 // interval. (network capacity * multiplier / (8 bits per byte * | 598 // interval. (network capacity * multiplier / (8 bits per byte * |
| 598 // (packet size * #send intervals per second) | 599 // (packet size * #send intervals per second) |
| 599 const size_t packets_to_send_per_interval = | 600 const size_t packets_to_send_per_interval = |
| 600 kTargetBitrateBps * PacedSender::kDefaultPaceMultiplier / (8 * 250 * 200); | 601 kTargetBitrateBps * PacedSender::kDefaultPaceMultiplier / (8 * 250 * 200); |
| 601 for (size_t i = 0; i < packets_to_send_per_interval; ++i) { | 602 for (size_t i = 0; i < packets_to_send_per_interval; ++i) { |
| 602 SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number++, | 603 SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number++, |
| 603 clock_.TimeInMilliseconds(), 250, false); | 604 clock_.TimeInMilliseconds(), 250, false); |
| 604 } | 605 } |
| 605 | 606 |
| 606 send_bucket_->Process(); | 607 send_bucket_->Process(); |
| 607 | 608 |
| 608 send_bucket_->Pause(); | 609 send_bucket_->Pause(); |
| 609 | 610 |
| 610 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, | 611 for (size_t i = 0; i < packets_to_send_per_interval; ++i) { |
| 611 sequence_number++, capture_time_ms, 250, false); | 612 send_bucket_->InsertPacket(PacedSender::kLowPriority, ssrc_low_priority, |
| 612 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, | 613 sequence_number++, capture_time_ms, 250, false); |
| 613 sequence_number++, capture_time_ms, 250, false); | 614 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, |
| 614 send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc, | 615 sequence_number++, capture_time_ms, 250, false); |
| 615 sequence_number++, capture_time_ms, 250, false); | 616 send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc_high_priority, |
| 616 | 617 sequence_number++, capture_time_ms, 250, false); |
| 618 } |
| 617 clock_.AdvanceTimeMilliseconds(10000); | 619 clock_.AdvanceTimeMilliseconds(10000); |
| 618 int64_t second_capture_time_ms = clock_.TimeInMilliseconds(); | 620 int64_t second_capture_time_ms = clock_.TimeInMilliseconds(); |
| 621 for (size_t i = 0; i < packets_to_send_per_interval; ++i) { |
| 622 send_bucket_->InsertPacket(PacedSender::kLowPriority, ssrc_low_priority, |
| 623 sequence_number++, second_capture_time_ms, 250, |
| 624 false); |
| 625 send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, |
| 626 sequence_number++, second_capture_time_ms, 250, |
| 627 false); |
| 628 send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc_high_priority, |
| 629 sequence_number++, second_capture_time_ms, 250, |
| 630 false); |
| 631 } |
| 619 | 632 |
| 620 // Expect everything to be queued. | 633 // Expect everything to be queued. |
| 621 send_bucket_->InsertPacket(PacedSender::kLowPriority, ssrc_low_priority, | 634 EXPECT_EQ(second_capture_time_ms - capture_time_ms, |
| 622 sequence_number++, second_capture_time_ms, 250, | |
| 623 false); | |
| 624 | |
| 625 EXPECT_EQ(clock_.TimeInMilliseconds() - capture_time_ms, | |
| 626 send_bucket_->QueueInMs()); | 635 send_bucket_->QueueInMs()); |
| 627 | 636 |
| 628 // Expect no packet to come out while paused. | 637 // Expect only high priority packets to come out while paused. |
| 629 EXPECT_CALL(callback_, TimeToSendPadding(_, _)).Times(0); | 638 EXPECT_CALL(callback_, TimeToSendPadding(_, _)).Times(0); |
| 630 EXPECT_CALL(callback_, TimeToSendPacket(_, _, _, _, _)).Times(0); | 639 EXPECT_CALL(callback_, TimeToSendPacket(_, _, _, _, _)).Times(0); |
| 640 EXPECT_CALL(callback_, |
| 641 TimeToSendPacket(ssrc_high_priority, _, capture_time_ms, _, _)) |
| 642 .Times(packets_to_send_per_interval) |
| 643 .WillRepeatedly(Return(true)); |
| 644 EXPECT_CALL(callback_, TimeToSendPacket(ssrc_high_priority, _, |
| 645 second_capture_time_ms, _, _)) |
| 646 .Times(packets_to_send_per_interval) |
| 647 .WillRepeatedly(Return(true)); |
| 631 | 648 |
| 632 for (int i = 0; i < 10; ++i) { | 649 for (int i = 0; i < 10; ++i) { |
| 633 clock_.AdvanceTimeMilliseconds(5); | 650 clock_.AdvanceTimeMilliseconds(5); |
| 634 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); | 651 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); |
| 635 send_bucket_->Process(); | 652 send_bucket_->Process(); |
| 636 } | 653 } |
| 637 // Expect high prio packets to come out first followed by all packets in the | 654 |
| 638 // way they were added. | 655 // Expect normal prio packets to come out first (in capture order) |
| 639 EXPECT_CALL(callback_, TimeToSendPacket(_, _, capture_time_ms, false, _)) | 656 // followed by all low prio packets (in capture order). |
| 640 .Times(3) | 657 { |
| 641 .WillRepeatedly(Return(true)); | 658 ::testing::InSequence sequence; |
| 642 EXPECT_CALL(callback_, | 659 for (size_t i = 0; i < packets_to_send_per_interval; ++i) { |
| 643 TimeToSendPacket(_, _, second_capture_time_ms, false, _)) | 660 EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, capture_time_ms, _, _)) |
| 644 .Times(1) | 661 .Times(1) |
| 645 .WillRepeatedly(Return(true)); | 662 .WillRepeatedly(Return(true)); |
| 663 } |
| 664 for (size_t i = 0; i < packets_to_send_per_interval; ++i) { |
| 665 EXPECT_CALL(callback_, |
| 666 TimeToSendPacket(ssrc, _, second_capture_time_ms, _, _)) |
| 667 .Times(1) |
| 668 .WillRepeatedly(Return(true)); |
| 669 } |
| 670 for (size_t i = 0; i < packets_to_send_per_interval; ++i) { |
| 671 EXPECT_CALL(callback_, |
| 672 TimeToSendPacket(ssrc_low_priority, _, capture_time_ms, _, _)) |
| 673 .Times(1) |
| 674 .WillRepeatedly(Return(true)); |
| 675 } |
| 676 for (size_t i = 0; i < packets_to_send_per_interval; ++i) { |
| 677 EXPECT_CALL(callback_, TimeToSendPacket(ssrc_low_priority, _, |
| 678 second_capture_time_ms, _, _)) |
| 679 .Times(1) |
| 680 .WillRepeatedly(Return(true)); |
| 681 } |
| 682 } |
| 646 send_bucket_->Resume(); | 683 send_bucket_->Resume(); |
| 647 | 684 |
| 648 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); | 685 for (size_t i = 0; i < 4; i++) { |
| 649 clock_.AdvanceTimeMilliseconds(5); | 686 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); |
| 650 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); | 687 clock_.AdvanceTimeMilliseconds(5); |
| 651 send_bucket_->Process(); | 688 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); |
| 689 send_bucket_->Process(); |
| 690 } |
| 652 | 691 |
| 653 EXPECT_EQ(0, send_bucket_->QueueInMs()); | 692 EXPECT_EQ(0, send_bucket_->QueueInMs()); |
| 654 } | 693 } |
| 655 | 694 |
| 656 TEST_F(PacedSenderTest, ResendPacket) { | 695 TEST_F(PacedSenderTest, ResendPacket) { |
| 657 uint32_t ssrc = 12346; | 696 uint32_t ssrc = 12346; |
| 658 uint16_t sequence_number = 1234; | 697 uint16_t sequence_number = 1234; |
| 659 int64_t capture_time_ms = clock_.TimeInMilliseconds(); | 698 int64_t capture_time_ms = clock_.TimeInMilliseconds(); |
| 660 EXPECT_EQ(0, send_bucket_->QueueInMs()); | 699 EXPECT_EQ(0, send_bucket_->QueueInMs()); |
| 661 | 700 |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 983 | 1022 |
| 984 // No more probing packets. | 1023 // No more probing packets. |
| 985 EXPECT_CALL(callback_, TimeToSendPadding(_, PacketInfo::kNotAProbe)) | 1024 EXPECT_CALL(callback_, TimeToSendPadding(_, PacketInfo::kNotAProbe)) |
| 986 .Times(1) | 1025 .Times(1) |
| 987 .WillRepeatedly(Return(500)); | 1026 .WillRepeatedly(Return(500)); |
| 988 send_bucket_->Process(); | 1027 send_bucket_->Process(); |
| 989 } | 1028 } |
| 990 | 1029 |
| 991 } // namespace test | 1030 } // namespace test |
| 992 } // namespace webrtc | 1031 } // namespace webrtc |
| OLD | NEW |