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

Side by Side Diff: webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework_unittest.cc

Issue 1202253003: More Simulation Framework features (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Comments addressed [6] Created 5 years, 5 months 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 ASSERT_TRUE(IsSequenceNumberSorted(packets)); 325 ASSERT_TRUE(IsSequenceNumberSorted(packets));
326 for (PacketsConstIt it = packets.begin(); it != packets.end(); ++it) { 326 for (PacketsConstIt it = packets.begin(); it != packets.end(); ++it) {
327 EXPECT_LE(now_ms_ * 1000, (*it)->send_time_us()); 327 EXPECT_LE(now_ms_ * 1000, (*it)->send_time_us());
328 } 328 }
329 EXPECT_EQ(out_packets, packets.size()); 329 EXPECT_EQ(out_packets, packets.size());
330 accumulated_packets_.splice(accumulated_packets_.end(), packets); 330 accumulated_packets_.splice(accumulated_packets_.end(), packets);
331 now_ms_ += run_for_ms; 331 now_ms_ += run_for_ms;
332 } 332 }
333 333
334 void TestDelayFilter(int64_t delay_ms) { 334 void TestDelayFilter(int64_t delay_ms) {
335 filter_.SetDelayMs(delay_ms); 335 filter_.SetOneWayDelayMs(delay_ms);
336 TestDelayFilter(1, 0, 0); // No input should yield no output 336 TestDelayFilter(1, 0, 0); // No input should yield no output
337 337
338 // Single packet 338 // Single packet
339 TestDelayFilter(0, 1, 1); 339 TestDelayFilter(0, 1, 1);
340 TestDelayFilter(delay_ms, 0, 0); 340 TestDelayFilter(delay_ms, 0, 0);
341 341
342 for (int i = 0; i < delay_ms; ++i) { 342 for (int i = 0; i < delay_ms; ++i) {
343 filter_.SetDelayMs(i); 343 filter_.SetOneWayDelayMs(i);
344 TestDelayFilter(1, 10, 10); 344 TestDelayFilter(1, 10, 10);
345 } 345 }
346 TestDelayFilter(0, 0, 0); 346 TestDelayFilter(0, 0, 0);
347 TestDelayFilter(delay_ms, 0, 0); 347 TestDelayFilter(delay_ms, 0, 0);
348 348
349 // Wait a little longer - should still see no output 349 // Wait a little longer - should still see no output
350 TestDelayFilter(delay_ms, 0, 0); 350 TestDelayFilter(delay_ms, 0, 0);
351 351
352 for (int i = 1; i < delay_ms + 1; ++i) { 352 for (int i = 1; i < delay_ms + 1; ++i) {
353 filter_.SetDelayMs(i); 353 filter_.SetOneWayDelayMs(i);
354 TestDelayFilter(1, 5, 5); 354 TestDelayFilter(1, 5, 5);
355 } 355 }
356 TestDelayFilter(0, 0, 0); 356 TestDelayFilter(0, 0, 0);
357 filter_.SetDelayMs(2 * delay_ms); 357 filter_.SetOneWayDelayMs(2 * delay_ms);
358 TestDelayFilter(1, 0, 0); 358 TestDelayFilter(1, 0, 0);
359 TestDelayFilter(delay_ms, 13, 13); 359 TestDelayFilter(delay_ms, 13, 13);
360 TestDelayFilter(delay_ms, 0, 0); 360 TestDelayFilter(delay_ms, 0, 0);
361 361
362 // Wait a little longer - should still see no output 362 // Wait a little longer - should still see no output
363 TestDelayFilter(delay_ms, 0, 0); 363 TestDelayFilter(delay_ms, 0, 0);
364 364
365 for (int i = 0; i < 2 * delay_ms; ++i) { 365 for (int i = 0; i < 2 * delay_ms; ++i) {
366 filter_.SetDelayMs(2 * delay_ms - i - 1); 366 filter_.SetOneWayDelayMs(2 * delay_ms - i - 1);
367 TestDelayFilter(1, 5, 5); 367 TestDelayFilter(1, 5, 5);
368 } 368 }
369 TestDelayFilter(0, 0, 0); 369 TestDelayFilter(0, 0, 0);
370 filter_.SetDelayMs(0); 370 filter_.SetOneWayDelayMs(0);
371 TestDelayFilter(0, 7, 7); 371 TestDelayFilter(0, 7, 7);
372 372
373 ASSERT_TRUE(IsTimeSorted(accumulated_packets_)); 373 ASSERT_TRUE(IsTimeSorted(accumulated_packets_));
374 ASSERT_TRUE(IsSequenceNumberSorted(accumulated_packets_)); 374 ASSERT_TRUE(IsSequenceNumberSorted(accumulated_packets_));
375 } 375 }
376 376
377 DelayFilter filter_; 377 DelayFilter filter_;
378 Packets accumulated_packets_; 378 Packets accumulated_packets_;
379 379
380 private: 380 private:
381 int64_t now_ms_; 381 int64_t now_ms_;
382 uint32_t sequence_number_; 382 uint32_t sequence_number_;
383 383
384 DISALLOW_COPY_AND_ASSIGN(BweTestFramework_DelayFilterTest); 384 DISALLOW_COPY_AND_ASSIGN(BweTestFramework_DelayFilterTest);
385 }; 385 };
386 386
387 TEST_F(BweTestFramework_DelayFilterTest, Delay0) { 387 TEST_F(BweTestFramework_DelayFilterTest, Delay0) {
388 TestDelayFilter(1, 0, 0); // No input should yield no output 388 TestDelayFilter(1, 0, 0); // No input should yield no output
389 TestDelayFilter(1, 10, 10); // Expect no delay (delay time is zero) 389 TestDelayFilter(1, 10, 10); // Expect no delay (delay time is zero)
390 TestDelayFilter(1, 0, 0); // Check no packets are still in buffer 390 TestDelayFilter(1, 0, 0); // Check no packets are still in buffer
391 filter_.SetDelayMs(0); 391 filter_.SetOneWayDelayMs(0);
392 TestDelayFilter(1, 5, 5); // Expect no delay (delay time is zero) 392 TestDelayFilter(1, 5, 5); // Expect no delay (delay time is zero)
393 TestDelayFilter(1, 0, 0); // Check no packets are still in buffer 393 TestDelayFilter(1, 0, 0); // Check no packets are still in buffer
394 } 394 }
395 395
396 TEST_F(BweTestFramework_DelayFilterTest, Delay1) { 396 TEST_F(BweTestFramework_DelayFilterTest, Delay1) {
397 TestDelayFilter(1); 397 TestDelayFilter(1);
398 } 398 }
399 399
400 TEST_F(BweTestFramework_DelayFilterTest, Delay2) { 400 TEST_F(BweTestFramework_DelayFilterTest, Delay2) {
401 TestDelayFilter(2); 401 TestDelayFilter(2);
402 } 402 }
403 403
404 TEST_F(BweTestFramework_DelayFilterTest, Delay20) { 404 TEST_F(BweTestFramework_DelayFilterTest, Delay20) {
405 TestDelayFilter(20); 405 TestDelayFilter(20);
406 } 406 }
407 407
408 TEST_F(BweTestFramework_DelayFilterTest, Delay100) { 408 TEST_F(BweTestFramework_DelayFilterTest, Delay100) {
409 TestDelayFilter(100); 409 TestDelayFilter(100);
410 } 410 }
411 411
412 TEST_F(BweTestFramework_DelayFilterTest, JumpToZeroDelay) { 412 TEST_F(BweTestFramework_DelayFilterTest, JumpToZeroDelay) {
413 DelayFilter delay(NULL, 0); 413 DelayFilter delay(NULL, 0);
414 Packets acc; 414 Packets acc;
415 Packets packets; 415 Packets packets;
416 416
417 // Delay a bunch of packets, accumulate them to the 'acc' list. 417 // Delay a bunch of packets, accumulate them to the 'acc' list.
418 delay.SetDelayMs(100.0f); 418 delay.SetOneWayDelayMs(100.0f);
419 for (uint32_t i = 0; i < 10; ++i) { 419 for (uint32_t i = 0; i < 10; ++i) {
420 packets.push_back(new MediaPacket(i * 100, i)); 420 packets.push_back(new MediaPacket(i * 100, i));
421 } 421 }
422 delay.RunFor(1000, &packets); 422 delay.RunFor(1000, &packets);
423 acc.splice(acc.end(), packets); 423 acc.splice(acc.end(), packets);
424 ASSERT_TRUE(IsTimeSorted(acc)); 424 ASSERT_TRUE(IsTimeSorted(acc));
425 ASSERT_TRUE(IsSequenceNumberSorted(acc)); 425 ASSERT_TRUE(IsSequenceNumberSorted(acc));
426 426
427 // Drop delay to zero, send a few more packets through the delay, append them 427 // Drop delay to zero, send a few more packets through the delay, append them
428 // to the 'acc' list and verify that it is all sorted. 428 // to the 'acc' list and verify that it is all sorted.
429 delay.SetDelayMs(0.0f); 429 delay.SetOneWayDelayMs(0.0f);
430 for (uint32_t i = 10; i < 50; ++i) { 430 for (uint32_t i = 10; i < 50; ++i) {
431 packets.push_back(new MediaPacket(i * 100, i)); 431 packets.push_back(new MediaPacket(i * 100, i));
432 } 432 }
433 delay.RunFor(1000, &packets); 433 delay.RunFor(1000, &packets);
434 acc.splice(acc.end(), packets); 434 acc.splice(acc.end(), packets);
435 ASSERT_TRUE(IsTimeSorted(acc)); 435 ASSERT_TRUE(IsTimeSorted(acc));
436 ASSERT_TRUE(IsSequenceNumberSorted(acc)); 436 ASSERT_TRUE(IsSequenceNumberSorted(acc));
437 437
438 for (auto* packet : acc) 438 for (auto* packet : acc)
439 delete packet; 439 delete packet;
440 } 440 }
441 441
442 TEST_F(BweTestFramework_DelayFilterTest, IncreasingDelay) { 442 TEST_F(BweTestFramework_DelayFilterTest, IncreasingDelay) {
443 // Gradually increase delay. 443 // Gradually increase delay.
444 for (int i = 1; i < 50; i += 4) { 444 for (int i = 1; i < 50; i += 4) {
445 TestDelayFilter(i); 445 TestDelayFilter(i);
446 } 446 }
447 // Reach a steady state. 447 // Reach a steady state.
448 filter_.SetDelayMs(100); 448 filter_.SetOneWayDelayMs(100);
449 TestDelayFilter(1, 20, 20); 449 TestDelayFilter(1, 20, 20);
450 TestDelayFilter(2, 0, 0); 450 TestDelayFilter(2, 0, 0);
451 TestDelayFilter(99, 20, 20); 451 TestDelayFilter(99, 20, 20);
452 // Drop delay back down to zero. 452 // Drop delay back down to zero.
453 filter_.SetDelayMs(0); 453 filter_.SetOneWayDelayMs(0);
454 TestDelayFilter(1, 100, 100); 454 TestDelayFilter(1, 100, 100);
455 TestDelayFilter(23010, 0, 0); 455 TestDelayFilter(23010, 0, 0);
456 ASSERT_TRUE(IsTimeSorted(accumulated_packets_)); 456 ASSERT_TRUE(IsTimeSorted(accumulated_packets_));
457 ASSERT_TRUE(IsSequenceNumberSorted(accumulated_packets_)); 457 ASSERT_TRUE(IsSequenceNumberSorted(accumulated_packets_));
458 } 458 }
459 459
460 static void TestJitterFilter(int64_t stddev_jitter_ms) { 460 static void TestJitterFilter(int64_t stddev_jitter_ms) {
461 JitterFilter filter(NULL, 0); 461 JitterFilter filter(NULL, 0);
462 filter.SetJitter(stddev_jitter_ms); 462 filter.SetJitter(stddev_jitter_ms);
463 463
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 std::vector<int64_t> send_times_us_; 662 std::vector<int64_t> send_times_us_;
663 663
664 DISALLOW_COPY_AND_ASSIGN(BweTestFramework_ChokeFilterTest); 664 DISALLOW_COPY_AND_ASSIGN(BweTestFramework_ChokeFilterTest);
665 }; 665 };
666 666
667 TEST_F(BweTestFramework_ChokeFilterTest, Short) { 667 TEST_F(BweTestFramework_ChokeFilterTest, Short) {
668 // 100ms, 100 packets, 10 kbps choke -> 1 kbit of data should have propagated. 668 // 100ms, 100 packets, 10 kbps choke -> 1 kbit of data should have propagated.
669 // That is actually just a single packet, since each packet has 1000 bits of 669 // That is actually just a single packet, since each packet has 1000 bits of
670 // payload. 670 // payload.
671 ChokeFilter filter(NULL, 0); 671 ChokeFilter filter(NULL, 0);
672 filter.SetCapacity(10); 672 filter.set_capacity_kbps(10);
673 TestChoke(&filter, 100, 100, 1); 673 TestChoke(&filter, 100, 100, 1);
674 } 674 }
675 675
676 TEST_F(BweTestFramework_ChokeFilterTest, Medium) { 676 TEST_F(BweTestFramework_ChokeFilterTest, Medium) {
677 // 100ms, 10 packets, 10 kbps choke -> 1 packet through, or 1 kbit. 677 // 100ms, 10 packets, 10 kbps choke -> 1 packet through, or 1 kbit.
678 ChokeFilter filter(NULL, 0); 678 ChokeFilter filter(NULL, 0);
679 filter.SetCapacity(10); 679 filter.set_capacity_kbps(10);
680 TestChoke(&filter, 100, 10, 1); 680 TestChoke(&filter, 100, 10, 1);
681 // 200ms, no new packets -> another packet through. 681 // 200ms, no new packets -> another packet through.
682 TestChoke(&filter, 100, 0, 1); 682 TestChoke(&filter, 100, 0, 1);
683 // 1000ms, no new packets -> 8 more packets. 683 // 1000ms, no new packets -> 8 more packets.
684 TestChoke(&filter, 800, 0, 8); 684 TestChoke(&filter, 800, 0, 8);
685 // 2000ms, no new packets -> queue is empty so no output. 685 // 2000ms, no new packets -> queue is empty so no output.
686 TestChoke(&filter, 1000, 0, 0); 686 TestChoke(&filter, 1000, 0, 0);
687 } 687 }
688 688
689 TEST_F(BweTestFramework_ChokeFilterTest, Long) { 689 TEST_F(BweTestFramework_ChokeFilterTest, Long) {
690 // 100ms, 100 packets in queue, 10 kbps choke -> 1 packet through, or 1 kbit. 690 // 100ms, 100 packets in queue, 10 kbps choke -> 1 packet through, or 1 kbit.
691 ChokeFilter filter(NULL, 0); 691 ChokeFilter filter(NULL, 0);
692 filter.SetCapacity(10); 692 filter.set_capacity_kbps(10);
693 TestChoke(&filter, 100, 100, 1); 693 TestChoke(&filter, 100, 100, 1);
694 // 200ms, no input, another packet through. 694 // 200ms, no input, another packet through.
695 TestChoke(&filter, 100, 0, 1); 695 TestChoke(&filter, 100, 0, 1);
696 // 1000ms, no input, 8 packets through. 696 // 1000ms, no input, 8 packets through.
697 TestChoke(&filter, 800, 0, 8); 697 TestChoke(&filter, 800, 0, 8);
698 // 10000ms, no input, raise choke to 100 kbps. Remaining 90 packets in queue 698 // 10000ms, no input, raise choke to 100 kbps. Remaining 90 packets in queue
699 // should be propagated, for a total of 90 kbps. 699 // should be propagated, for a total of 90 kbps.
700 filter.SetCapacity(100); 700 filter.set_capacity_kbps(100);
701 TestChoke(&filter, 9000, 0, 90); 701 TestChoke(&filter, 9000, 0, 90);
702 // 10100ms, 20 more packets -> 10 packets or 10 kbit through. 702 // 10100ms, 20 more packets -> 10 packets or 10 kbit through.
703 TestChoke(&filter, 100, 20, 10); 703 TestChoke(&filter, 100, 20, 10);
704 // 10300ms, 10 more packets -> 20 packets out. 704 // 10300ms, 10 more packets -> 20 packets out.
705 TestChoke(&filter, 200, 10, 20); 705 TestChoke(&filter, 200, 10, 20);
706 // 11300ms, no input, queue should be empty. 706 // 11300ms, no input, queue should be empty.
707 filter.SetCapacity(10); 707 filter.set_capacity_kbps(10);
708 TestChoke(&filter, 1000, 0, 0); 708 TestChoke(&filter, 1000, 0, 0);
709 } 709 }
710 710
711 TEST_F(BweTestFramework_ChokeFilterTest, MaxDelay) { 711 TEST_F(BweTestFramework_ChokeFilterTest, MaxDelay) {
712 // 10 kbps choke, 500 ms delay cap 712 // 10 kbps choke, 500 ms delay cap
713 ChokeFilter filter(NULL, 0); 713 ChokeFilter filter(NULL, 0);
714 filter.SetCapacity(10); 714 filter.set_capacity_kbps(10);
715 filter.SetMaxDelay(500); 715 filter.set_max_delay_ms(500);
716 // 100ms, 100 packets in queue, 10 kbps choke -> 1 packet through, or 1 kbit. 716 // 100ms, 100 packets in queue, 10 kbps choke -> 1 packet through, or 1 kbit.
717 TestChoke(&filter, 100, 100, 1); 717 TestChoke(&filter, 100, 100, 1);
718 CheckMaxDelay(500); 718 CheckMaxDelay(500);
719 // 500ms, no input, 4 more packets through. 719 // 500ms, no input, 4 more packets through.
720 TestChoke(&filter, 400, 0, 4); 720 TestChoke(&filter, 400, 0, 4);
721 // 10000ms, no input, remaining packets should have been dropped. 721 // 10000ms, no input, remaining packets should have been dropped.
722 TestChoke(&filter, 9500, 0, 0); 722 TestChoke(&filter, 9500, 0, 0);
723 723
724 // 100 ms delay cap 724 // 100 ms delay cap
725 filter.SetMaxDelay(100); 725 filter.set_max_delay_ms(100);
726 // 10100ms, 50 more packets -> 2 packets or 2 kbit through. 726 // 10100ms, 50 more packets -> 2 packets or 2 kbit through.
727 TestChoke(&filter, 100, 50, 2); 727 TestChoke(&filter, 100, 50, 2);
728 CheckMaxDelay(100); 728 CheckMaxDelay(100);
729 // 20000ms, no input, remaining packets in queue should have been dropped. 729 // 20000ms, no input, remaining packets in queue should have been dropped.
730 TestChoke(&filter, 9900, 0, 0); 730 TestChoke(&filter, 9900, 0, 0);
731 731
732 // Reset delay cap (0 is no cap) and verify no packets are dropped. 732 // Reset delay cap (0 is no cap) and verify no packets are dropped.
733 filter.SetCapacity(10); 733 filter.set_capacity_kbps(10);
734 filter.SetMaxDelay(0); 734 filter.set_max_delay_ms(0);
735 TestChoke(&filter, 100, 100, 2); 735 TestChoke(&filter, 100, 100, 2);
736 TestChoke(&filter, 9900, 0, 98); 736 TestChoke(&filter, 9900, 0, 98);
737 } 737 }
738 738
739 TEST_F(BweTestFramework_ChokeFilterTest, ShortTrace) { 739 TEST_F(BweTestFramework_ChokeFilterTest, ShortTrace) {
740 // According to the input file 6 packets should be transmitted within 740 // According to the input file 6 packets should be transmitted within
741 // 100 milliseconds. 741 // 100 milliseconds.
742 TraceBasedDeliveryFilter filter(NULL, 0); 742 TraceBasedDeliveryFilter filter(NULL, 0);
743 ASSERT_TRUE(filter.Init(test::ResourcePath("synthetic-trace", "rx"))); 743 ASSERT_TRUE(filter.Init(test::ResourcePath("synthetic-trace", "rx")));
744 TestChoke(&filter, 100, 100, 6); 744 TestChoke(&filter, 100, 100, 6);
745 } 745 }
746 746
747 TEST_F(BweTestFramework_ChokeFilterTest, ShortTraceTwoWraps) { 747 TEST_F(BweTestFramework_ChokeFilterTest, ShortTraceTwoWraps) {
748 // According to the input file 19 packets should be transmitted within 748 // According to the input file 19 packets should be transmitted within
749 // 280 milliseconds (at the wrapping point two packets are sent back to back). 749 // 280 milliseconds (at the wrapping point two packets are sent back to back).
750 TraceBasedDeliveryFilter filter(NULL, 0); 750 TraceBasedDeliveryFilter filter(NULL, 0);
751 ASSERT_TRUE(filter.Init(test::ResourcePath("synthetic-trace", "rx"))); 751 ASSERT_TRUE(filter.Init(test::ResourcePath("synthetic-trace", "rx")));
752 TestChoke(&filter, 280, 100, 19); 752 TestChoke(&filter, 280, 100, 19);
753 } 753 }
754 754
755 TEST_F(BweTestFramework_ChokeFilterTest, ShortTraceMaxDelay) { 755 TEST_F(BweTestFramework_ChokeFilterTest, ShortTraceMaxDelay) {
756 TraceBasedDeliveryFilter filter(NULL, 0); 756 TraceBasedDeliveryFilter filter(NULL, 0);
757 filter.SetMaxDelay(25); 757 filter.set_max_delay_ms(25);
758 ASSERT_TRUE(filter.Init(test::ResourcePath("synthetic-trace", "rx"))); 758 ASSERT_TRUE(filter.Init(test::ResourcePath("synthetic-trace", "rx")));
759 // Uses all slots up to 110 ms. Several packets are being dropped. 759 // Uses all slots up to 110 ms. Several packets are being dropped.
760 TestChoke(&filter, 110, 20, 9); 760 TestChoke(&filter, 110, 20, 9);
761 CheckMaxDelay(25); 761 CheckMaxDelay(25);
762 // Simulate enough time for the next slot (at 135 ms) to be used. This makes 762 // Simulate enough time for the next slot (at 135 ms) to be used. This makes
763 // sure that a slot isn't missed between runs. 763 // sure that a slot isn't missed between runs.
764 TestChoke(&filter, 25, 1, 1); 764 TestChoke(&filter, 25, 1, 1);
765 } 765 }
766 766
767 void TestVideoSender(VideoSender* sender, 767 void TestVideoSender(VideoSender* sender,
768 int64_t run_for_ms, 768 int64_t run_for_ms,
769 uint32_t expected_packets, 769 uint32_t expected_packets,
770 uint32_t expected_payload_size, 770 uint32_t expected_payload_size,
771 size_t expected_total_payload_size) { 771 size_t expected_total_payload_size) {
772 assert(sender); 772 assert(sender);
773 Packets packets; 773 Packets packets;
774 sender->RunFor(run_for_ms, &packets); 774 sender->RunFor(run_for_ms, &packets);
775 ASSERT_TRUE(IsTimeSorted(packets)); 775 ASSERT_TRUE(IsTimeSorted(packets));
776 ASSERT_TRUE(IsSequenceNumberSorted(packets)); 776 ASSERT_TRUE(IsSequenceNumberSorted(packets));
777 EXPECT_EQ(expected_packets, packets.size()); 777 // Randomness was added to frame times.
778 EXPECT_NEAR(expected_packets, packets.size(), 50);
778 int64_t send_time_us = -1; 779 int64_t send_time_us = -1;
779 size_t total_payload_size = 0; 780 size_t total_payload_size = 0;
780 uint32_t absolute_send_time = 0; 781 uint32_t absolute_send_time = 0;
781 uint32_t absolute_send_time_wraps = 0; 782 uint32_t absolute_send_time_wraps = 0;
782 uint32_t rtp_timestamp = 0; 783 uint32_t rtp_timestamp = 0;
783 uint32_t rtp_timestamp_wraps = 0; 784 uint32_t rtp_timestamp_wraps = 0;
784 for (const auto* packet : packets) { 785 for (const auto* packet : packets) {
785 const MediaPacket* media_packet = static_cast<const MediaPacket*>(packet); 786 const MediaPacket* media_packet = static_cast<const MediaPacket*>(packet);
786 EXPECT_LE(send_time_us, media_packet->send_time_us()); 787 EXPECT_LE(send_time_us, media_packet->send_time_us());
787 send_time_us = media_packet->send_time_us(); 788 send_time_us = media_packet->send_time_us();
788 if (sender->source()->max_payload_size_bytes() != 789 if (sender->source()->max_payload_size_bytes() !=
789 media_packet->payload_size()) { 790 media_packet->payload_size()) {
790 EXPECT_EQ(expected_payload_size, media_packet->payload_size()); 791 EXPECT_NEAR(expected_payload_size, media_packet->payload_size(), 600);
stefan-webrtc 2015/07/09 13:11:18 Break out these error parameters and make them inp
magalhaesc 2015/07/10 11:33:48 Done.
791 } 792 }
792 total_payload_size += media_packet->payload_size(); 793 total_payload_size += media_packet->payload_size();
793 if (absolute_send_time > 794 if (absolute_send_time >
794 media_packet->header().extension.absoluteSendTime) { 795 media_packet->header().extension.absoluteSendTime) {
795 absolute_send_time_wraps++; 796 absolute_send_time_wraps++;
796 } 797 }
797 absolute_send_time = media_packet->header().extension.absoluteSendTime; 798 absolute_send_time = media_packet->header().extension.absoluteSendTime;
798 if (rtp_timestamp > media_packet->header().timestamp) { 799 if (rtp_timestamp > media_packet->header().timestamp) {
799 rtp_timestamp_wraps++; 800 rtp_timestamp_wraps++;
800 } 801 }
801 rtp_timestamp = media_packet->header().timestamp; 802 rtp_timestamp = media_packet->header().timestamp;
802 } 803 }
803 EXPECT_EQ(expected_total_payload_size, total_payload_size); 804 EXPECT_NEAR(expected_total_payload_size, total_payload_size, 30 * 1000);
804 EXPECT_GE(1u, absolute_send_time_wraps); 805 EXPECT_GE(1u, absolute_send_time_wraps);
805 EXPECT_GE(1u, rtp_timestamp_wraps); 806 EXPECT_GE(1u, rtp_timestamp_wraps);
806 807
807 for (auto* packet : packets) 808 for (auto* packet : packets)
808 delete packet; 809 delete packet;
809 } 810 }
810 811
811 TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s) { 812 TEST(BweTestFramework_VideoSenderTest, Fps1Kbps80_1s) {
812 // 1 fps, 80 kbps 813 // 1 fps, 80 kbps
813 VideoSource source(0, 1.0f, 80, 0x1234, 0); 814 VideoSource source(0, 1.0f, 80, 0x1234, 0);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 packets.push_back(feedback); 1000 packets.push_back(feedback);
1000 sender.RunFor(10000, &packets); 1001 sender.RunFor(10000, &packets);
1001 EXPECT_EQ(820000u, source.bits_per_second()); 1002 EXPECT_EQ(820000u, source.bits_per_second());
1002 1003
1003 for (auto* packet : packets) 1004 for (auto* packet : packets)
1004 delete packet; 1005 delete packet;
1005 } 1006 }
1006 } // namespace bwe 1007 } // namespace bwe
1007 } // namespace testing 1008 } // namespace testing
1008 } // namespace webrtc 1009 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698