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 633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
644 false); | 644 false); |
645 send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc_high_priority, | 645 send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc_high_priority, |
646 sequence_number++, second_capture_time_ms, 250, | 646 sequence_number++, second_capture_time_ms, 250, |
647 false); | 647 false); |
648 } | 648 } |
649 | 649 |
650 // Expect everything to be queued. | 650 // Expect everything to be queued. |
651 EXPECT_EQ(second_capture_time_ms - capture_time_ms, | 651 EXPECT_EQ(second_capture_time_ms - capture_time_ms, |
652 send_bucket_->QueueInMs()); | 652 send_bucket_->QueueInMs()); |
653 | 653 |
654 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); | 654 for (int i = 0; i < 10; ++i) { |
655 EXPECT_CALL(callback_, TimeToSendPadding(1, _)).Times(1); | 655 clock_.AdvanceTimeMilliseconds(5); |
656 send_bucket_->Process(); | |
657 | |
658 int64_t expected_time_until_send = 500; | |
659 EXPECT_CALL(callback_, TimeToSendPadding(1, _)).Times(1); | |
660 while (expected_time_until_send >= 0) { | |
661 // TimeUntilNextProcess must not return 0 when paused. If it does, | 656 // TimeUntilNextProcess must not return 0 when paused. If it does, |
662 // we risk running a busy loop, so ideally it should return a large value. | 657 // we risk running a busy loop, so ideally it should return a large value. |
663 EXPECT_EQ(expected_time_until_send, send_bucket_->TimeUntilNextProcess()); | 658 EXPECT_GE(send_bucket_->TimeUntilNextProcess(), 1000); |
664 if (expected_time_until_send == 0) | 659 send_bucket_->Process(); |
665 send_bucket_->Process(); | |
666 clock_.AdvanceTimeMilliseconds(5); | |
667 expected_time_until_send -= 5; | |
668 } | 660 } |
669 | 661 |
670 // Expect high prio packets to come out first followed by normal | 662 // Expect high prio packets to come out first followed by normal |
671 // prio packets and low prio packets (all in capture order). | 663 // prio packets and low prio packets (all in capture order). |
672 { | 664 { |
673 ::testing::InSequence sequence; | 665 ::testing::InSequence sequence; |
674 EXPECT_CALL(callback_, | 666 EXPECT_CALL(callback_, |
675 TimeToSendPacket(ssrc_high_priority, _, capture_time_ms, _, _)) | 667 TimeToSendPacket(ssrc_high_priority, _, capture_time_ms, _, _)) |
676 .Times(packets_to_send_per_interval) | 668 .Times(packets_to_send_per_interval) |
677 .WillRepeatedly(Return(true)); | 669 .WillRepeatedly(Return(true)); |
(...skipping 22 matching lines...) Expand all Loading... |
700 for (size_t i = 0; i < packets_to_send_per_interval; ++i) { | 692 for (size_t i = 0; i < packets_to_send_per_interval; ++i) { |
701 EXPECT_CALL(callback_, TimeToSendPacket(ssrc_low_priority, _, | 693 EXPECT_CALL(callback_, TimeToSendPacket(ssrc_low_priority, _, |
702 second_capture_time_ms, _, _)) | 694 second_capture_time_ms, _, _)) |
703 .Times(1) | 695 .Times(1) |
704 .WillRepeatedly(Return(true)); | 696 .WillRepeatedly(Return(true)); |
705 } | 697 } |
706 } | 698 } |
707 send_bucket_->Resume(); | 699 send_bucket_->Resume(); |
708 | 700 |
709 for (size_t i = 0; i < 4; i++) { | 701 for (size_t i = 0; i < 4; i++) { |
| 702 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); |
| 703 clock_.AdvanceTimeMilliseconds(5); |
710 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); | 704 EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); |
711 send_bucket_->Process(); | 705 send_bucket_->Process(); |
712 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); | |
713 clock_.AdvanceTimeMilliseconds(5); | |
714 } | 706 } |
715 | 707 |
716 EXPECT_EQ(0, send_bucket_->QueueInMs()); | 708 EXPECT_EQ(0, send_bucket_->QueueInMs()); |
717 } | 709 } |
718 | 710 |
719 TEST_F(PacedSenderTest, ResendPacket) { | 711 TEST_F(PacedSenderTest, ResendPacket) { |
720 uint32_t ssrc = 12346; | 712 uint32_t ssrc = 12346; |
721 uint16_t sequence_number = 1234; | 713 uint16_t sequence_number = 1234; |
722 int64_t capture_time_ms = clock_.TimeInMilliseconds(); | 714 int64_t capture_time_ms = clock_.TimeInMilliseconds(); |
723 EXPECT_EQ(0, send_bucket_->QueueInMs()); | 715 EXPECT_EQ(0, send_bucket_->QueueInMs()); |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1097 .WillRepeatedly(Return(0)); | 1089 .WillRepeatedly(Return(0)); |
1098 send_bucket_->Process(); | 1090 send_bucket_->Process(); |
1099 EXPECT_EQ(1, send_bucket_->TimeUntilNextProcess()); | 1091 EXPECT_EQ(1, send_bucket_->TimeUntilNextProcess()); |
1100 clock_.AdvanceTimeMilliseconds(1); | 1092 clock_.AdvanceTimeMilliseconds(1); |
1101 send_bucket_->Process(); | 1093 send_bucket_->Process(); |
1102 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); | 1094 EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); |
1103 } | 1095 } |
1104 | 1096 |
1105 } // namespace test | 1097 } // namespace test |
1106 } // namespace webrtc | 1098 } // namespace webrtc |
OLD | NEW |