| 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 453 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 464   send_bucket_->Process(); | 464   send_bucket_->Process(); | 
| 465 | 465 | 
| 466   // Expect normal and low priority to be queued and high to pass through. | 466   // Expect normal and low priority to be queued and high to pass through. | 
| 467   send_bucket_->InsertPacket(PacedSender::kLowPriority, ssrc_low_priority, | 467   send_bucket_->InsertPacket(PacedSender::kLowPriority, ssrc_low_priority, | 
| 468                              sequence_number++, capture_time_ms_low_priority, | 468                              sequence_number++, capture_time_ms_low_priority, | 
| 469                              250, false); | 469                              250, false); | 
| 470   send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, | 470   send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, | 
| 471                              sequence_number++, capture_time_ms, 250, false); | 471                              sequence_number++, capture_time_ms, 250, false); | 
| 472   send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, | 472   send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, | 
| 473                              sequence_number++, capture_time_ms, 250, false); | 473                              sequence_number++, capture_time_ms, 250, false); | 
|  | 474   send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, | 
|  | 475                              sequence_number++, capture_time_ms, 250, false); | 
| 474   send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc, | 476   send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc, | 
| 475                              sequence_number++, capture_time_ms, 250, false); | 477                              sequence_number++, capture_time_ms, 250, false); | 
| 476 | 478 | 
| 477   // Expect all high and normal priority to be sent out first. | 479   // Expect all high and normal priority to be sent out first. | 
| 478   EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0); | 480   EXPECT_CALL(callback_, TimeToSendPadding(_)).Times(0); | 
| 479   EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, capture_time_ms, false)) | 481   EXPECT_CALL(callback_, TimeToSendPacket(ssrc, _, capture_time_ms, false)) | 
| 480       .Times(3) | 482       .Times(4) | 
| 481       .WillRepeatedly(Return(true)); | 483       .WillRepeatedly(Return(true)); | 
| 482 | 484 | 
| 483   EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); | 485   EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); | 
| 484   clock_.AdvanceTimeMilliseconds(5); | 486   clock_.AdvanceTimeMilliseconds(5); | 
| 485   EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); | 487   EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); | 
| 486   EXPECT_EQ(0, send_bucket_->Process()); | 488   EXPECT_EQ(0, send_bucket_->Process()); | 
| 487 | 489 | 
| 488   EXPECT_CALL(callback_, | 490   EXPECT_CALL(callback_, | 
| 489               TimeToSendPacket( | 491               TimeToSendPacket( | 
| 490                   ssrc_low_priority, _, capture_time_ms_low_priority, false)) | 492                   ssrc_low_priority, _, capture_time_ms_low_priority, false)) | 
| 491       .Times(1) | 493       .Times(1) | 
| 492       .WillRepeatedly(Return(true)); | 494       .WillRepeatedly(Return(true)); | 
| 493 | 495 | 
| 494   EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); | 496   EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); | 
| 495   clock_.AdvanceTimeMilliseconds(5); | 497   clock_.AdvanceTimeMilliseconds(5); | 
| 496   EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); | 498   EXPECT_EQ(0, send_bucket_->TimeUntilNextProcess()); | 
| 497   EXPECT_EQ(0, send_bucket_->Process()); | 499   EXPECT_EQ(0, send_bucket_->Process()); | 
| 498 } | 500 } | 
| 499 | 501 | 
|  | 502 TEST_F(PacedSenderTest, HighPrioDoesntAffectBudget) { | 
|  | 503   uint32_t ssrc = 12346; | 
|  | 504   uint16_t sequence_number = 1234; | 
|  | 505   int64_t capture_time_ms = 56789; | 
|  | 506 | 
|  | 507   // As high prio packets doesn't affect the budget, we should be able to send | 
|  | 508   // a high number of them at once. | 
|  | 509   for (int i = 0; i < 25; ++i) { | 
|  | 510     SendAndExpectPacket(PacedSender::kHighPriority, ssrc, sequence_number++, | 
|  | 511                         capture_time_ms, 250, false); | 
|  | 512   } | 
|  | 513   send_bucket_->Process(); | 
|  | 514   // Low prio packets does affect the budget, so we should only be able to send | 
|  | 515   // 3 at once, the 4th should be queued. | 
|  | 516   for (int i = 0; i < 3; ++i) { | 
|  | 517     SendAndExpectPacket(PacedSender::kLowPriority, ssrc, sequence_number++, | 
|  | 518                         capture_time_ms, 250, false); | 
|  | 519   } | 
|  | 520   send_bucket_->InsertPacket(PacedSender::kLowPriority, ssrc, sequence_number, | 
|  | 521                              capture_time_ms, 250, false); | 
|  | 522   EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); | 
|  | 523   clock_.AdvanceTimeMilliseconds(5); | 
|  | 524   send_bucket_->Process(); | 
|  | 525   EXPECT_CALL(callback_, | 
|  | 526               TimeToSendPacket(ssrc, sequence_number++, capture_time_ms, false)) | 
|  | 527       .Times(1); | 
|  | 528   EXPECT_EQ(5, send_bucket_->TimeUntilNextProcess()); | 
|  | 529   clock_.AdvanceTimeMilliseconds(5); | 
|  | 530   send_bucket_->Process(); | 
|  | 531 } | 
|  | 532 | 
| 500 TEST_F(PacedSenderTest, Pause) { | 533 TEST_F(PacedSenderTest, Pause) { | 
| 501   uint32_t ssrc_low_priority = 12345; | 534   uint32_t ssrc_low_priority = 12345; | 
| 502   uint32_t ssrc = 12346; | 535   uint32_t ssrc = 12346; | 
| 503   uint16_t sequence_number = 1234; | 536   uint16_t sequence_number = 1234; | 
| 504   int64_t capture_time_ms = clock_.TimeInMilliseconds(); | 537   int64_t capture_time_ms = clock_.TimeInMilliseconds(); | 
| 505 | 538 | 
| 506   EXPECT_EQ(0, send_bucket_->QueueInMs()); | 539   EXPECT_EQ(0, send_bucket_->QueueInMs()); | 
| 507 | 540 | 
| 508   // Due to the multiplicative factor we can send 3 packets not 2 packets. | 541   // Due to the multiplicative factor we can send 3 packets not 2 packets. | 
| 509   SendAndExpectPacket(PacedSender::kLowPriority, | 542   SendAndExpectPacket(PacedSender::kLowPriority, | 
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 830   uint16_t sequence_number = 1234; | 863   uint16_t sequence_number = 1234; | 
| 831   const size_t kPacketSize = 1200; | 864   const size_t kPacketSize = 1200; | 
| 832   const int kBitrateBps = 10 * kPacketSize * 8;  // 10 packets per second. | 865   const int kBitrateBps = 10 * kPacketSize * 8;  // 10 packets per second. | 
| 833   const int kBitrateKbps = (kBitrateBps + 500) / 1000; | 866   const int kBitrateKbps = (kBitrateBps + 500) / 1000; | 
| 834 | 867 | 
| 835   send_bucket_->UpdateBitrate(kBitrateKbps, kBitrateKbps, kBitrateKbps); | 868   send_bucket_->UpdateBitrate(kBitrateKbps, kBitrateKbps, kBitrateKbps); | 
| 836 | 869 | 
| 837   EXPECT_EQ(0, send_bucket_->AverageQueueTimeMs()); | 870   EXPECT_EQ(0, send_bucket_->AverageQueueTimeMs()); | 
| 838 | 871 | 
| 839   int64_t first_capture_time = clock_.TimeInMilliseconds(); | 872   int64_t first_capture_time = clock_.TimeInMilliseconds(); | 
| 840   send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc, sequence_number, | 873   send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, | 
| 841                              first_capture_time, kPacketSize, false); | 874                              sequence_number, first_capture_time, kPacketSize, | 
|  | 875                              false); | 
| 842   clock_.AdvanceTimeMilliseconds(10); | 876   clock_.AdvanceTimeMilliseconds(10); | 
| 843   send_bucket_->InsertPacket(PacedSender::kHighPriority, ssrc, | 877   send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, | 
| 844                              sequence_number + 1, clock_.TimeInMilliseconds(), | 878                              sequence_number + 1, clock_.TimeInMilliseconds(), | 
| 845                              kPacketSize, false); | 879                              kPacketSize, false); | 
| 846   clock_.AdvanceTimeMilliseconds(10); | 880   clock_.AdvanceTimeMilliseconds(10); | 
| 847 | 881 | 
| 848   EXPECT_EQ((20 + 10) / 2, send_bucket_->AverageQueueTimeMs()); | 882   EXPECT_EQ((20 + 10) / 2, send_bucket_->AverageQueueTimeMs()); | 
| 849 | 883 | 
| 850   // Only first packet (queued for 20ms) should be removed, leave the second | 884   // Only first packet (queued for 20ms) should be removed, leave the second | 
| 851   // packet (queued for 10ms) alone in the queue. | 885   // packet (queued for 10ms) alone in the queue. | 
| 852   EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number, | 886   EXPECT_CALL(callback_, TimeToSendPacket(ssrc, sequence_number, | 
| 853                                           first_capture_time, false)) | 887                                           first_capture_time, false)) | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
| 865   for (int i = 0; i < 3; ++i) { | 899   for (int i = 0; i < 3; ++i) { | 
| 866     clock_.AdvanceTimeMilliseconds(30);  // Max delta. | 900     clock_.AdvanceTimeMilliseconds(30);  // Max delta. | 
| 867     send_bucket_->Process(); | 901     send_bucket_->Process(); | 
| 868   } | 902   } | 
| 869 | 903 | 
| 870   EXPECT_EQ(0, send_bucket_->AverageQueueTimeMs()); | 904   EXPECT_EQ(0, send_bucket_->AverageQueueTimeMs()); | 
| 871 } | 905 } | 
| 872 | 906 | 
| 873 }  // namespace test | 907 }  // namespace test | 
| 874 }  // namespace webrtc | 908 }  // namespace webrtc | 
| OLD | NEW | 
|---|