OLD | NEW |
---|---|
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...) Loading... | |
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...) Loading... | |
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...) Loading... | |
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...) Loading... | |
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 |
OLD | NEW |