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

Side by Side Diff: webrtc/modules/pacing/paced_sender_unittest.cc

Issue 1524763002: Don't account for audio in the pacer budget. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Added test. Created 5 years 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/modules/pacing/paced_sender.cc ('k') | no next file » | 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 (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
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
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
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
OLDNEW
« no previous file with comments | « webrtc/modules/pacing/paced_sender.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698