Chromium Code Reviews

Side by Side Diff: webrtc/video/send_statistics_proxy_unittest.cc

Issue 2804653002: Update stats for cpu/quality adaptation changes to excluded time when video is suspended. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
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 404 matching lines...)
415 statistics_proxy_->OnQualityRestrictedResolutionChanged(1); 415 statistics_proxy_->OnQualityRestrictedResolutionChanged(1);
416 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution); 416 EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution);
417 EXPECT_EQ(3, statistics_proxy_->GetStats().number_of_quality_adapt_changes); 417 EXPECT_EQ(3, statistics_proxy_->GetStats().number_of_quality_adapt_changes);
418 418
419 statistics_proxy_->OnQualityRestrictedResolutionChanged(0); 419 statistics_proxy_->OnQualityRestrictedResolutionChanged(0);
420 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); 420 EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution);
421 EXPECT_EQ(4, statistics_proxy_->GetStats().number_of_quality_adapt_changes); 421 EXPECT_EQ(4, statistics_proxy_->GetStats().number_of_quality_adapt_changes);
422 } 422 }
423 423
424 TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_ScalingNotEnabled) { 424 TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_ScalingNotEnabled) {
425 // First RTP packet sent.
426 UpdateDataCounters(kFirstSsrc);
425 // Min runtime has passed. 427 // Min runtime has passed.
426 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); 428 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000);
427 statistics_proxy_.reset(); 429 statistics_proxy_.reset();
428 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); 430 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu"));
429 EXPECT_EQ(0, 431 EXPECT_EQ(0,
430 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); 432 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality"));
431 } 433 }
432 434
433 TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_MinRuntimeNotPassed) { 435 TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_MinRuntimeNotPassed) {
436 // First RTP packet sent.
437 UpdateDataCounters(kFirstSsrc);
434 // Enable scaling. 438 // Enable scaling.
435 statistics_proxy_->SetQualityScalingStats(0); 439 statistics_proxy_->SetQualityScalingStats(0);
436 statistics_proxy_->SetCpuScalingStats(0); 440 statistics_proxy_->SetCpuScalingStats(0);
437 // Min runtime has not passed. 441 // Min runtime has not passed.
438 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000 - 1); 442 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000 - 1);
439 statistics_proxy_.reset(); 443 statistics_proxy_.reset();
440 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); 444 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu"));
441 EXPECT_EQ(0, 445 EXPECT_EQ(0,
442 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); 446 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality"));
443 } 447 }
444 448
445 TEST_F(SendStatisticsProxyTest, ZeroCpuAdaptChangesReported) { 449 TEST_F(SendStatisticsProxyTest, ZeroCpuAdaptChangesReported) {
450 // First RTP packet sent.
451 UpdateDataCounters(kFirstSsrc);
446 // Enable scaling. 452 // Enable scaling.
447 statistics_proxy_->SetCpuScalingStats(0); 453 statistics_proxy_->SetCpuScalingStats(0);
448 // Min runtime has passed. 454 // Min runtime has passed.
449 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); 455 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000);
450 statistics_proxy_.reset(); 456 statistics_proxy_.reset();
451 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); 457 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu"));
452 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 0)); 458 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 0));
453 } 459 }
454 460
455 TEST_F(SendStatisticsProxyTest, ZeroQualityAdaptChangesReported) { 461 TEST_F(SendStatisticsProxyTest, ZeroQualityAdaptChangesReported) {
462 // First RTP packet sent.
463 UpdateDataCounters(kFirstSsrc);
456 // Enable scaling. 464 // Enable scaling.
457 statistics_proxy_->SetQualityScalingStats(0); 465 statistics_proxy_->SetQualityScalingStats(0);
458 // Min runtime has passed. 466 // Min runtime has passed.
459 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); 467 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000);
460 statistics_proxy_.reset(); 468 statistics_proxy_.reset();
461 EXPECT_EQ(1, 469 EXPECT_EQ(1,
462 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); 470 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality"));
463 EXPECT_EQ( 471 EXPECT_EQ(
464 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 0)); 472 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 0));
465 } 473 }
466 474
467 TEST_F(SendStatisticsProxyTest, CpuAdaptChangesReported) { 475 TEST_F(SendStatisticsProxyTest, CpuAdaptChangesReported) {
476 // First RTP packet sent.
477 UpdateDataCounters(kFirstSsrc);
468 // Enable scaling. 478 // Enable scaling.
469 // Adapt changes: 1, elapsed time: 10 ms => 6 per minute. 479 // Adapt changes: 1, elapsed time: 10 ms => 6 per minute.
470 statistics_proxy_->SetCpuScalingStats(0); 480 statistics_proxy_->SetCpuScalingStats(0);
471 statistics_proxy_->OnCpuRestrictedResolutionChanged(true); 481 statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
472 fake_clock_.AdvanceTimeMilliseconds(10000); 482 fake_clock_.AdvanceTimeMilliseconds(10000);
473 statistics_proxy_.reset(); 483 statistics_proxy_.reset();
474 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); 484 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu"));
475 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 6)); 485 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 6));
476 } 486 }
477 487
478 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsExcludesDisabledTime) { 488 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsExcludesDisabledTime) {
489 // First RTP packet sent.
490 UpdateDataCounters(kFirstSsrc);
491
479 // Disable scaling. 492 // Disable scaling.
480 statistics_proxy_->SetQualityScalingStats(-1); 493 statistics_proxy_->SetQualityScalingStats(-1);
481 fake_clock_.AdvanceTimeMilliseconds(10000); 494 fake_clock_.AdvanceTimeMilliseconds(10000);
482 495
483 // Enable scaling. 496 // Enable scaling.
484 // Adapt changes: 2, elapsed time: 20 ms. 497 // Adapt changes: 2, elapsed time: 20 ms.
485 statistics_proxy_->SetQualityScalingStats(0); 498 statistics_proxy_->SetQualityScalingStats(0);
486 fake_clock_.AdvanceTimeMilliseconds(5000); 499 fake_clock_.AdvanceTimeMilliseconds(5000);
487 statistics_proxy_->SetQualityScalingStats(1); 500 statistics_proxy_->SetQualityScalingStats(1);
488 fake_clock_.AdvanceTimeMilliseconds(9000); 501 fake_clock_.AdvanceTimeMilliseconds(9000);
(...skipping 18 matching lines...)
507 fake_clock_.AdvanceTimeMilliseconds(20000); 520 fake_clock_.AdvanceTimeMilliseconds(20000);
508 521
509 // Adapt changes: 3, elapsed time: 30 ms => 6 per minute. 522 // Adapt changes: 3, elapsed time: 30 ms => 6 per minute.
510 statistics_proxy_.reset(); 523 statistics_proxy_.reset();
511 EXPECT_EQ(1, 524 EXPECT_EQ(1,
512 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); 525 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality"));
513 EXPECT_EQ( 526 EXPECT_EQ(
514 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6)); 527 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6));
515 } 528 }
516 529
530 TEST_F(SendStatisticsProxyTest,
531 AdaptChangesNotReported_ScalingNotEnabledVideoResumed) {
532 // First RTP packet sent.
533 UpdateDataCounters(kFirstSsrc);
534
535 // Suspend and resume video.
536 statistics_proxy_->OnSuspendChange(true);
537 fake_clock_.AdvanceTimeMilliseconds(5000);
538 statistics_proxy_->OnSuspendChange(false);
539
540 // Min runtime has passed but scaling not enabled.
541 fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000);
542 statistics_proxy_.reset();
543 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu"));
544 EXPECT_EQ(0,
545 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality"));
546 }
547
548 TEST_F(SendStatisticsProxyTest, QualityAdaptChangesStatsExcludesSuspendedTime) {
549 // First RTP packet sent.
550 UpdateDataCounters(kFirstSsrc);
551
552 // Enable scaling.
553 // Adapt changes: 2, elapsed time: 20 ms.
brandtr 2017/04/07 06:42:02 Should this be seconds and not milliseconds?
åsapersson 2017/04/07 07:13:33 Right, done.
554 statistics_proxy_->SetQualityScalingStats(0);
555 fake_clock_.AdvanceTimeMilliseconds(20000);
556 statistics_proxy_->OnQualityRestrictedResolutionChanged(1);
557 statistics_proxy_->OnQualityRestrictedResolutionChanged(2);
558
559 // Suspend and resume video.
560 statistics_proxy_->OnSuspendChange(true);
561 fake_clock_.AdvanceTimeMilliseconds(30000);
562 statistics_proxy_->OnSuspendChange(false);
563
564 // Adapt changes: 1, elapsed time: 10 ms.
brandtr 2017/04/07 06:42:02 And here, and below?
åsapersson 2017/04/07 07:13:33 Done.
565 statistics_proxy_->OnQualityRestrictedResolutionChanged(3);
566 fake_clock_.AdvanceTimeMilliseconds(10000);
567
568 // Adapt changes: 3, elapsed time: 30 ms => 6 per minute.
569 statistics_proxy_.reset();
570 EXPECT_EQ(1,
571 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality"));
572 EXPECT_EQ(
573 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6));
574 }
575
576 TEST_F(SendStatisticsProxyTest, CpuAdaptChangesStatsExcludesSuspendedTime) {
577 // First RTP packet sent.
578 UpdateDataCounters(kFirstSsrc);
579
580 // Video not suspended.
581 statistics_proxy_->OnSuspendChange(false);
582 fake_clock_.AdvanceTimeMilliseconds(30000);
583
584 // Enable scaling.
585 // Adapt changes: 1, elapsed time: 20 ms.
586 statistics_proxy_->SetCpuScalingStats(0);
587 fake_clock_.AdvanceTimeMilliseconds(10000);
588 statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
589
590 // Video not suspended, stats time already started.
591 statistics_proxy_->OnSuspendChange(false);
592 fake_clock_.AdvanceTimeMilliseconds(10000);
593
594 // Disable scaling.
595 statistics_proxy_->SetCpuScalingStats(-1);
596 fake_clock_.AdvanceTimeMilliseconds(30000);
597
598 // Suspend and resume video, stats time not started when scaling not enabled.
599 statistics_proxy_->OnSuspendChange(true);
600 fake_clock_.AdvanceTimeMilliseconds(30000);
601 statistics_proxy_->OnSuspendChange(false);
602 fake_clock_.AdvanceTimeMilliseconds(30000);
603
604 // Enable scaling.
605 // Adapt changes: 1, elapsed time: 10 ms.
606 statistics_proxy_->SetCpuScalingStats(0);
607 fake_clock_.AdvanceTimeMilliseconds(10000);
608 statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
609
610 // Adapt changes: 2, elapsed time: 30 ms => 4 per minute.
611 statistics_proxy_.reset();
612 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu"));
613 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 4));
614 }
615
616 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsNotStartedIfVideoSuspended) {
617 // First RTP packet sent.
618 UpdateDataCounters(kFirstSsrc);
619
620 // Video suspended.
621 statistics_proxy_->OnSuspendChange(true);
622
623 // Enable scaling, stats time not started when suspended.
624 statistics_proxy_->SetCpuScalingStats(0);
625 fake_clock_.AdvanceTimeMilliseconds(10000);
626
627 // Resume video, stats time started.
628 // Adapt changes: 1, elapsed time: 10 ms.
629 statistics_proxy_->OnSuspendChange(false);
630 fake_clock_.AdvanceTimeMilliseconds(10000);
631 statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
632
633 // Adapt changes: 1, elapsed time: 10 ms => 6 per minute.
634 statistics_proxy_.reset();
635 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu"));
636 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 6));
637 }
638
517 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsRestartsOnFirstSentPacket) { 639 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsRestartsOnFirstSentPacket) {
518 StreamDataCounters counters;
519 StreamDataCountersCallback* proxy =
520 static_cast<StreamDataCountersCallback*>(statistics_proxy_.get());
521
522 // Send first packet, scaling enabled. 640 // Send first packet, scaling enabled.
523 // Elapsed time before first packet is sent should be excluded. 641 // Elapsed time before first packet is sent should be excluded.
524 statistics_proxy_->SetQualityScalingStats(0); 642 statistics_proxy_->SetQualityScalingStats(0);
525 fake_clock_.AdvanceTimeMilliseconds(10000); 643 fake_clock_.AdvanceTimeMilliseconds(10000);
526 proxy->DataCountersUpdated(counters, kFirstSsrc); 644 UpdateDataCounters(kFirstSsrc);
527 645
528 // Adapt changes: 1, elapsed time: 10 ms. 646 // Adapt changes: 1, elapsed time: 10 ms.
529 fake_clock_.AdvanceTimeMilliseconds(10000); 647 fake_clock_.AdvanceTimeMilliseconds(10000);
530 statistics_proxy_->OnQualityRestrictedResolutionChanged(1); 648 statistics_proxy_->OnQualityRestrictedResolutionChanged(1);
531 proxy->DataCountersUpdated(counters, kFirstSsrc); 649 UpdateDataCounters(kFirstSsrc);
532 650
533 // Adapt changes: 1, elapsed time: 10 ms => 6 per minute. 651 // Adapt changes: 1, elapsed time: 10 ms => 6 per minute.
534 statistics_proxy_.reset(); 652 statistics_proxy_.reset();
535 EXPECT_EQ(1, 653 EXPECT_EQ(1,
536 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); 654 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality"));
537 EXPECT_EQ( 655 EXPECT_EQ(
538 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6)); 656 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6));
539 } 657 }
540 658
541 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsStartedAfterFirstSentPacket) { 659 TEST_F(SendStatisticsProxyTest, AdaptChangesStatsStartedAfterFirstSentPacket) {
542 StreamDataCounters counters;
543 StreamDataCountersCallback* proxy =
544 static_cast<StreamDataCountersCallback*>(statistics_proxy_.get());
545
546 // Enable and disable scaling. 660 // Enable and disable scaling.
547 statistics_proxy_->SetCpuScalingStats(0); 661 statistics_proxy_->SetCpuScalingStats(0);
548 fake_clock_.AdvanceTimeMilliseconds(60000); 662 fake_clock_.AdvanceTimeMilliseconds(60000);
549 statistics_proxy_->SetCpuScalingStats(-1); 663 statistics_proxy_->SetCpuScalingStats(-1);
550 664
551 // Send first packet, scaling disabled. 665 // Send first packet, scaling disabled.
552 // Elapsed time before first packet is sent should be excluded. 666 // Elapsed time before first packet is sent should be excluded.
553 proxy->DataCountersUpdated(counters, kFirstSsrc); 667 UpdateDataCounters(kFirstSsrc);
554 fake_clock_.AdvanceTimeMilliseconds(60000); 668 fake_clock_.AdvanceTimeMilliseconds(60000);
555 669
556 // Enable scaling. 670 // Enable scaling.
557 statistics_proxy_->SetCpuScalingStats(0); 671 statistics_proxy_->SetCpuScalingStats(0);
558 fake_clock_.AdvanceTimeMilliseconds(10000); 672 fake_clock_.AdvanceTimeMilliseconds(10000);
559 proxy->DataCountersUpdated(counters, kFirstSsrc); 673 UpdateDataCounters(kFirstSsrc);
560 674
561 // Adapt changes: 1, elapsed time: 20 ms. 675 // Adapt changes: 1, elapsed time: 20 ms.
562 fake_clock_.AdvanceTimeMilliseconds(10000); 676 fake_clock_.AdvanceTimeMilliseconds(10000);
563 statistics_proxy_->OnCpuRestrictedResolutionChanged(true); 677 statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
564 678
565 // Adapt changes: 1, elapsed time: 20 ms => 3 per minute. 679 // Adapt changes: 1, elapsed time: 20 ms => 3 per minute.
566 statistics_proxy_.reset(); 680 statistics_proxy_.reset();
567 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); 681 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu"));
568 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 3)); 682 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 3));
569 } 683 }
570 684
571 TEST_F(SendStatisticsProxyTest, AdaptChangesReportedAfterContentSwitch) { 685 TEST_F(SendStatisticsProxyTest, AdaptChangesReportedAfterContentSwitch) {
572 // Enable scaling. 686 // First RTP packet sent, scaling enabled.
687 UpdateDataCounters(kFirstSsrc);
573 statistics_proxy_->SetCpuScalingStats(0); 688 statistics_proxy_->SetCpuScalingStats(0);
574 689
575 // Adapt changes: 2, elapsed time: 15 ms => 8 per minute. 690 // Adapt changes: 2, elapsed time: 15 ms => 8 per minute.
576 statistics_proxy_->OnCpuRestrictedResolutionChanged(true); 691 statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
577 fake_clock_.AdvanceTimeMilliseconds(6000); 692 fake_clock_.AdvanceTimeMilliseconds(6000);
578 statistics_proxy_->OnCpuRestrictedResolutionChanged(true); 693 statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
579 fake_clock_.AdvanceTimeMilliseconds(9000); 694 fake_clock_.AdvanceTimeMilliseconds(9000);
580 695
581 // Switch content type, real-time stats should be updated. 696 // Switch content type, real-time stats should be updated.
582 VideoEncoderConfig config; 697 VideoEncoderConfig config;
583 config.content_type = VideoEncoderConfig::ContentType::kScreen; 698 config.content_type = VideoEncoderConfig::ContentType::kScreen;
584 statistics_proxy_->OnEncoderReconfigured(config, 50); 699 statistics_proxy_->OnEncoderReconfigured(config, 50);
585 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); 700 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu"));
586 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 8)); 701 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 8));
587 EXPECT_EQ(0, 702 EXPECT_EQ(0,
588 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); 703 metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality"));
589 704
590 // Enable scaling. 705 // First RTP packet sent, scaling enabled.
706 UpdateDataCounters(kFirstSsrc);
591 statistics_proxy_->SetCpuScalingStats(0); 707 statistics_proxy_->SetCpuScalingStats(0);
592 708
593 // Adapt changes: 4, elapsed time: 120 ms => 2 per minute. 709 // Adapt changes: 4, elapsed time: 120 ms => 2 per minute.
594 statistics_proxy_->OnCpuRestrictedResolutionChanged(true); 710 statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
595 statistics_proxy_->OnCpuRestrictedResolutionChanged(true); 711 statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
596 statistics_proxy_->OnCpuRestrictedResolutionChanged(true); 712 statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
597 statistics_proxy_->OnCpuRestrictedResolutionChanged(true); 713 statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
598 fake_clock_.AdvanceTimeMilliseconds(120000); 714 fake_clock_.AdvanceTimeMilliseconds(120000);
599 715
600 statistics_proxy_.reset(); 716 statistics_proxy_.reset();
(...skipping 426 matching lines...)
1027 // Histograms are updated when the statistics_proxy_ is deleted. 1143 // Histograms are updated when the statistics_proxy_ is deleted.
1028 statistics_proxy_.reset(); 1144 statistics_proxy_.reset();
1029 EXPECT_EQ( 1145 EXPECT_EQ(
1030 0, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent")); 1146 0, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent"));
1031 EXPECT_EQ(0, metrics::NumSamples( 1147 EXPECT_EQ(0, metrics::NumSamples(
1032 "WebRTC.Video.QualityLimitedResolutionDownscales")); 1148 "WebRTC.Video.QualityLimitedResolutionDownscales"));
1033 } 1149 }
1034 1150
1035 TEST_F(SendStatisticsProxyTest, 1151 TEST_F(SendStatisticsProxyTest,
1036 QualityLimitedHistogramsUpdatedWhenEnabled_NoResolutionDownscale) { 1152 QualityLimitedHistogramsUpdatedWhenEnabled_NoResolutionDownscale) {
1153 const int kNumDownscales = 0;
1037 EncodedImage encoded_image; 1154 EncodedImage encoded_image;
1155 statistics_proxy_->SetQualityScalingStats(kNumDownscales);
1038 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) 1156 for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i)
1039 statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo); 1157 statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo);
1040 1158
1041 // Histograms are updated when the statistics_proxy_ is deleted. 1159 // Histograms are updated when the statistics_proxy_ is deleted.
1042 statistics_proxy_.reset(); 1160 statistics_proxy_.reset();
1043 EXPECT_EQ( 1161 EXPECT_EQ(
1044 1, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent")); 1162 1, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent"));
1045 EXPECT_EQ(1, metrics::NumEvents( 1163 EXPECT_EQ(1, metrics::NumEvents(
1046 "WebRTC.Video.QualityLimitedResolutionInPercent", 0)); 1164 "WebRTC.Video.QualityLimitedResolutionInPercent", 0));
1047 // No resolution downscale. 1165 // No resolution downscale.
(...skipping 535 matching lines...)
1583 fake_clock_.AdvanceTimeMilliseconds(kPeriodIntervalMs); 1701 fake_clock_.AdvanceTimeMilliseconds(kPeriodIntervalMs);
1584 proxy->DataCountersUpdated(counters, kFirstSsrc); 1702 proxy->DataCountersUpdated(counters, kFirstSsrc);
1585 } 1703 }
1586 1704
1587 // FEC not enabled. 1705 // FEC not enabled.
1588 statistics_proxy_.reset(); 1706 statistics_proxy_.reset();
1589 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); 1707 EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps"));
1590 } 1708 }
1591 1709
1592 } // namespace webrtc 1710 } // namespace webrtc
OLDNEW

Powered by Google App Engine