From ef3998ffd133a7ae47ea980e65673b2e7b76d20e Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Mon, 9 Dec 2019 13:06:53 +0100 Subject: [PATCH] Add directive to make webrtc metrics optional. Bug: webrtc:11144 Change-Id: I4e75e6aec033784685de3670e880bb9f2b6ee8d2 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161043 Reviewed-by: Karl Wiberg Reviewed-by: Mirko Bonadei Commit-Queue: Ying Wang Cr-Commit-Position: refs/heads/master@{#30040} --- BUILD.gn | 4 + call/call_perf_tests.cc | 2 +- modules/audio_mixer/audio_mixer_impl.h | 2 +- modules/audio_mixer/frame_combiner.cc | 1 - modules/audio_processing/rms_level.h | 2 +- .../codecs/vp8/screenshare_layers_unittest.cc | 58 +- p2p/base/p2p_transport_channel_unittest.cc | 50 +- p2p/client/basic_port_allocator_unittest.cc | 7 +- pc/peer_connection_histogram_unittest.cc | 136 ++-- pc/peer_connection_ice_unittest.cc | 5 +- pc/peer_connection_integrationtest.cc | 64 +- pc/peer_connection_rtp_unittest.cc | 30 +- pc/peer_connection_simulcast_unittest.cc | 9 +- pc/srtp_session_unittest.cc | 8 +- .../src/org/webrtc/PeerConnectionTest.java | 12 - system_wrappers/include/metrics.h | 118 ++++ .../source/metrics_default_unittest.cc | 2 + system_wrappers/source/metrics_unittest.cc | 2 + video/call_stats_unittest.cc | 9 +- video/end_to_end_tests/histogram_tests.cc | 207 +++--- video/end_to_end_tests/stats_tests.cc | 30 +- video/receive_statistics_proxy_unittest.cc | 466 +++++++------ video/send_delay_stats_unittest.cc | 8 +- video/send_statistics_proxy_unittest.cc | 623 ++++++++++-------- video/video_stream_encoder_unittest.cc | 6 +- webrtc.gni | 3 + 26 files changed, 1101 insertions(+), 763 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index f4988035b9..83c3263a3e 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -271,6 +271,10 @@ config("common_config") { defines += [ "RTC_DISABLE_TRACE_EVENTS" ] } + if (rtc_disable_metrics) { + defines += [ "RTC_DISABLE_METRICS" ] + } + cflags = [] if (build_with_chromium) { diff --git a/call/call_perf_tests.cc b/call/call_perf_tests.cc index 8b96a6398a..d464f0beaa 100644 --- a/call/call_perf_tests.cc +++ b/call/call_perf_tests.cc @@ -319,7 +319,7 @@ void CallPerfTest::TestAudioVideoSync(FecMode fec, if (!field_trial::IsEnabled("WebRTC-QuickPerfTest")) { // TODO(bugs.webrtc.org/10417): Reenable this for iOS #if !defined(WEBRTC_IOS) - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AVSyncOffsetInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.AVSyncOffsetInMs")); #endif } } diff --git a/modules/audio_mixer/audio_mixer_impl.h b/modules/audio_mixer/audio_mixer_impl.h index 70a6f1d6b8..c503932909 100644 --- a/modules/audio_mixer/audio_mixer_impl.h +++ b/modules/audio_mixer/audio_mixer_impl.h @@ -47,7 +47,7 @@ class AudioMixerImpl : public AudioMixer { // AudioProcessing only accepts 10 ms frames. static const int kFrameDurationInMs = 10; - static const int kMaximumAmountOfMixedAudioSources = 3; + enum : int { kMaximumAmountOfMixedAudioSources = 3 }; static rtc::scoped_refptr Create(); diff --git a/modules/audio_mixer/frame_combiner.cc b/modules/audio_mixer/frame_combiner.cc index e52904fe66..f7c6a0c32e 100644 --- a/modules/audio_mixer/frame_combiner.cc +++ b/modules/audio_mixer/frame_combiner.cc @@ -215,7 +215,6 @@ void FrameCombiner::LogMixingStats(const std::vector& mix_list, NativeRate::kSampleRate32kHz, NativeRate::kSampleRate48kHz}; const auto* rate_position = std::lower_bound( std::begin(native_rates), std::end(native_rates), sample_rate); - RTC_HISTOGRAM_ENUMERATION( "WebRTC.Audio.AudioMixer.MixingRate", std::distance(std::begin(native_rates), rate_position), diff --git a/modules/audio_processing/rms_level.h b/modules/audio_processing/rms_level.h index 8b52b6cebe..e1a6d565a9 100644 --- a/modules/audio_processing/rms_level.h +++ b/modules/audio_processing/rms_level.h @@ -34,7 +34,7 @@ class RmsLevel { int peak; }; - static constexpr int kMinLevelDb = 127; + enum : int { kMinLevelDb = 127 }; RmsLevel(); ~RmsLevel(); diff --git a/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc b/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc index edbe4ad7c9..9ef29dbc75 100644 --- a/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc +++ b/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc @@ -571,35 +571,41 @@ TEST_F(ScreenshareLayerTest, UpdatesHistograms) { layers_.reset(); // Histograms are reported on destruction. - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.Screenshare.Layer0.FrameRate")); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.Screenshare.Layer1.FrameRate")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Screenshare.FramesPerDrop")); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.Screenshare.FramesPerOvershoot")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Screenshare.Layer0.Qp")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Screenshare.Layer1.Qp")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.Screenshare.Layer0.FrameRate")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.Screenshare.Layer1.FrameRate")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.Screenshare.FramesPerDrop")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.Screenshare.FramesPerOvershoot")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.Screenshare.Layer0.Qp")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.Screenshare.Layer1.Qp")); + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.Screenshare.Layer0.TargetBitrate")); - EXPECT_EQ( + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.Screenshare.Layer1.TargetBitrate")); - EXPECT_GT(metrics::MinSample("WebRTC.Video.Screenshare.Layer0.FrameRate"), 1); - EXPECT_GT(metrics::MinSample("WebRTC.Video.Screenshare.Layer1.FrameRate"), 1); - EXPECT_GT(metrics::MinSample("WebRTC.Video.Screenshare.FramesPerDrop"), 1); - EXPECT_GT(metrics::MinSample("WebRTC.Video.Screenshare.FramesPerOvershoot"), - 1); - EXPECT_EQ(1, - metrics::NumEvents("WebRTC.Video.Screenshare.Layer0.Qp", kTl0Qp)); - EXPECT_EQ(1, - metrics::NumEvents("WebRTC.Video.Screenshare.Layer1.Qp", kTl1Qp)); - EXPECT_EQ(1, - metrics::NumEvents("WebRTC.Video.Screenshare.Layer0.TargetBitrate", - kDefaultTl0BitrateKbps)); - EXPECT_EQ(1, - metrics::NumEvents("WebRTC.Video.Screenshare.Layer1.TargetBitrate", - kDefaultTl1BitrateKbps)); + EXPECT_METRIC_GT( + metrics::MinSample("WebRTC.Video.Screenshare.Layer0.FrameRate"), 1); + EXPECT_METRIC_GT( + metrics::MinSample("WebRTC.Video.Screenshare.Layer1.FrameRate"), 1); + EXPECT_METRIC_GT(metrics::MinSample("WebRTC.Video.Screenshare.FramesPerDrop"), + 1); + EXPECT_METRIC_GT( + metrics::MinSample("WebRTC.Video.Screenshare.FramesPerOvershoot"), 1); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Screenshare.Layer0.Qp", kTl0Qp)); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Screenshare.Layer1.Qp", kTl1Qp)); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Screenshare.Layer0.TargetBitrate", + kDefaultTl0BitrateKbps)); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Screenshare.Layer1.TargetBitrate", + kDefaultTl1BitrateKbps)); } TEST_F(ScreenshareLayerTest, RespectsConfiguredFramerate) { diff --git a/p2p/base/p2p_transport_channel_unittest.cc b/p2p/base/p2p_transport_channel_unittest.cc index ac28d46748..23ed57cdd9 100644 --- a/p2p/base/p2p_transport_channel_unittest.cc +++ b/p2p/base/p2p_transport_channel_unittest.cc @@ -1310,16 +1310,16 @@ TEST_F(P2PTransportChannelTest, TestUMAIceRestartWhileDisconnected) { ep1_ch1()->SetIceParameters(kIceParams[2]); ep1_ch1()->SetRemoteIceParameters(kIceParams[3]); ep1_ch1()->MaybeStartGathering(); - EXPECT_EQ(1, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.IceRestartState", - static_cast(IceRestartState::DISCONNECTED))); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.IceRestartState", + static_cast(IceRestartState::DISCONNECTED))); ep2_ch1()->SetIceParameters(kIceParams[3]); ep2_ch1()->SetRemoteIceParameters(kIceParams[2]); ep2_ch1()->MaybeStartGathering(); - EXPECT_EQ(2, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.IceRestartState", - static_cast(IceRestartState::DISCONNECTED))); + EXPECT_METRIC_EQ(2, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.IceRestartState", + static_cast(IceRestartState::DISCONNECTED))); DestroyChannels(); } @@ -1337,16 +1337,16 @@ TEST_F(P2PTransportChannelTest, TestUMAIceRestartWhileConnected) { ep1_ch1()->SetIceParameters(kIceParams[2]); ep1_ch1()->SetRemoteIceParameters(kIceParams[3]); ep1_ch1()->MaybeStartGathering(); - EXPECT_EQ(1, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.IceRestartState", - static_cast(IceRestartState::CONNECTED))); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.IceRestartState", + static_cast(IceRestartState::CONNECTED))); ep2_ch1()->SetIceParameters(kIceParams[3]); ep2_ch1()->SetRemoteIceParameters(kIceParams[2]); ep2_ch1()->MaybeStartGathering(); - EXPECT_EQ(2, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.IceRestartState", - static_cast(IceRestartState::CONNECTED))); + EXPECT_METRIC_EQ(2, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.IceRestartState", + static_cast(IceRestartState::CONNECTED))); DestroyChannels(); } @@ -1363,16 +1363,16 @@ TEST_F(P2PTransportChannelTest, TestUMAIceRestartWhileConnecting) { ep1_ch1()->SetIceParameters(kIceParams[2]); ep1_ch1()->SetRemoteIceParameters(kIceParams[3]); ep1_ch1()->MaybeStartGathering(); - EXPECT_EQ(1, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.IceRestartState", - static_cast(IceRestartState::CONNECTING))); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.IceRestartState", + static_cast(IceRestartState::CONNECTING))); ep2_ch1()->SetIceParameters(kIceParams[3]); ep2_ch1()->SetRemoteIceParameters(kIceParams[2]); ep2_ch1()->MaybeStartGathering(); - EXPECT_EQ(2, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.IceRestartState", - static_cast(IceRestartState::CONNECTING))); + EXPECT_METRIC_EQ(2, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.IceRestartState", + static_cast(IceRestartState::CONNECTING))); DestroyChannels(); } @@ -1436,9 +1436,10 @@ TEST_F(P2PTransportChannelTest, SIMULATED_WAIT(false, kNetworkFailureTimeout, clock); EXPECT_LE(1, GetEndpoint(0)->GetIceRegatheringCountForReason( IceRegatheringReason::NETWORK_FAILURE)); - EXPECT_LE(1, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.IceRegatheringReason", - static_cast(IceRegatheringReason::NETWORK_FAILURE))); + EXPECT_METRIC_LE( + 1, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.IceRegatheringReason", + static_cast(IceRegatheringReason::NETWORK_FAILURE))); EXPECT_EQ(0, GetEndpoint(1)->GetIceRegatheringCountForReason( IceRegatheringReason::NETWORK_FAILURE)); @@ -1469,9 +1470,10 @@ TEST_F(P2PTransportChannelTest, TestIceRegatherOnAllNetworksContinual) { // Expect regathering to happen 5 times in 11s with 2s interval. EXPECT_LE(5, GetEndpoint(0)->GetIceRegatheringCountForReason( IceRegatheringReason::OCCASIONAL_REFRESH)); - EXPECT_LE(5, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.IceRegatheringReason", - static_cast(IceRegatheringReason::OCCASIONAL_REFRESH))); + EXPECT_METRIC_LE( + 5, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.IceRegatheringReason", + static_cast(IceRegatheringReason::OCCASIONAL_REFRESH))); // Expect no regathering if continual gathering not configured. EXPECT_EQ(0, GetEndpoint(1)->GetIceRegatheringCountForReason( IceRegatheringReason::OCCASIONAL_REFRESH)); diff --git a/p2p/client/basic_port_allocator_unittest.cc b/p2p/client/basic_port_allocator_unittest.cc index 797778c73c..00551ef190 100644 --- a/p2p/client/basic_port_allocator_unittest.cc +++ b/p2p/client/basic_port_allocator_unittest.cc @@ -2373,9 +2373,10 @@ TEST_F(BasicPortAllocatorTest, IceRegatheringMetricsLoggedWhenNetworkChanges) { AddInterface(kClientAddr2, "test_net1"); EXPECT_TRUE_SIMULATED_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout, fake_clock); - EXPECT_EQ(1, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.IceRegatheringReason", - static_cast(IceRegatheringReason::NETWORK_CHANGE))); + EXPECT_METRIC_EQ(1, + webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.IceRegatheringReason", + static_cast(IceRegatheringReason::NETWORK_CHANGE))); } // Test that when an mDNS responder is present, the local address of a host diff --git a/pc/peer_connection_histogram_unittest.cc b/pc/peer_connection_histogram_unittest.cc index f734e50e9a..e36b29a23a 100644 --- a/pc/peer_connection_histogram_unittest.cc +++ b/pc/peer_connection_histogram_unittest.cc @@ -398,9 +398,9 @@ TEST_F(PeerConnectionUsageHistogramTest, UsageFingerprintHistogramFromTimeout) { auto pc = CreatePeerConnectionWithImmediateReport(); int expected_fingerprint = MakeUsageFingerprint({}); - ASSERT_EQ_WAIT(1, webrtc::metrics::NumSamples(kUsagePatternMetric), - kDefaultTimeout); - EXPECT_EQ( + EXPECT_METRIC_EQ_WAIT(1, webrtc::metrics::NumSamples(kUsagePatternMetric), + kDefaultTimeout); + EXPECT_METRIC_EQ( 1, webrtc::metrics::NumEvents(kUsagePatternMetric, expected_fingerprint)); } @@ -430,8 +430,8 @@ TEST_F(PeerConnectionUsageHistogramTest, FingerprintAudioVideo) { PeerConnection::UsageEvent::CLOSE_CALLED}); // In this case, we may or may not have PRIVATE_CANDIDATE_COLLECTED, // depending on the machine configuration. - EXPECT_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); - EXPECT_TRUE( + EXPECT_METRIC_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_TRUE( webrtc::metrics::NumEvents(kUsagePatternMetric, expected_fingerprint) == 2 || webrtc::metrics::NumEvents( @@ -484,12 +484,11 @@ TEST_F(PeerConnectionUsageHistogramTest, FingerprintWithMdnsCaller) { PeerConnection::UsageEvent::ICE_STATE_CONNECTED, PeerConnection::UsageEvent::REMOTE_CANDIDATE_ADDED, PeerConnection::UsageEvent::CLOSE_CALLED}); - - EXPECT_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); - EXPECT_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, - expected_fingerprint_caller)); - EXPECT_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, - expected_fingerprint_callee)); + EXPECT_METRIC_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, + expected_fingerprint_caller)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, + expected_fingerprint_callee)); } // Test getting the usage fingerprint when the callee collects an mDNS @@ -533,12 +532,11 @@ TEST_F(PeerConnectionUsageHistogramTest, FingerprintWithMdnsCallee) { PeerConnection::UsageEvent::REMOTE_CANDIDATE_ADDED, PeerConnection::UsageEvent::DIRECT_CONNECTION_SELECTED, PeerConnection::UsageEvent::CLOSE_CALLED}); - - EXPECT_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); - EXPECT_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, - expected_fingerprint_caller)); - EXPECT_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, - expected_fingerprint_callee)); + EXPECT_METRIC_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, + expected_fingerprint_caller)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, + expected_fingerprint_callee)); } #ifdef HAVE_SCTP @@ -560,8 +558,8 @@ TEST_F(PeerConnectionUsageHistogramTest, FingerprintDataOnly) { PeerConnection::UsageEvent::REMOTE_CANDIDATE_ADDED, PeerConnection::UsageEvent::DIRECT_CONNECTION_SELECTED, PeerConnection::UsageEvent::CLOSE_CALLED}); - EXPECT_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); - EXPECT_TRUE( + EXPECT_METRIC_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_TRUE( webrtc::metrics::NumEvents(kUsagePatternMetric, expected_fingerprint) == 2 || webrtc::metrics::NumEvents( @@ -590,8 +588,8 @@ TEST_F(PeerConnectionUsageHistogramTest, FingerprintStunTurn) { MakeUsageFingerprint({PeerConnection::UsageEvent::STUN_SERVER_ADDED, PeerConnection::UsageEvent::TURN_SERVER_ADDED, PeerConnection::UsageEvent::CLOSE_CALLED}); - EXPECT_EQ(1, webrtc::metrics::NumSamples(kUsagePatternMetric)); - EXPECT_EQ( + EXPECT_METRIC_EQ(1, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_EQ( 1, webrtc::metrics::NumEvents(kUsagePatternMetric, expected_fingerprint)); } @@ -612,8 +610,8 @@ TEST_F(PeerConnectionUsageHistogramTest, FingerprintStunTurnInReconfiguration) { MakeUsageFingerprint({PeerConnection::UsageEvent::STUN_SERVER_ADDED, PeerConnection::UsageEvent::TURN_SERVER_ADDED, PeerConnection::UsageEvent::CLOSE_CALLED}); - EXPECT_EQ(1, webrtc::metrics::NumSamples(kUsagePatternMetric)); - EXPECT_EQ( + EXPECT_METRIC_EQ(1, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_EQ( 1, webrtc::metrics::NumEvents(kUsagePatternMetric, expected_fingerprint)); } @@ -648,12 +646,11 @@ TEST_F(PeerConnectionUsageHistogramTest, FingerprintWithPrivateIPCaller) { PeerConnection::UsageEvent::REMOTE_CANDIDATE_ADDED, PeerConnection::UsageEvent::DIRECT_CONNECTION_SELECTED, PeerConnection::UsageEvent::CLOSE_CALLED}); - - EXPECT_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); - EXPECT_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, - expected_fingerprint_caller)); - EXPECT_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, - expected_fingerprint_callee)); + EXPECT_METRIC_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, + expected_fingerprint_caller)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, + expected_fingerprint_callee)); } TEST_F(PeerConnectionUsageHistogramTest, FingerprintWithPrivateIpv6Callee) { @@ -689,12 +686,11 @@ TEST_F(PeerConnectionUsageHistogramTest, FingerprintWithPrivateIpv6Callee) { PeerConnection::UsageEvent::ICE_STATE_CONNECTED, PeerConnection::UsageEvent::DIRECT_CONNECTION_SELECTED, PeerConnection::UsageEvent::CLOSE_CALLED}); - - EXPECT_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); - EXPECT_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, - expected_fingerprint_caller)); - EXPECT_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, - expected_fingerprint_callee)); + EXPECT_METRIC_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, + expected_fingerprint_caller)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, + expected_fingerprint_callee)); } #ifndef WEBRTC_ANDROID @@ -772,12 +768,11 @@ TEST_F(PeerConnectionUsageHistogramTest, PeerConnection::UsageEvent::ICE_STATE_CONNECTED, PeerConnection::UsageEvent::DIRECT_CONNECTION_SELECTED, PeerConnection::UsageEvent::CLOSE_CALLED}); - - EXPECT_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); - EXPECT_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, - expected_fingerprint_caller)); - EXPECT_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, - expected_fingerprint_callee)); + EXPECT_METRIC_EQ(2, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, + expected_fingerprint_caller)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents(kUsagePatternMetric, + expected_fingerprint_callee)); } TEST_F(PeerConnectionUsageHistogramTest, NotableUsageNoted) { @@ -790,14 +785,15 @@ TEST_F(PeerConnectionUsageHistogramTest, NotableUsageNoted) { PeerConnection::UsageEvent::SET_LOCAL_DESCRIPTION_SUCCEEDED, PeerConnection::UsageEvent::CANDIDATE_COLLECTED, PeerConnection::UsageEvent::CLOSE_CALLED}); - EXPECT_EQ(1, webrtc::metrics::NumSamples(kUsagePatternMetric)); - EXPECT_TRUE(expected_fingerprint == ObservedFingerprint() || - (expected_fingerprint | - static_cast( - PeerConnection::UsageEvent::PRIVATE_CANDIDATE_COLLECTED)) == - ObservedFingerprint()); - EXPECT_EQ(absl::make_optional(ObservedFingerprint()), - caller->observer()->interesting_usage_detected()); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_TRUE( + expected_fingerprint == ObservedFingerprint() || + (expected_fingerprint | + static_cast( + PeerConnection::UsageEvent::PRIVATE_CANDIDATE_COLLECTED)) == + ObservedFingerprint()); + EXPECT_METRIC_EQ(absl::make_optional(ObservedFingerprint()), + caller->observer()->interesting_usage_detected()); } TEST_F(PeerConnectionUsageHistogramTest, NotableUsageOnEventFiring) { @@ -808,17 +804,18 @@ TEST_F(PeerConnectionUsageHistogramTest, NotableUsageOnEventFiring) { {PeerConnection::UsageEvent::DATA_ADDED, PeerConnection::UsageEvent::SET_LOCAL_DESCRIPTION_SUCCEEDED, PeerConnection::UsageEvent::CANDIDATE_COLLECTED}); - EXPECT_EQ(0, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_EQ(0, webrtc::metrics::NumSamples(kUsagePatternMetric)); caller->GetInternalPeerConnection()->RequestUsagePatternReportForTesting(); - EXPECT_EQ_WAIT(1, webrtc::metrics::NumSamples(kUsagePatternMetric), - kDefaultTimeout); - EXPECT_TRUE(expected_fingerprint == ObservedFingerprint() || - (expected_fingerprint | - static_cast( - PeerConnection::UsageEvent::PRIVATE_CANDIDATE_COLLECTED)) == - ObservedFingerprint()); - EXPECT_EQ(absl::make_optional(ObservedFingerprint()), - caller->observer()->interesting_usage_detected()); + EXPECT_METRIC_EQ_WAIT(1, webrtc::metrics::NumSamples(kUsagePatternMetric), + kDefaultTimeout); + EXPECT_METRIC_TRUE( + expected_fingerprint == ObservedFingerprint() || + (expected_fingerprint | + static_cast( + PeerConnection::UsageEvent::PRIVATE_CANDIDATE_COLLECTED)) == + ObservedFingerprint()); + EXPECT_METRIC_EQ(absl::make_optional(ObservedFingerprint()), + caller->observer()->interesting_usage_detected()); } TEST_F(PeerConnectionUsageHistogramTest, @@ -831,20 +828,21 @@ TEST_F(PeerConnectionUsageHistogramTest, PeerConnection::UsageEvent::SET_LOCAL_DESCRIPTION_SUCCEEDED, PeerConnection::UsageEvent::CANDIDATE_COLLECTED, PeerConnection::UsageEvent::CLOSE_CALLED}); - EXPECT_EQ(0, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_EQ(0, webrtc::metrics::NumSamples(kUsagePatternMetric)); caller->pc()->Close(); - EXPECT_EQ(1, webrtc::metrics::NumSamples(kUsagePatternMetric)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumSamples(kUsagePatternMetric)); caller->GetInternalPeerConnection()->RequestUsagePatternReportForTesting(); caller->observer()->ClearInterestingUsageDetector(); - EXPECT_EQ_WAIT(2, webrtc::metrics::NumSamples(kUsagePatternMetric), - kDefaultTimeout); - EXPECT_TRUE(expected_fingerprint == ObservedFingerprint() || - (expected_fingerprint | - static_cast( - PeerConnection::UsageEvent::PRIVATE_CANDIDATE_COLLECTED)) == - ObservedFingerprint()); + EXPECT_METRIC_EQ_WAIT(2, webrtc::metrics::NumSamples(kUsagePatternMetric), + kDefaultTimeout); + EXPECT_METRIC_TRUE( + expected_fingerprint == ObservedFingerprint() || + (expected_fingerprint | + static_cast( + PeerConnection::UsageEvent::PRIVATE_CANDIDATE_COLLECTED)) == + ObservedFingerprint()); // After close, the usage-detection callback should NOT have been called. - EXPECT_FALSE(caller->observer()->interesting_usage_detected()); + EXPECT_METRIC_FALSE(caller->observer()->interesting_usage_detected()); } #endif #endif diff --git a/pc/peer_connection_ice_unittest.cc b/pc/peer_connection_ice_unittest.cc index 18a053c51e..7d8ce57937 100644 --- a/pc/peer_connection_ice_unittest.cc +++ b/pc/peer_connection_ice_unittest.cc @@ -457,8 +457,9 @@ TEST_P(PeerConnectionIceTest, CannotAddCandidateWhenRemoteDescriptionNotSet) { caller->CreateOfferAndSetAsLocal(); EXPECT_FALSE(caller->pc()->AddIceCandidate(jsep_candidate.get())); - EXPECT_THAT(webrtc::metrics::Samples("WebRTC.PeerConnection.AddIceCandidate"), - ElementsAre(Pair(kAddIceCandidateFailNoRemoteDescription, 2))); + EXPECT_METRIC_THAT( + webrtc::metrics::Samples("WebRTC.PeerConnection.AddIceCandidate"), + ElementsAre(Pair(kAddIceCandidateFailNoRemoteDescription, 2))); } TEST_P(PeerConnectionIceTest, CannotAddCandidateWhenPeerConnectionClosed) { diff --git a/pc/peer_connection_integrationtest.cc b/pc/peer_connection_integrationtest.cc index d68b058a4b..ab617c685b 100644 --- a/pc/peer_connection_integrationtest.cc +++ b/pc/peer_connection_integrationtest.cc @@ -1658,9 +1658,9 @@ class PeerConnectionIntegrationBaseTest : public ::testing::Test { EXPECT_EQ_WAIT(rtc::SrtpCryptoSuiteToName(expected_cipher_suite), caller()->OldGetStats()->SrtpCipher(), kDefaultTimeout); // TODO(bugs.webrtc.org/9456): Fix it. - EXPECT_EQ(1, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.SrtpCryptoSuite.Audio", - expected_cipher_suite)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.SrtpCryptoSuite.Audio", + expected_cipher_suite)); } void TestGcmNegotiationUsesCipherSuite(bool local_gcm_enabled, @@ -1844,10 +1844,12 @@ TEST_P(PeerConnectionIntegrationTest, EndToEndCallWithDtls) { MediaExpectations media_expectations; media_expectations.ExpectBidirectionalAudioAndVideo(); ASSERT_TRUE(ExpectNewFrames(media_expectations)); - EXPECT_LE(2, webrtc::metrics::NumEvents("WebRTC.PeerConnection.KeyProtocol", - webrtc::kEnumCounterKeyProtocolDtls)); - EXPECT_EQ(0, webrtc::metrics::NumEvents("WebRTC.PeerConnection.KeyProtocol", - webrtc::kEnumCounterKeyProtocolSdes)); + EXPECT_METRIC_LE( + 2, webrtc::metrics::NumEvents("WebRTC.PeerConnection.KeyProtocol", + webrtc::kEnumCounterKeyProtocolDtls)); + EXPECT_METRIC_EQ( + 0, webrtc::metrics::NumEvents("WebRTC.PeerConnection.KeyProtocol", + webrtc::kEnumCounterKeyProtocolSdes)); } // Uses SDES instead of DTLS for key agreement. @@ -1866,10 +1868,12 @@ TEST_P(PeerConnectionIntegrationTest, EndToEndCallWithSdes) { MediaExpectations media_expectations; media_expectations.ExpectBidirectionalAudioAndVideo(); ASSERT_TRUE(ExpectNewFrames(media_expectations)); - EXPECT_LE(2, webrtc::metrics::NumEvents("WebRTC.PeerConnection.KeyProtocol", - webrtc::kEnumCounterKeyProtocolSdes)); - EXPECT_EQ(0, webrtc::metrics::NumEvents("WebRTC.PeerConnection.KeyProtocol", - webrtc::kEnumCounterKeyProtocolDtls)); + EXPECT_METRIC_LE( + 2, webrtc::metrics::NumEvents("WebRTC.PeerConnection.KeyProtocol", + webrtc::kEnumCounterKeyProtocolSdes)); + EXPECT_METRIC_EQ( + 0, webrtc::metrics::NumEvents("WebRTC.PeerConnection.KeyProtocol", + webrtc::kEnumCounterKeyProtocolDtls)); } // Basic end-to-end test specifying the |enable_encrypted_rtp_header_extensions| @@ -3036,9 +3040,9 @@ TEST_P(PeerConnectionIntegrationTest, Dtls10CipherStatsAndUmaMetrics) { EXPECT_EQ_WAIT(rtc::SrtpCryptoSuiteToName(kDefaultSrtpCryptoSuite), caller()->OldGetStats()->SrtpCipher(), kDefaultTimeout); // TODO(bugs.webrtc.org/9456): Fix it. - EXPECT_EQ(1, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.SrtpCryptoSuite.Audio", - kDefaultSrtpCryptoSuite)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.SrtpCryptoSuite.Audio", + kDefaultSrtpCryptoSuite)); } // Test getting cipher stats and UMA metrics when DTLS 1.2 is negotiated. @@ -3058,9 +3062,9 @@ TEST_P(PeerConnectionIntegrationTest, Dtls12CipherStatsAndUmaMetrics) { EXPECT_EQ_WAIT(rtc::SrtpCryptoSuiteToName(kDefaultSrtpCryptoSuite), caller()->OldGetStats()->SrtpCipher(), kDefaultTimeout); // TODO(bugs.webrtc.org/9456): Fix it. - EXPECT_EQ(1, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.SrtpCryptoSuite.Audio", - kDefaultSrtpCryptoSuite)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.SrtpCryptoSuite.Audio", + kDefaultSrtpCryptoSuite)); } // Test that DTLS 1.0 can be used if the caller supports DTLS 1.2 and the @@ -4359,9 +4363,9 @@ TEST_P(PeerConnectionIntegrationTest, EXPECT_EQ_WAIT(webrtc::PeerConnectionInterface::kIceConnectionConnected, callee()->ice_connection_state(), kDefaultTimeout); - EXPECT_EQ(1, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.CandidatePairType_UDP", - webrtc::kIceCandidatePairHostNameHostName)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.CandidatePairType_UDP", + webrtc::kIceCandidatePairHostNameHostName)); } // Test that firewalling the ICE connection causes the clients to identify the @@ -4593,19 +4597,19 @@ TEST_P(PeerConnectionIntegrationIceStatesTest, VerifyBestConnection) { if (TestIPv6()) { // When IPv6 is enabled, we should prefer an IPv6 connection over an IPv4 // connection. - EXPECT_EQ(0, num_best_ipv4); - EXPECT_EQ(1, num_best_ipv6); + EXPECT_METRIC_EQ(0, num_best_ipv4); + EXPECT_METRIC_EQ(1, num_best_ipv6); } else { - EXPECT_EQ(1, num_best_ipv4); - EXPECT_EQ(0, num_best_ipv6); + EXPECT_METRIC_EQ(1, num_best_ipv4); + EXPECT_METRIC_EQ(0, num_best_ipv6); } - EXPECT_EQ(0, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.CandidatePairType_UDP", - webrtc::kIceCandidatePairHostHost)); - EXPECT_EQ(1, webrtc::metrics::NumEvents( - "WebRTC.PeerConnection.CandidatePairType_UDP", - webrtc::kIceCandidatePairHostPublicHostPublic)); + EXPECT_METRIC_EQ(0, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.CandidatePairType_UDP", + webrtc::kIceCandidatePairHostHost)); + EXPECT_METRIC_EQ(1, webrtc::metrics::NumEvents( + "WebRTC.PeerConnection.CandidatePairType_UDP", + webrtc::kIceCandidatePairHostPublicHostPublic)); } constexpr uint32_t kFlagsIPv4NoStun = cricket::PORTALLOCATOR_DISABLE_TCP | diff --git a/pc/peer_connection_rtp_unittest.cc b/pc/peer_connection_rtp_unittest.cc index a1f50c51a2..9e4a816a45 100644 --- a/pc/peer_connection_rtp_unittest.cc +++ b/pc/peer_connection_rtp_unittest.cc @@ -1571,8 +1571,9 @@ TEST_F(PeerConnectionMsidSignalingTest, UnifiedPlanTalkingToOurself) { EXPECT_EQ(cricket::kMsidSignalingMediaSection, answer->description()->msid_signaling()); // Check that this is counted correctly - EXPECT_THAT(metrics::Samples("WebRTC.PeerConnection.SdpSemanticNegotiated"), - ElementsAre(Pair(kSdpSemanticNegotiatedUnifiedPlan, 2))); + EXPECT_METRIC_THAT( + metrics::Samples("WebRTC.PeerConnection.SdpSemanticNegotiated"), + ElementsAre(Pair(kSdpSemanticNegotiatedUnifiedPlan, 2))); } TEST_F(PeerConnectionMsidSignalingTest, PlanBOfferToUnifiedPlanAnswer) { @@ -1660,8 +1661,9 @@ TEST_F(SdpFormatReceivedTest, DataChannelOnlyIsReportedAsNoTracks) { ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOffer())); // Note that only the callee does ReportSdpFormatReceived. - EXPECT_THAT(metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"), - ElementsAre(Pair(kSdpFormatReceivedNoTracks, 1))); + EXPECT_METRIC_THAT( + metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"), + ElementsAre(Pair(kSdpFormatReceivedNoTracks, 1))); } #endif // HAVE_SCTP @@ -1673,8 +1675,9 @@ TEST_F(SdpFormatReceivedTest, SimpleUnifiedPlanIsReportedAsSimple) { ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOffer())); // Note that only the callee does ReportSdpFormatReceived. - EXPECT_THAT(metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"), - ElementsAre(Pair(kSdpFormatReceivedSimple, 1))); + EXPECT_METRIC_THAT( + metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"), + ElementsAre(Pair(kSdpFormatReceivedSimple, 1))); } TEST_F(SdpFormatReceivedTest, SimplePlanBIsReportedAsSimple) { @@ -1684,8 +1687,9 @@ TEST_F(SdpFormatReceivedTest, SimplePlanBIsReportedAsSimple) { ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOffer())); // Note that only the callee does ReportSdpFormatReceived. - EXPECT_THAT(metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"), - ElementsAre(Pair(kSdpFormatReceivedSimple, 1))); + EXPECT_METRIC_THAT( + metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"), + ElementsAre(Pair(kSdpFormatReceivedSimple, 1))); } TEST_F(SdpFormatReceivedTest, ComplexUnifiedIsReportedAsComplexUnifiedPlan) { @@ -1697,8 +1701,9 @@ TEST_F(SdpFormatReceivedTest, ComplexUnifiedIsReportedAsComplexUnifiedPlan) { ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOffer())); // Note that only the callee does ReportSdpFormatReceived. - EXPECT_THAT(metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"), - ElementsAre(Pair(kSdpFormatReceivedComplexUnifiedPlan, 1))); + EXPECT_METRIC_THAT( + metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"), + ElementsAre(Pair(kSdpFormatReceivedComplexUnifiedPlan, 1))); } TEST_F(SdpFormatReceivedTest, ComplexPlanBIsReportedAsComplexPlanB) { @@ -1712,8 +1717,9 @@ TEST_F(SdpFormatReceivedTest, ComplexPlanBIsReportedAsComplexPlanB) { // SDP Format to be recorded. ASSERT_FALSE(callee->SetRemoteDescription(caller->CreateOffer())); // Note that only the callee does ReportSdpFormatReceived. - EXPECT_THAT(metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"), - ElementsAre(Pair(kSdpFormatReceivedComplexPlanB, 1))); + EXPECT_METRIC_THAT( + metrics::Samples("WebRTC.PeerConnection.SdpFormatReceived"), + ElementsAre(Pair(kSdpFormatReceivedComplexPlanB, 1))); } // Sender setups in a call. diff --git a/pc/peer_connection_simulcast_unittest.cc b/pc/peer_connection_simulcast_unittest.cc index b8743c6246..42bdae17b9 100644 --- a/pc/peer_connection_simulcast_unittest.cc +++ b/pc/peer_connection_simulcast_unittest.cc @@ -77,6 +77,7 @@ std::vector CreateLayers(const std::vector& rids, return CreateLayers(rids, std::vector(rids.size(), active)); } +#if RTC_METRICS_ENABLED std::vector CreateLayers(int num_layers, bool active) { rtc::UniqueStringGenerator rid_generator; std::vector rids; @@ -85,8 +86,10 @@ std::vector CreateLayers(int num_layers, bool active) { } return CreateLayers(rids, active); } +#endif } // namespace + namespace webrtc { class PeerConnectionSimulcastTests : public ::testing::Test { @@ -193,6 +196,7 @@ class PeerConnectionSimulcastTests : public ::testing::Test { rtc::scoped_refptr pc_factory_; }; +#if RTC_METRICS_ENABLED // This class is used to test the metrics emitted for simulcast. class PeerConnectionSimulcastMetricsTests : public PeerConnectionSimulcastTests, @@ -209,6 +213,7 @@ class PeerConnectionSimulcastMetricsTests "WebRTC.PeerConnection.Simulcast.ApplyRemoteDescription"); } }; +#endif // Validates that RIDs are supported arguments when adding a transceiver. TEST_F(PeerConnectionSimulcastTests, CanCreateTransceiverWithRid) { @@ -550,6 +555,8 @@ TEST_F(PeerConnectionSimulcastTests, NegotiationDoesNotHaveRidExtension) { EXPECT_TRUE(local->SetRemoteDescription(std::move(answer), &err)) << err; ValidateTransceiverParameters(transceiver, expected_layers); } + +#if RTC_METRICS_ENABLED // // Checks the logged metrics when simulcast is not used. TEST_F(PeerConnectionSimulcastMetricsTests, NoSimulcastUsageIsLogged) { @@ -719,5 +726,5 @@ TEST_P(PeerConnectionSimulcastMetricsTests, NumberOfSendEncodingsIsLogged) { INSTANTIATE_TEST_SUITE_P(NumberOfSendEncodings, PeerConnectionSimulcastMetricsTests, ::testing::Range(0, kMaxLayersInMetricsTest)); - +#endif } // namespace webrtc diff --git a/pc/srtp_session_unittest.cc b/pc/srtp_session_unittest.cc index 0125cc1414..d0f6ea6c84 100644 --- a/pc/srtp_session_unittest.cc +++ b/pc/srtp_session_unittest.cc @@ -153,11 +153,11 @@ TEST_F(SrtpSessionTest, TestTamperReject) { rtp_packet_[0] = 0x12; rtcp_packet_[1] = 0x34; EXPECT_FALSE(s2_.UnprotectRtp(rtp_packet_, rtp_len_, &out_len)); - EXPECT_THAT( + EXPECT_METRIC_THAT( webrtc::metrics::Samples("WebRTC.PeerConnection.SrtpUnprotectError"), ElementsAre(Pair(srtp_err_status_bad_param, 1))); EXPECT_FALSE(s2_.UnprotectRtcp(rtcp_packet_, rtcp_len_, &out_len)); - EXPECT_THAT( + EXPECT_METRIC_THAT( webrtc::metrics::Samples("WebRTC.PeerConnection.SrtcpUnprotectError"), ElementsAre(Pair(srtp_err_status_auth_fail, 1))); } @@ -170,11 +170,11 @@ TEST_F(SrtpSessionTest, TestUnencryptReject) { EXPECT_TRUE(s2_.SetRecv(SRTP_AES128_CM_SHA1_80, kTestKey1, kTestKeyLen, kEncryptedHeaderExtensionIds)); EXPECT_FALSE(s2_.UnprotectRtp(rtp_packet_, rtp_len_, &out_len)); - EXPECT_THAT( + EXPECT_METRIC_THAT( webrtc::metrics::Samples("WebRTC.PeerConnection.SrtpUnprotectError"), ElementsAre(Pair(srtp_err_status_auth_fail, 1))); EXPECT_FALSE(s2_.UnprotectRtcp(rtcp_packet_, rtcp_len_, &out_len)); - EXPECT_THAT( + EXPECT_METRIC_THAT( webrtc::metrics::Samples("WebRTC.PeerConnection.SrtcpUnprotectError"), ElementsAre(Pair(srtp_err_status_cant_check, 1))); } diff --git a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java index cc06c62000..2993bfd4f6 100644 --- a/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java +++ b/sdk/android/instrumentationtests/src/org/webrtc/PeerConnectionTest.java @@ -44,7 +44,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.webrtc.Logging; -import org.webrtc.Metrics.HistogramInfo; import org.webrtc.PeerConnection.IceConnectionState; import org.webrtc.PeerConnection.IceGatheringState; import org.webrtc.PeerConnection.PeerConnectionState; @@ -1157,7 +1156,6 @@ public class PeerConnectionTest { offeringPC = null; shutdownPC(answeringPC, answeringExpectations); answeringPC = null; - getMetrics(); videoCapturer.stopCapture(); videoCapturer.dispose(); videoSource.dispose(); @@ -1872,16 +1870,6 @@ public class PeerConnectionTest { assertNull(sdpLatch.getSdp()); } - private static void getMetrics() { - Metrics metrics = Metrics.getAndReset(); - assertTrue(metrics.map.size() > 0); - // Test for example that the lifetime of a Call is recorded. - String name = "WebRTC.Call.LifetimeInSeconds"; - assertTrue(metrics.map.containsKey(name)); - HistogramInfo info = metrics.map.get(name); - assertTrue(info.samples.size() > 0); - } - @SuppressWarnings("deprecation") // TODO(sakal): getStats is deprecated private static void shutdownPC(PeerConnection pc, ObserverExpectations expectations) { if (expectations.dataChannel != null) { diff --git a/system_wrappers/include/metrics.h b/system_wrappers/include/metrics.h index 18c97574b1..8e0f084934 100644 --- a/system_wrappers/include/metrics.h +++ b/system_wrappers/include/metrics.h @@ -20,6 +20,39 @@ #include "rtc_base/atomic_ops.h" #include "rtc_base/checks.h" +#if defined(RTC_DISABLE_METRICS) +#define RTC_METRICS_ENABLED 0 +#else +#define RTC_METRICS_ENABLED 1 +#endif + +namespace webrtc { +namespace metrics_impl { +template +void NoOp(const Ts&...) {} +} +} + +#if RTC_METRICS_ENABLED +#define EXPECT_METRIC_EQ(val1, val2) EXPECT_EQ(val1, val2) +#define EXPECT_METRIC_EQ_WAIT(val1, val2, timeout) \ + EXPECT_EQ_WAIT(val1, val2, timeout) +#define EXPECT_METRIC_GT(val1, val2) EXPECT_GT(val1, val2) +#define EXPECT_METRIC_LE(val1, val2) EXPECT_LE(val1, val2) +#define EXPECT_METRIC_TRUE(conditon) EXPECT_TRUE(conditon) +#define EXPECT_METRIC_FALSE(conditon) EXPECT_FALSE(conditon) +#define EXPECT_METRIC_THAT(value, matcher) EXPECT_THAT(value, matcher) +#else +#define EXPECT_METRIC_EQ(val1, val2) webrtc::metrics_impl::NoOp(val1, val2) +#define EXPECT_METRIC_EQ_WAIT(val1, val2, timeout) webrtc::metrics_impl::NoOp(val1, val2, timeout) +#define EXPECT_METRIC_GT(val1, val2) webrtc::metrics_impl::NoOp(val1, val2) +#define EXPECT_METRIC_LE(val1, val2) webrtc::metrics_impl::NoOp(val1, val2) +#define EXPECT_METRIC_TRUE(condition) webrtc::metrics_impl::NoOp(condition || true) +#define EXPECT_METRIC_FALSE(condition) webrtc::metrics_impl::NoOp(condition && false) +#define EXPECT_METRIC_THAT(value, matcher) webrtc::metrics_impl::NoOp(value, testing::_) +#endif + +#if RTC_METRICS_ENABLED // Macros for allowing WebRTC clients (e.g. Chrome) to gather and aggregate // statistics. // @@ -241,6 +274,91 @@ } \ } while (0) +#else + +//////////////////////////////////////////////////////////////////////////////// +// This section defines no-op alternatives to the metrics macros when +// RTC_METRICS_ENABLED is defined. + +#define RTC_HISTOGRAM_COUNTS_100(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS_200(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS_500(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS_1000(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS_10000(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS_100000(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS(name, sample, min, max, bucket_count) \ + webrtc::metrics_impl::NoOp(name, sample, min, max, bucket_count) + +#define RTC_HISTOGRAM_COUNTS_LINEAR(name, sample, min, max, bucket_count) \ + webrtc::metrics_impl::NoOp(name, sample, min, max, bucket_count) + +#define RTC_HISTOGRAM_COUNTS_SPARSE_100(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS_SPARSE_200(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS_SPARSE_500(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS_SPARSE_1000(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS_SPARSE_10000(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS_SPARSE_100000(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_COUNTS_SPARSE(name, sample, min, max, bucket_count) \ + webrtc::metrics_impl::NoOp(name, sample, min, max, bucket_count) + +#define RTC_HISTOGRAM_PERCENTAGE_SPARSE(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_BOOLEAN_SPARSE(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_ENUMERATION_SPARSE(name, sample, boundary) \ + webrtc::metrics_impl::NoOp(name, sample, boundary) + +#define RTC_HISTOGRAM_PERCENTAGE(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_BOOLEAN(name, sample) webrtc::metrics_impl::NoOp(name, sample) + +#define RTC_HISTOGRAM_ENUMERATION(name, sample, boundary) \ + webrtc::metrics_impl::NoOp(name, sample, boundary) + +#define RTC_HISTOGRAM_COMMON_BLOCK(constant_name, sample, \ + factory_get_invocation) \ + webrtc::metrics_impl::NoOp(constant_name, sample, factory_get_invocation) + +#define RTC_HISTOGRAM_COMMON_BLOCK_SLOW(name, sample, factory_get_invocation) \ + webrtc::metrics_impl::NoOp(name, sample, factory_get_invocation) + +#define RTC_HISTOGRAMS_COUNTS_100(index, name, sample) webrtc::metrics_impl::NoOp(index, name, sample) + +#define RTC_HISTOGRAMS_COUNTS_200(index, name, sample) webrtc::metrics_impl::NoOp(index, name, sample) + +#define RTC_HISTOGRAMS_COUNTS_500(index, name, sample) webrtc::metrics_impl::NoOp(index, name, sample) + +#define RTC_HISTOGRAMS_COUNTS_1000(index, name, sample) \ + webrtc::metrics_impl::NoOp(index, name, sample) + +#define RTC_HISTOGRAMS_COUNTS_10000(index, name, sample) \ + webrtc::metrics_impl::NoOp(index, name, sample) + +#define RTC_HISTOGRAMS_COUNTS_100000(index, name, sample) \ + webrtc::metrics_impl::NoOp(index, name, sample) + +#define RTC_HISTOGRAMS_ENUMERATION(index, name, sample, boundary) \ + webrtc::metrics_impl::NoOp(index, name, sample, boundary) + +#define RTC_HISTOGRAMS_PERCENTAGE(index, name, sample) webrtc::metrics_impl::NoOp(index, name, sample) + +#define RTC_HISTOGRAMS_COMMON(index, name, sample, macro_invocation) \ + webrtc::metrics_impl::NoOp(index, name, sample, macro_invocation) + +#endif // RTC_METRICS_ENABLED + namespace webrtc { namespace metrics { diff --git a/system_wrappers/source/metrics_default_unittest.cc b/system_wrappers/source/metrics_default_unittest.cc index cb427c2f29..5f71c6fd16 100644 --- a/system_wrappers/source/metrics_default_unittest.cc +++ b/system_wrappers/source/metrics_default_unittest.cc @@ -17,6 +17,7 @@ #include "system_wrappers/include/metrics.h" #include "test/gtest.h" +#if RTC_METRICS_ENABLED namespace webrtc { namespace { @@ -164,3 +165,4 @@ TEST_F(MetricsDefaultTest, TestMinMaxBucket) { } } // namespace webrtc +#endif diff --git a/system_wrappers/source/metrics_unittest.cc b/system_wrappers/source/metrics_unittest.cc index fa8bb2da1c..9e5bc86ba9 100644 --- a/system_wrappers/source/metrics_unittest.cc +++ b/system_wrappers/source/metrics_unittest.cc @@ -17,6 +17,7 @@ using ::testing::ElementsAre; using ::testing::IsEmpty; using ::testing::Pair; +#if RTC_METRICS_ENABLED namespace webrtc { namespace { const int kSample = 22; @@ -130,3 +131,4 @@ TEST_F(MetricsTest, RtcHistogramSparse_NonConstantNameWorks) { } } // namespace webrtc +#endif diff --git a/video/call_stats_unittest.cc b/video/call_stats_unittest.cc index 85b9eb951d..c560ccbee6 100644 --- a/video/call_stats_unittest.cc +++ b/video/call_stats_unittest.cc @@ -315,10 +315,11 @@ TEST_F(CallStatsTest, ProducesHistogramMetrics) { process_thread_->Stop(); call_stats_.UpdateHistogramsForTest(); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.AverageRoundTripTimeInMilliseconds")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.AverageRoundTripTimeInMilliseconds", kRtt)); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.AverageRoundTripTimeInMilliseconds")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.AverageRoundTripTimeInMilliseconds", + kRtt)); } } // namespace webrtc diff --git a/video/end_to_end_tests/histogram_tests.cc b/video/end_to_end_tests/histogram_tests.cc index ef435b4512..dd6de2543d 100644 --- a/video/end_to_end_tests/histogram_tests.cc +++ b/video/end_to_end_tests/histogram_tests.cc @@ -150,113 +150,146 @@ void HistogramTest::VerifyHistogramStats(bool use_rtx, const std::string video_suffix = screenshare ? ".S0" : ""; // Verify that stats have been updated once. - EXPECT_EQ(2, metrics::NumSamples("WebRTC.Call.LifetimeInSeconds")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Call.TimeReceivingVideoRtpPacketsInSeconds")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Call.VideoBitrateReceivedInKbps")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Call.RtcpBitrateReceivedInBps")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Call.BitrateReceivedInKbps")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Call.EstimatedSendBitrateInKbps")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Call.PacerBitrateInKbps")); + EXPECT_METRIC_EQ(2, metrics::NumSamples("WebRTC.Call.LifetimeInSeconds")); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Call.TimeReceivingVideoRtpPacketsInSeconds")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Call.VideoBitrateReceivedInKbps")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Call.RtcpBitrateReceivedInBps")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Call.BitrateReceivedInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Call.EstimatedSendBitrateInKbps")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Call.PacerBitrateInKbps")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.SendStreamLifetimeInSeconds")); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.ReceiveStreamLifetimeInSeconds")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.SendStreamLifetimeInSeconds")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.ReceiveStreamLifetimeInSeconds")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.NackPacketsSentPerMinute")); - EXPECT_EQ(1, - metrics::NumSamples(video_prefix + "NackPacketsReceivedPerMinute")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.FirPacketsSentPerMinute")); - EXPECT_EQ(1, - metrics::NumSamples(video_prefix + "FirPacketsReceivedPerMinute")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.PliPacketsSentPerMinute")); - EXPECT_EQ(1, - metrics::NumSamples(video_prefix + "PliPacketsReceivedPerMinute")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.NackPacketsSentPerMinute")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(video_prefix + "NackPacketsReceivedPerMinute")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.FirPacketsSentPerMinute")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(video_prefix + "FirPacketsReceivedPerMinute")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.PliPacketsSentPerMinute")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(video_prefix + "PliPacketsReceivedPerMinute")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "KeyFramesSentInPermille")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.KeyFramesReceivedInPermille")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(video_prefix + "KeyFramesSentInPermille")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.KeyFramesReceivedInPermille")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentPacketsLostInPercent")); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(video_prefix + "SentPacketsLostInPercent")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputWidthInPixels")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputHeightInPixels")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentWidthInPixels")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentHeightInPixels")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "ReceivedWidthInPixels")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "ReceivedHeightInPixels")); + EXPECT_METRIC_EQ(1, metrics::NumSamples(video_prefix + "InputWidthInPixels")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(video_prefix + "InputHeightInPixels")); + EXPECT_METRIC_EQ(1, metrics::NumSamples(video_prefix + "SentWidthInPixels")); + EXPECT_METRIC_EQ(1, metrics::NumSamples(video_prefix + "SentHeightInPixels")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(video_prefix + "ReceivedWidthInPixels")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(video_prefix + "ReceivedHeightInPixels")); - EXPECT_EQ(1, metrics::NumEvents(video_prefix + "InputWidthInPixels", - kDefaultWidth)); - EXPECT_EQ(1, metrics::NumEvents(video_prefix + "InputHeightInPixels", - kDefaultHeight)); - EXPECT_EQ( + EXPECT_METRIC_EQ(1, metrics::NumEvents(video_prefix + "InputWidthInPixels", + kDefaultWidth)); + EXPECT_METRIC_EQ(1, metrics::NumEvents(video_prefix + "InputHeightInPixels", + kDefaultHeight)); + EXPECT_METRIC_EQ( 1, metrics::NumEvents(video_prefix + "SentWidthInPixels", kDefaultWidth)); - EXPECT_EQ(1, metrics::NumEvents(video_prefix + "SentHeightInPixels", - kDefaultHeight)); - EXPECT_EQ(1, metrics::NumEvents(video_prefix + "ReceivedWidthInPixels", - kDefaultWidth)); - EXPECT_EQ(1, metrics::NumEvents(video_prefix + "ReceivedHeightInPixels", - kDefaultHeight)); + EXPECT_METRIC_EQ(1, metrics::NumEvents(video_prefix + "SentHeightInPixels", + kDefaultHeight)); + EXPECT_METRIC_EQ(1, metrics::NumEvents(video_prefix + "ReceivedWidthInPixels", + kDefaultWidth)); + EXPECT_METRIC_EQ(1, + metrics::NumEvents(video_prefix + "ReceivedHeightInPixels", + kDefaultHeight)); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputFramesPerSecond")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentFramesPerSecond")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.DecodedFramesPerSecond")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RenderFramesPerSecond")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(video_prefix + "InputFramesPerSecond")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(video_prefix + "SentFramesPerSecond")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.DecodedFramesPerSecond")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.RenderFramesPerSecond")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.JitterBufferDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.TargetDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.CurrentDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.OnewayDelayInMs")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.JitterBufferDelayInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.TargetDelayInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.CurrentDelayInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.OnewayDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "EndToEndDelayInMs" + - video_suffix)); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "EndToEndDelayMaxInMs" + - video_suffix)); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InterframeDelayInMs" + - video_suffix)); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InterframeDelayMaxInMs" + - video_suffix)); + EXPECT_METRIC_EQ(1, metrics::NumSamples(video_prefix + "EndToEndDelayInMs" + + video_suffix)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(video_prefix + "EndToEndDelayMaxInMs" + + video_suffix)); + EXPECT_METRIC_EQ(1, metrics::NumSamples(video_prefix + "InterframeDelayInMs" + + video_suffix)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(video_prefix + "InterframeDelayMaxInMs" + + video_suffix)); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RenderSqrtPixelsPerSecond")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.RenderSqrtPixelsPerSecond")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "EncodeTimeInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.DecodeTimeInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples(video_prefix + "EncodeTimeInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.DecodeTimeInMs")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "NumberOfPauseEvents")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "PausedTimeInPercent")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(video_prefix + "NumberOfPauseEvents")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(video_prefix + "PausedTimeInPercent")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "BitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.BitrateReceivedInKbps")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "MediaBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.MediaBitrateReceivedInKbps")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "PaddingBitrateSentInKbps")); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.PaddingBitrateReceivedInKbps")); - EXPECT_EQ( + EXPECT_METRIC_EQ(1, metrics::NumSamples(video_prefix + "BitrateSentInKbps")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.BitrateReceivedInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(video_prefix + "MediaBitrateSentInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.MediaBitrateReceivedInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(video_prefix + "PaddingBitrateSentInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.PaddingBitrateReceivedInKbps")); + EXPECT_METRIC_EQ( 1, metrics::NumSamples(video_prefix + "RetransmittedBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.RetransmittedBitrateReceivedInKbps")); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.RetransmittedBitrateReceivedInKbps")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.SendDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SendSideDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SendSideDelayMaxInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.SendDelayInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples(video_prefix + "SendSideDelayInMs")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(video_prefix + "SendSideDelayMaxInMs")); int num_rtx_samples = use_rtx ? 1 : 0; - EXPECT_EQ(num_rtx_samples, - metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps")); - EXPECT_EQ(num_rtx_samples, - metrics::NumSamples("WebRTC.Video.RtxBitrateReceivedInKbps")); + EXPECT_METRIC_EQ(num_rtx_samples, + metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps")); + EXPECT_METRIC_EQ( + num_rtx_samples, + metrics::NumSamples("WebRTC.Video.RtxBitrateReceivedInKbps")); int num_red_samples = use_fec ? 1 : 0; - EXPECT_EQ(num_red_samples, - metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); - EXPECT_EQ(num_red_samples, - metrics::NumSamples("WebRTC.Video.FecBitrateReceivedInKbps")); - EXPECT_EQ(num_red_samples, - metrics::NumSamples("WebRTC.Video.ReceivedFecPacketsInPercent")); + EXPECT_METRIC_EQ(num_red_samples, + metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); + EXPECT_METRIC_EQ( + num_red_samples, + metrics::NumSamples("WebRTC.Video.FecBitrateReceivedInKbps")); + EXPECT_METRIC_EQ( + num_red_samples, + metrics::NumSamples("WebRTC.Video.ReceivedFecPacketsInPercent")); } TEST_F(HistogramTest, VerifyStatsWithRtx) { diff --git a/video/end_to_end_tests/stats_tests.cc b/video/end_to_end_tests/stats_tests.cc index 88e0ca76c4..a6b1c9e142 100644 --- a/video/end_to_end_tests/stats_tests.cc +++ b/video/end_to_end_tests/stats_tests.cc @@ -589,18 +589,19 @@ TEST_F(StatsEndToEndTest, MAYBE_ContentTypeSwitches) { }); // Verify that stats have been updated for both screenshare and video. - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.EndToEndDelayInMs")); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.Screenshare.EndToEndDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.EndToEndDelayMaxInMs")); - EXPECT_EQ( + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.EndToEndDelayInMs")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.Screenshare.EndToEndDelayInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.EndToEndDelayMaxInMs")); + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.Screenshare.EndToEndDelayMaxInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs")); - EXPECT_EQ( + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs")); + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.Screenshare.InterframeDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.InterframeDelayMaxInMs")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.Screenshare.InterframeDelayMaxInMs")); } TEST_F(StatsEndToEndTest, VerifyNackStats) { @@ -709,11 +710,12 @@ TEST_F(StatsEndToEndTest, VerifyNackStats) { metrics::Reset(); RunBaseTest(&test); - EXPECT_EQ( + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.UniqueNackRequestsSentInPercent")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.UniqueNackRequestsReceivedInPercent")); - EXPECT_GT(metrics::MinSample("WebRTC.Video.NackPacketsSentPerMinute"), 0); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.UniqueNackRequestsReceivedInPercent")); + EXPECT_METRIC_GT(metrics::MinSample("WebRTC.Video.NackPacketsSentPerMinute"), + 0); } TEST_F(StatsEndToEndTest, CallReportsRttForSender) { diff --git a/video/receive_statistics_proxy_unittest.cc b/video/receive_statistics_proxy_unittest.cc index a775624656..0f0d56ceba 100644 --- a/video/receive_statistics_proxy_unittest.cc +++ b/video/receive_statistics_proxy_unittest.cc @@ -101,8 +101,10 @@ TEST_F(ReceiveStatisticsProxyTest, DecodedFpsIsReported) { } statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.DecodedFramesPerSecond")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.DecodedFramesPerSecond", kFps)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.DecodedFramesPerSecond")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.DecodedFramesPerSecond", kFps)); } TEST_F(ReceiveStatisticsProxyTest, DecodedFpsIsNotReportedForTooFewSamples) { @@ -116,7 +118,8 @@ TEST_F(ReceiveStatisticsProxyTest, DecodedFpsIsNotReportedForTooFewSamples) { } statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.DecodedFramesPerSecond")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples("WebRTC.Video.DecodedFramesPerSecond")); } TEST_F(ReceiveStatisticsProxyTest, @@ -592,10 +595,11 @@ TEST_F(ReceiveStatisticsProxyTest, LifetimeHistogramIsUpdated) { statistics_proxy_->OnCompleteFrame(true, 1000, VideoContentType::UNSPECIFIED); statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.ReceiveStreamLifetimeInSeconds")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.ReceiveStreamLifetimeInSeconds", - kTimeSec)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.ReceiveStreamLifetimeInSeconds")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.ReceiveStreamLifetimeInSeconds", + kTimeSec)); } TEST_F(ReceiveStatisticsProxyTest, @@ -605,8 +609,8 @@ TEST_F(ReceiveStatisticsProxyTest, // No frames received. statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(0, - metrics::NumSamples("WebRTC.Video.ReceiveStreamLifetimeInSeconds")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.ReceiveStreamLifetimeInSeconds")); } TEST_F(ReceiveStatisticsProxyTest, BadCallHistogramsAreUpdated) { @@ -627,21 +631,23 @@ TEST_F(ReceiveStatisticsProxyTest, BadCallHistogramsAreUpdated) { statistics_proxy_->OnRenderedFrame(frame); } statistics_proxy_->UpdateHistograms(absl::nullopt, counters, nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.BadCall.Any")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.BadCall.Any", 100)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.BadCall.Any")); + EXPECT_METRIC_EQ(1, metrics::NumEvents("WebRTC.Video.BadCall.Any", 100)); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.BadCall.FrameRate")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.BadCall.FrameRate", 100)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.BadCall.FrameRate")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.BadCall.FrameRate", 100)); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.BadCall.FrameRateVariance")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.BadCall.FrameRateVariance")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.BadCall.Qp")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.BadCall.Qp")); } TEST_F(ReceiveStatisticsProxyTest, PacketLossHistogramIsUpdated) { statistics_proxy_->UpdateHistograms(10, StreamDataCounters(), nullptr); - EXPECT_EQ(0, - metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent")); // Restart SetUp(); @@ -649,9 +655,9 @@ TEST_F(ReceiveStatisticsProxyTest, PacketLossHistogramIsUpdated) { // Min run time has passed. fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); statistics_proxy_->UpdateHistograms(10, StreamDataCounters(), nullptr); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.ReceivedPacketsLostInPercent", 10)); } @@ -691,9 +697,9 @@ TEST_F(ReceiveStatisticsProxyTest, AvSyncOffsetHistogramIsUpdated) { kFreqKhz); statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AVSyncOffsetInMs")); - EXPECT_EQ(1, - metrics::NumEvents("WebRTC.Video.AVSyncOffsetInMs", kSyncOffsetMs)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.AVSyncOffsetInMs")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.AVSyncOffsetInMs", kSyncOffsetMs)); } TEST_F(ReceiveStatisticsProxyTest, RtpToNtpFrequencyOffsetHistogramIsUpdated) { @@ -717,8 +723,10 @@ TEST_F(ReceiveStatisticsProxyTest, RtpToNtpFrequencyOffsetHistogramIsUpdated) { statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); // Average reported: (2 + 4) / 2 = 3. - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RtpToNtpFreqOffsetInKhz")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.RtpToNtpFreqOffsetInKhz", 3)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.RtpToNtpFreqOffsetInKhz")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.RtpToNtpFreqOffsetInKhz", 3)); } TEST_F(ReceiveStatisticsProxyTest, Vp8QpHistogramIsUpdated) { @@ -729,8 +737,8 @@ TEST_F(ReceiveStatisticsProxyTest, Vp8QpHistogramIsUpdated) { statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Decoded.Vp8.Qp")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.Decoded.Vp8.Qp", kQp)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.Decoded.Vp8.Qp")); + EXPECT_METRIC_EQ(1, metrics::NumEvents("WebRTC.Video.Decoded.Vp8.Qp", kQp)); } TEST_F(ReceiveStatisticsProxyTest, Vp8QpHistogramIsNotUpdatedForTooFewSamples) { @@ -741,7 +749,7 @@ TEST_F(ReceiveStatisticsProxyTest, Vp8QpHistogramIsNotUpdatedForTooFewSamples) { statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.Decoded.Vp8.Qp")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.Decoded.Vp8.Qp")); } TEST_F(ReceiveStatisticsProxyTest, Vp8QpHistogramIsNotUpdatedIfNoQpValue) { @@ -750,7 +758,7 @@ TEST_F(ReceiveStatisticsProxyTest, Vp8QpHistogramIsNotUpdatedIfNoQpValue) { statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.Decoded.Vp8.Qp")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.Decoded.Vp8.Qp")); } TEST_F(ReceiveStatisticsProxyTest, @@ -768,7 +776,8 @@ TEST_F(ReceiveStatisticsProxyTest, statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.KeyFramesReceivedInPermille")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.KeyFramesReceivedInPermille")); } TEST_F(ReceiveStatisticsProxyTest, @@ -786,9 +795,10 @@ TEST_F(ReceiveStatisticsProxyTest, statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.KeyFramesReceivedInPermille")); - EXPECT_EQ(1, - metrics::NumEvents("WebRTC.Video.KeyFramesReceivedInPermille", 0)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.KeyFramesReceivedInPermille")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.KeyFramesReceivedInPermille", 0)); } TEST_F(ReceiveStatisticsProxyTest, KeyFrameHistogramIsUpdated) { @@ -809,8 +819,9 @@ TEST_F(ReceiveStatisticsProxyTest, KeyFrameHistogramIsUpdated) { statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.KeyFramesReceivedInPermille")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.KeyFramesReceivedInPermille")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.KeyFramesReceivedInPermille", 500)); } @@ -830,11 +841,12 @@ TEST_F(ReceiveStatisticsProxyTest, TimingHistogramsNotUpdatedForTooFewSamples) { statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.DecodeTimeInMs")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.JitterBufferDelayInMs")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.TargetDelayInMs")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.CurrentDelayInMs")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.OnewayDelayInMs")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.DecodeTimeInMs")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples("WebRTC.Video.JitterBufferDelayInMs")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.TargetDelayInMs")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.CurrentDelayInMs")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.OnewayDelayInMs")); } TEST_F(ReceiveStatisticsProxyTest, TimingHistogramsAreUpdated) { @@ -853,19 +865,20 @@ TEST_F(ReceiveStatisticsProxyTest, TimingHistogramsAreUpdated) { statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.JitterBufferDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.TargetDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.CurrentDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.OnewayDelayInMs")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.JitterBufferDelayInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.TargetDelayInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.CurrentDelayInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.OnewayDelayInMs")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.JitterBufferDelayInMs", - kJitterBufferMs)); - EXPECT_EQ(1, - metrics::NumEvents("WebRTC.Video.TargetDelayInMs", kTargetDelayMs)); - EXPECT_EQ( + EXPECT_METRIC_EQ(1, metrics::NumEvents("WebRTC.Video.JitterBufferDelayInMs", + kJitterBufferMs)); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.TargetDelayInMs", kTargetDelayMs)); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.CurrentDelayInMs", kCurrentDelayMs)); - EXPECT_EQ(1, - metrics::NumEvents("WebRTC.Video.OnewayDelayInMs", kTargetDelayMs)); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.OnewayDelayInMs", kTargetDelayMs)); } TEST_F(ReceiveStatisticsProxyTest, DoesNotReportStaleFramerates) { @@ -910,10 +923,14 @@ TEST_F(ReceiveStatisticsProxyTest, statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.ReceivedWidthInPixels")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.ReceivedHeightInPixels")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.RenderFramesPerSecond")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.RenderSqrtPixelsPerSecond")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples("WebRTC.Video.ReceivedWidthInPixels")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples("WebRTC.Video.ReceivedHeightInPixels")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples("WebRTC.Video.RenderFramesPerSecond")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.RenderSqrtPixelsPerSecond")); } TEST_F(ReceiveStatisticsProxyTest, ReceivedFrameHistogramsAreUpdated) { @@ -922,14 +939,18 @@ TEST_F(ReceiveStatisticsProxyTest, ReceivedFrameHistogramsAreUpdated) { statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedWidthInPixels")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedHeightInPixels")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RenderFramesPerSecond")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RenderSqrtPixelsPerSecond")); - EXPECT_EQ(1, - metrics::NumEvents("WebRTC.Video.ReceivedWidthInPixels", kWidth)); - EXPECT_EQ(1, - metrics::NumEvents("WebRTC.Video.ReceivedHeightInPixels", kHeight)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.ReceivedWidthInPixels")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.ReceivedHeightInPixels")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.RenderFramesPerSecond")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.RenderSqrtPixelsPerSecond")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.ReceivedWidthInPixels", kWidth)); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.ReceivedHeightInPixels", kHeight)); } TEST_F(ReceiveStatisticsProxyTest, ZeroDelayReportedIfFrameNotDelayed) { @@ -945,10 +966,12 @@ TEST_F(ReceiveStatisticsProxyTest, ZeroDelayReportedIfFrameNotDelayed) { fake_clock_.AdvanceTimeMilliseconds((metrics::kMinRunTimeInSeconds * 1000)); statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.DelayedFramesToRenderer", 0)); - EXPECT_EQ(0, metrics::NumSamples( - "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.DelayedFramesToRenderer", 0)); + EXPECT_METRIC_EQ(0, metrics::NumSamples( + "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs")); } TEST_F(ReceiveStatisticsProxyTest, @@ -966,9 +989,10 @@ TEST_F(ReceiveStatisticsProxyTest, 1); statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); - EXPECT_EQ(0, metrics::NumSamples( - "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); + EXPECT_METRIC_EQ(0, metrics::NumSamples( + "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs")); } TEST_F(ReceiveStatisticsProxyTest, @@ -981,9 +1005,10 @@ TEST_F(ReceiveStatisticsProxyTest, fake_clock_.AdvanceTimeMilliseconds((metrics::kMinRunTimeInSeconds * 1000)); statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); - EXPECT_EQ(0, metrics::NumSamples( - "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); + EXPECT_METRIC_EQ(0, metrics::NumSamples( + "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs")); } TEST_F(ReceiveStatisticsProxyTest, DelayReportedIfFrameIsDelayed) { @@ -999,12 +1024,15 @@ TEST_F(ReceiveStatisticsProxyTest, DelayReportedIfFrameIsDelayed) { fake_clock_.AdvanceTimeMilliseconds((metrics::kMinRunTimeInSeconds * 1000)); statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.DelayedFramesToRenderer", 100)); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs", 1)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.DelayedFramesToRenderer", 100)); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs", + 1)); } TEST_F(ReceiveStatisticsProxyTest, AverageDelayOfDelayedFramesIsReported) { @@ -1023,12 +1051,15 @@ TEST_F(ReceiveStatisticsProxyTest, AverageDelayOfDelayedFramesIsReported) { fake_clock_.AdvanceTimeMilliseconds((metrics::kMinRunTimeInSeconds * 1000)); statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.DelayedFramesToRenderer", 50)); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs", 8)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.DelayedFramesToRenderer")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.DelayedFramesToRenderer", 50)); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs", + 8)); } TEST_F(ReceiveStatisticsProxyTest, @@ -1043,9 +1074,12 @@ TEST_F(ReceiveStatisticsProxyTest, statistics_proxy_->RtcpPacketTypesCounterUpdated(kRemoteSsrc, counter); statistics_proxy_->UpdateHistograms(absl::nullopt, data_counters, nullptr); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.FirPacketsSentPerMinute")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.PliPacketsSentPerMinute")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.NackPacketsSentPerMinute")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples("WebRTC.Video.FirPacketsSentPerMinute")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples("WebRTC.Video.PliPacketsSentPerMinute")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.NackPacketsSentPerMinute")); } TEST_F(ReceiveStatisticsProxyTest, RtcpHistogramsAreUpdated) { @@ -1064,16 +1098,19 @@ TEST_F(ReceiveStatisticsProxyTest, RtcpHistogramsAreUpdated) { statistics_proxy_->RtcpPacketTypesCounterUpdated(kRemoteSsrc, counter); statistics_proxy_->UpdateHistograms(absl::nullopt, data_counters, nullptr); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.FirPacketsSentPerMinute")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.PliPacketsSentPerMinute")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.NackPacketsSentPerMinute")); - EXPECT_EQ( + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.FirPacketsSentPerMinute")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.PliPacketsSentPerMinute")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.NackPacketsSentPerMinute")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.FirPacketsSentPerMinute", kFirPackets * 60 / metrics::kMinRunTimeInSeconds)); - EXPECT_EQ( + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.PliPacketsSentPerMinute", kPliPackets * 60 / metrics::kMinRunTimeInSeconds)); - EXPECT_EQ( + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.NackPacketsSentPerMinute", kNackPackets * 60 / metrics::kMinRunTimeInSeconds)); } @@ -1162,17 +1199,17 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, InterFrameDelaysAreReported) { kInterFrameDelayMs * 2) / kMinRequiredSamples; if (videocontenttypehelpers::IsScreenshare(content_type_)) { - EXPECT_EQ( + EXPECT_METRIC_EQ( kExpectedInterFrame, metrics::MinSample("WebRTC.Video.Screenshare.InterframeDelayInMs")); - EXPECT_EQ( + EXPECT_METRIC_EQ( kInterFrameDelayMs * 2, metrics::MinSample("WebRTC.Video.Screenshare.InterframeDelayMaxInMs")); } else { - EXPECT_EQ(kExpectedInterFrame, - metrics::MinSample("WebRTC.Video.InterframeDelayInMs")); - EXPECT_EQ(kInterFrameDelayMs * 2, - metrics::MinSample("WebRTC.Video.InterframeDelayMaxInMs")); + EXPECT_METRIC_EQ(kExpectedInterFrame, + metrics::MinSample("WebRTC.Video.InterframeDelayInMs")); + EXPECT_METRIC_EQ(kInterFrameDelayMs * 2, + metrics::MinSample("WebRTC.Video.InterframeDelayMaxInMs")); } } @@ -1199,11 +1236,12 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, nullptr); const int kExpectedInterFrame = kInterFrameDelayMs * 2; if (videocontenttypehelpers::IsScreenshare(content_type_)) { - EXPECT_EQ(kExpectedInterFrame, - metrics::MinSample( - "WebRTC.Video.Screenshare.InterframeDelay95PercentileInMs")); + EXPECT_METRIC_EQ( + kExpectedInterFrame, + metrics::MinSample( + "WebRTC.Video.Screenshare.InterframeDelay95PercentileInMs")); } else { - EXPECT_EQ( + EXPECT_METRIC_EQ( kExpectedInterFrame, metrics::MinSample("WebRTC.Video.InterframeDelay95PercentileInMs")); } @@ -1223,12 +1261,13 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, // means we're one frame short of having a valid data set. statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs")); - EXPECT_EQ( + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs")); + EXPECT_METRIC_EQ( 0, metrics::NumSamples("WebRTC.Video.Screenshare.InterframeDelayInMs")); - EXPECT_EQ(0, metrics::NumSamples( - "WebRTC.Video.Screenshare.InterframeDelayMaxInMs")); + EXPECT_METRIC_EQ(0, metrics::NumSamples( + "WebRTC.Video.Screenshare.InterframeDelayMaxInMs")); } TEST_P(ReceiveStatisticsProxyTestWithContent, MaxInterFrameDelayOnlyWithPause) { @@ -1254,23 +1293,25 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, MaxInterFrameDelayOnlyWithPause) { statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); if (videocontenttypehelpers::IsScreenshare(content_type_)) { - EXPECT_EQ( + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.Screenshare.InterframeDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.InterframeDelayMaxInMs")); - EXPECT_EQ( + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.Screenshare.InterframeDelayMaxInMs")); + EXPECT_METRIC_EQ( kInterFrameDelayMs, metrics::MinSample("WebRTC.Video.Screenshare.InterframeDelayInMs")); - EXPECT_EQ( + EXPECT_METRIC_EQ( kInterFrameDelayMs, metrics::MinSample("WebRTC.Video.Screenshare.InterframeDelayMaxInMs")); } else { - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs")); - EXPECT_EQ(kInterFrameDelayMs, - metrics::MinSample("WebRTC.Video.InterframeDelayInMs")); - EXPECT_EQ(kInterFrameDelayMs, - metrics::MinSample("WebRTC.Video.InterframeDelayMaxInMs")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.InterframeDelayInMs")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs")); + EXPECT_METRIC_EQ(kInterFrameDelayMs, + metrics::MinSample("WebRTC.Video.InterframeDelayInMs")); + EXPECT_METRIC_EQ(kInterFrameDelayMs, + metrics::MinSample("WebRTC.Video.InterframeDelayMaxInMs")); } } @@ -1297,22 +1338,23 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, FreezesAreReported) { kInterFrameDelayMs * (kMinRequiredSamples - 1); const int kExpectedNumberFreezesPerMinute = 60 * 1000 / kCallDurationMs; if (videocontenttypehelpers::IsScreenshare(content_type_)) { - EXPECT_EQ( + EXPECT_METRIC_EQ( kFreezeDelayMs + kInterFrameDelayMs, metrics::MinSample("WebRTC.Video.Screenshare.MeanFreezeDurationMs")); - EXPECT_EQ(kExpectedTimeBetweenFreezes, - metrics::MinSample( - "WebRTC.Video.Screenshare.MeanTimeBetweenFreezesMs")); - EXPECT_EQ( + EXPECT_METRIC_EQ(kExpectedTimeBetweenFreezes, + metrics::MinSample( + "WebRTC.Video.Screenshare.MeanTimeBetweenFreezesMs")); + EXPECT_METRIC_EQ( kExpectedNumberFreezesPerMinute, metrics::MinSample("WebRTC.Video.Screenshare.NumberFreezesPerMinute")); } else { - EXPECT_EQ(kFreezeDelayMs + kInterFrameDelayMs, - metrics::MinSample("WebRTC.Video.MeanFreezeDurationMs")); - EXPECT_EQ(kExpectedTimeBetweenFreezes, - metrics::MinSample("WebRTC.Video.MeanTimeBetweenFreezesMs")); - EXPECT_EQ(kExpectedNumberFreezesPerMinute, - metrics::MinSample("WebRTC.Video.NumberFreezesPerMinute")); + EXPECT_METRIC_EQ(kFreezeDelayMs + kInterFrameDelayMs, + metrics::MinSample("WebRTC.Video.MeanFreezeDurationMs")); + EXPECT_METRIC_EQ( + kExpectedTimeBetweenFreezes, + metrics::MinSample("WebRTC.Video.MeanTimeBetweenFreezesMs")); + EXPECT_METRIC_EQ(kExpectedNumberFreezesPerMinute, + metrics::MinSample("WebRTC.Video.NumberFreezesPerMinute")); } } @@ -1354,11 +1396,12 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, HarmonicFrameRateIsReported) { const int kExpectedHarmonicFrameRateFps = std::round(kCallDurationMs / (1000 * kSumSquaredFrameDurationSecs)); if (videocontenttypehelpers::IsScreenshare(content_type_)) { - EXPECT_EQ(kExpectedHarmonicFrameRateFps, - metrics::MinSample("WebRTC.Video.Screenshare.HarmonicFrameRate")); + EXPECT_METRIC_EQ( + kExpectedHarmonicFrameRateFps, + metrics::MinSample("WebRTC.Video.Screenshare.HarmonicFrameRate")); } else { - EXPECT_EQ(kExpectedHarmonicFrameRateFps, - metrics::MinSample("WebRTC.Video.HarmonicFrameRate")); + EXPECT_METRIC_EQ(kExpectedHarmonicFrameRateFps, + metrics::MinSample("WebRTC.Video.HarmonicFrameRate")); } } @@ -1389,15 +1432,17 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, PausesAreIgnored) { const int kExpectedTimeBetweenFreezes = kInterFrameDelayMs * kMinRequiredSamples * 2; if (videocontenttypehelpers::IsScreenshare(content_type_)) { - EXPECT_EQ(-1, metrics::MinSample( - "WebRTC.Video.Screenshare.MeanFreezeDurationMs")); - EXPECT_EQ(kExpectedTimeBetweenFreezes, - metrics::MinSample( - "WebRTC.Video.Screenshare.MeanTimeBetweenFreezesMs")); + EXPECT_METRIC_EQ(-1, metrics::MinSample( + "WebRTC.Video.Screenshare.MeanFreezeDurationMs")); + EXPECT_METRIC_EQ(kExpectedTimeBetweenFreezes, + metrics::MinSample( + "WebRTC.Video.Screenshare.MeanTimeBetweenFreezesMs")); } else { - EXPECT_EQ(-1, metrics::MinSample("WebRTC.Video.MeanFreezeDurationMs")); - EXPECT_EQ(kExpectedTimeBetweenFreezes, - metrics::MinSample("WebRTC.Video.MeanTimeBetweenFreezesMs")); + EXPECT_METRIC_EQ(-1, + metrics::MinSample("WebRTC.Video.MeanFreezeDurationMs")); + EXPECT_METRIC_EQ( + kExpectedTimeBetweenFreezes, + metrics::MinSample("WebRTC.Video.MeanTimeBetweenFreezesMs")); } } @@ -1421,10 +1466,11 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, ManyPausesAtTheBeginning) { nullptr); // No freezes should be detected, as all long inter-frame delays were pauses. if (videocontenttypehelpers::IsScreenshare(content_type_)) { - EXPECT_EQ(-1, metrics::MinSample( - "WebRTC.Video.Screenshare.MeanFreezeDurationMs")); + EXPECT_METRIC_EQ(-1, metrics::MinSample( + "WebRTC.Video.Screenshare.MeanFreezeDurationMs")); } else { - EXPECT_EQ(-1, metrics::MinSample("WebRTC.Video.MeanFreezeDurationMs")); + EXPECT_METRIC_EQ(-1, + metrics::MinSample("WebRTC.Video.MeanFreezeDurationMs")); } } @@ -1454,12 +1500,12 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, TimeInHdReported) { nullptr); const int kExpectedTimeInHdPercents = 33; if (videocontenttypehelpers::IsScreenshare(content_type_)) { - EXPECT_EQ( + EXPECT_METRIC_EQ( kExpectedTimeInHdPercents, metrics::MinSample("WebRTC.Video.Screenshare.TimeInHdPercentage")); } else { - EXPECT_EQ(kExpectedTimeInHdPercents, - metrics::MinSample("WebRTC.Video.TimeInHdPercentage")); + EXPECT_METRIC_EQ(kExpectedTimeInHdPercents, + metrics::MinSample("WebRTC.Video.TimeInHdPercentage")); } } @@ -1489,12 +1535,14 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, TimeInBlockyVideoReported) { nullptr); const int kExpectedTimeInHdPercents = 66; if (videocontenttypehelpers::IsScreenshare(content_type_)) { - EXPECT_EQ(kExpectedTimeInHdPercents, - metrics::MinSample( - "WebRTC.Video.Screenshare.TimeInBlockyVideoPercentage")); + EXPECT_METRIC_EQ( + kExpectedTimeInHdPercents, + metrics::MinSample( + "WebRTC.Video.Screenshare.TimeInBlockyVideoPercentage")); } else { - EXPECT_EQ(kExpectedTimeInHdPercents, - metrics::MinSample("WebRTC.Video.TimeInBlockyVideoPercentage")); + EXPECT_METRIC_EQ( + kExpectedTimeInHdPercents, + metrics::MinSample("WebRTC.Video.TimeInBlockyVideoPercentage")); } } @@ -1523,14 +1571,14 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, DownscalesReported) { nullptr); const int kExpectedDownscales = 30; // 2 per 4 seconds = 30 per minute. if (videocontenttypehelpers::IsScreenshare(content_type_)) { - EXPECT_EQ( + EXPECT_METRIC_EQ( kExpectedDownscales, metrics::MinSample( "WebRTC.Video.Screenshare.NumberResolutionDownswitchesPerMinute")); } else { - EXPECT_EQ(kExpectedDownscales, - metrics::MinSample( - "WebRTC.Video.NumberResolutionDownswitchesPerMinute")); + EXPECT_METRIC_EQ(kExpectedDownscales, + metrics::MinSample( + "WebRTC.Video.NumberResolutionDownswitchesPerMinute")); } } @@ -1547,7 +1595,8 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, DecodeTimeReported) { } statistics_proxy_->UpdateHistograms(absl::nullopt, StreamDataCounters(), nullptr); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.DecodeTimeInMs", kDecodeMs)); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.DecodeTimeInMs", kDecodeMs)); } TEST_P(ReceiveStatisticsProxyTestWithContent, @@ -1574,62 +1623,71 @@ TEST_P(ReceiveStatisticsProxyTestWithContent, nullptr); if (videocontenttypehelpers::IsScreenshare(content_type)) { - EXPECT_EQ( + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.Screenshare.InterframeDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.InterframeDelayMaxInMs")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.InterframeDelayInMs.S0")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.InterframeDelayMaxInMs.S0")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.InterframeDelayInMs.S1")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.InterframeDelayMaxInMs.S1")); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.Screenshare.InterframeDelayInMs" - ".ExperimentGroup0")); - EXPECT_EQ( + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.Screenshare.InterframeDelayMaxInMs")); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.Screenshare.InterframeDelayInMs.S0")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples( + "WebRTC.Video.Screenshare.InterframeDelayMaxInMs.S0")); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.Screenshare.InterframeDelayInMs.S1")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples( + "WebRTC.Video.Screenshare.InterframeDelayMaxInMs.S1")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.Screenshare.InterframeDelayInMs" + ".ExperimentGroup0")); + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.Screenshare.InterframeDelayMaxInMs" ".ExperimentGroup0")); - EXPECT_EQ( + EXPECT_METRIC_EQ( kInterFrameDelayMs1, metrics::MinSample("WebRTC.Video.Screenshare.InterframeDelayInMs.S0")); - EXPECT_EQ( + EXPECT_METRIC_EQ( kInterFrameDelayMs2, metrics::MinSample("WebRTC.Video.Screenshare.InterframeDelayInMs.S1")); - EXPECT_EQ( + EXPECT_METRIC_EQ( (kInterFrameDelayMs1 + kInterFrameDelayMs2) / 2, metrics::MinSample("WebRTC.Video.Screenshare.InterframeDelayInMs")); - EXPECT_EQ( + EXPECT_METRIC_EQ( kInterFrameDelayMs2, metrics::MinSample("WebRTC.Video.Screenshare.InterframeDelayMaxInMs")); - EXPECT_EQ( + EXPECT_METRIC_EQ( (kInterFrameDelayMs1 + kInterFrameDelayMs2) / 2, metrics::MinSample( "WebRTC.Video.Screenshare.InterframeDelayInMs.ExperimentGroup0")); } else { - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs.S0")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs.S0")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs.S1")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs.S1")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs" - ".ExperimentGroup0")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs" - ".ExperimentGroup0")); - EXPECT_EQ(kInterFrameDelayMs1, - metrics::MinSample("WebRTC.Video.InterframeDelayInMs.S0")); - EXPECT_EQ(kInterFrameDelayMs2, - metrics::MinSample("WebRTC.Video.InterframeDelayInMs.S1")); - EXPECT_EQ((kInterFrameDelayMs1 + kInterFrameDelayMs2) / 2, - metrics::MinSample("WebRTC.Video.InterframeDelayInMs")); - EXPECT_EQ(kInterFrameDelayMs2, - metrics::MinSample("WebRTC.Video.InterframeDelayMaxInMs")); - EXPECT_EQ((kInterFrameDelayMs1 + kInterFrameDelayMs2) / 2, - metrics::MinSample( - "WebRTC.Video.InterframeDelayInMs.ExperimentGroup0")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.InterframeDelayInMs")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs.S0")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs.S0")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs.S1")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs.S1")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.InterframeDelayInMs" + ".ExperimentGroup0")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.InterframeDelayMaxInMs" + ".ExperimentGroup0")); + EXPECT_METRIC_EQ(kInterFrameDelayMs1, + metrics::MinSample("WebRTC.Video.InterframeDelayInMs.S0")); + EXPECT_METRIC_EQ(kInterFrameDelayMs2, + metrics::MinSample("WebRTC.Video.InterframeDelayInMs.S1")); + EXPECT_METRIC_EQ((kInterFrameDelayMs1 + kInterFrameDelayMs2) / 2, + metrics::MinSample("WebRTC.Video.InterframeDelayInMs")); + EXPECT_METRIC_EQ(kInterFrameDelayMs2, + metrics::MinSample("WebRTC.Video.InterframeDelayMaxInMs")); + EXPECT_METRIC_EQ((kInterFrameDelayMs1 + kInterFrameDelayMs2) / 2, + metrics::MinSample( + "WebRTC.Video.InterframeDelayInMs.ExperimentGroup0")); } } @@ -1684,10 +1742,10 @@ TEST_P(ReceiveStatisticsProxyTestWithDecodeTimeHistograms, fake_clock_.AdvanceTimeMilliseconds(kFrameDurationMs); } - EXPECT_EQ(expected_number_of_samples_, - metrics::NumSamples(uma_histogram_name_)); - EXPECT_EQ(expected_number_of_samples_, - metrics::NumEvents(uma_histogram_name_, kDecodeTimeMs)); + EXPECT_METRIC_EQ(expected_number_of_samples_, + metrics::NumSamples(uma_histogram_name_)); + EXPECT_METRIC_EQ(expected_number_of_samples_, + metrics::NumEvents(uma_histogram_name_, kDecodeTimeMs)); } const auto kVp94kHw = std::make_tuple(/*killswitch=*/false, diff --git a/video/send_delay_stats_unittest.cc b/video/send_delay_stats_unittest.cc index 37969e4489..e7481f929e 100644 --- a/video/send_delay_stats_unittest.cc +++ b/video/send_delay_stats_unittest.cc @@ -123,9 +123,11 @@ TEST_F(SendDelayStatsTest, HistogramsAreUpdated) { EXPECT_TRUE(OnSentPacket(id)); } stats_.reset(); - EXPECT_EQ(2, metrics::NumSamples("WebRTC.Video.SendDelayInMs")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.SendDelayInMs", kDelayMs1)); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.SendDelayInMs", kDelayMs2)); + EXPECT_METRIC_EQ(2, metrics::NumSamples("WebRTC.Video.SendDelayInMs")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.SendDelayInMs", kDelayMs1)); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.SendDelayInMs", kDelayMs2)); } } // namespace webrtc diff --git a/video/send_statistics_proxy_unittest.cc b/video/send_statistics_proxy_unittest.cc index 3b2b3ad358..2532c29215 100644 --- a/video/send_statistics_proxy_unittest.cc +++ b/video/send_statistics_proxy_unittest.cc @@ -544,9 +544,10 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_AdaptationNotEnabled) { // Min runtime has passed. fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); - EXPECT_EQ(0, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); } TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_MinRuntimeNotPassed) { @@ -561,9 +562,10 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_MinRuntimeNotPassed) { // Min runtime has not passed. fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000 - 1); statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); - EXPECT_EQ(0, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); } TEST_F(SendStatisticsProxyTest, ZeroAdaptChangesReported) { @@ -578,11 +580,13 @@ TEST_F(SendStatisticsProxyTest, ZeroAdaptChangesReported) { // Min runtime has passed. fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 0)); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 0)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 0)); } @@ -601,8 +605,10 @@ TEST_F(SendStatisticsProxyTest, CpuAdaptChangesReported) { quality_counts); fake_clock_.AdvanceTimeMilliseconds(10000); statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 6)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 6)); } TEST_F(SendStatisticsProxyTest, ExcludesInitialQualityAdaptDownChange) { @@ -621,9 +627,9 @@ TEST_F(SendStatisticsProxyTest, ExcludesInitialQualityAdaptDownChange) { statistics_proxy_->OnInitialQualityResolutionAdaptDown(); fake_clock_.AdvanceTimeMilliseconds(10000); statistics_proxy_.reset(); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 0)); } @@ -653,9 +659,9 @@ TEST_F(SendStatisticsProxyTest, ExcludesInitialQualityAdaptDownChanges) { quality_counts); fake_clock_.AdvanceTimeMilliseconds(10000); statistics_proxy_.reset(); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6)); } @@ -676,9 +682,9 @@ TEST_F(SendStatisticsProxyTest, InitialQualityAdaptChangesNotExcludedOnError) { statistics_proxy_->OnInitialQualityResolutionAdaptDown(); fake_clock_.AdvanceTimeMilliseconds(10000); statistics_proxy_.reset(); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6)); } @@ -729,9 +735,9 @@ TEST_F(SendStatisticsProxyTest, ExcludesInitialQualityAdaptDownAndUpChanges) { fake_clock_.AdvanceTimeMilliseconds(10000); statistics_proxy_.reset(); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 24)); } @@ -799,9 +805,9 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesStatsExcludesDisabledTime) { // Adapt changes: 3, elapsed time: 30 sec => 6 per minute. statistics_proxy_.reset(); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6)); } @@ -818,9 +824,10 @@ TEST_F(SendStatisticsProxyTest, // Min runtime has passed but scaling not enabled. fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); - EXPECT_EQ(0, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); } TEST_F(SendStatisticsProxyTest, QualityAdaptChangesStatsExcludesSuspendedTime) { @@ -855,9 +862,9 @@ TEST_F(SendStatisticsProxyTest, QualityAdaptChangesStatsExcludesSuspendedTime) { // Adapt changes: 3, elapsed time: 30 sec => 6 per minute. statistics_proxy_.reset(); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6)); } @@ -913,8 +920,10 @@ TEST_F(SendStatisticsProxyTest, CpuAdaptChangesStatsExcludesSuspendedTime) { // Adapt changes: 2, elapsed time: 30 sec => 4 per minute. statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 4)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 4)); } TEST_F(SendStatisticsProxyTest, AdaptChangesStatsNotStartedIfVideoSuspended) { @@ -942,8 +951,10 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesStatsNotStartedIfVideoSuspended) { // Adapt changes: 1, elapsed time: 10 sec => 6 per minute. statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 6)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 6)); } TEST_F(SendStatisticsProxyTest, AdaptChangesStatsRestartsOnFirstSentPacket) { @@ -966,9 +977,9 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesStatsRestartsOnFirstSentPacket) { // Adapt changes: 1, elapsed time: 10 sec => 6 per minute. statistics_proxy_.reset(); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Quality", 6)); } @@ -1007,8 +1018,10 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesStatsStartedAfterFirstSentPacket) { // Adapt changes: 1, elapsed time: 20 sec => 3 per minute. statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 3)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 3)); } TEST_F(SendStatisticsProxyTest, AdaptChangesReportedAfterContentSwitch) { @@ -1036,10 +1049,12 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesReportedAfterContentSwitch) { VideoEncoderConfig config; config.content_type = VideoEncoderConfig::ContentType::kScreen; statistics_proxy_->OnEncoderReconfigured(config, {}); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 8)); - EXPECT_EQ(0, - metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 8)); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality")); // First RTP packet sent, scaling enabled. UpdateDataCounters(kFirstSsrc); @@ -1063,12 +1078,15 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesReportedAfterContentSwitch) { fake_clock_.AdvanceTimeMilliseconds(120000); statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.AdaptChangesPerMinute.Cpu")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.Screenshare.AdaptChangesPerMinute.Cpu", 2)); - EXPECT_EQ(0, metrics::NumSamples( - "WebRTC.Video.Screenshare.AdaptChangesPerMinute.Quality")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples( + "WebRTC.Video.Screenshare.AdaptChangesPerMinute.Cpu")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents( + "WebRTC.Video.Screenshare.AdaptChangesPerMinute.Cpu", 2)); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples( + "WebRTC.Video.Screenshare.AdaptChangesPerMinute.Quality")); } TEST_F(SendStatisticsProxyTest, @@ -1452,12 +1470,12 @@ TEST_F(SendStatisticsProxyTest, SwitchContentTypeUpdatesHistograms) { VideoEncoderConfig config; config.content_type = VideoEncoderConfig::ContentType::kRealtimeVideo; statistics_proxy_->OnEncoderReconfigured(config, {}); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.InputWidthInPixels")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.InputWidthInPixels")); // Switch to screenshare, real-time stats should be updated. config.content_type = VideoEncoderConfig::ContentType::kScreen; statistics_proxy_->OnEncoderReconfigured(config, {}); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InputWidthInPixels")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.InputWidthInPixels")); } TEST_F(SendStatisticsProxyTest, InputResolutionHistogramsAreUpdated) { @@ -1465,10 +1483,12 @@ TEST_F(SendStatisticsProxyTest, InputResolutionHistogramsAreUpdated) { statistics_proxy_->OnIncomingFrame(kWidth, kHeight); statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InputWidthInPixels")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.InputWidthInPixels", kWidth)); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InputHeightInPixels")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.InputHeightInPixels", kHeight)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.InputWidthInPixels")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.InputWidthInPixels", kWidth)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.InputHeightInPixels")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.InputHeightInPixels", kHeight)); } TEST_F(SendStatisticsProxyTest, SentResolutionHistogramsAreUpdated) { @@ -1486,8 +1506,8 @@ TEST_F(SendStatisticsProxyTest, SentResolutionHistogramsAreUpdated) { statistics_proxy_->OnSendEncodedImage(encoded_image, nullptr); } SetUp(); // Reset stats proxy also causes histograms to be reported. - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.SentWidthInPixels")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.SentHeightInPixels")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.SentWidthInPixels")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.SentHeightInPixels")); // Enough samples, max resolution per frame should be reported. encoded_image.SetTimestamp(0xffff0000); // Will wrap. @@ -1503,10 +1523,12 @@ TEST_F(SendStatisticsProxyTest, SentResolutionHistogramsAreUpdated) { } statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.SentWidthInPixels")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.SentWidthInPixels", kWidth)); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.SentHeightInPixels")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.SentHeightInPixels", kHeight)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.SentWidthInPixels")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.SentWidthInPixels", kWidth)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.SentHeightInPixels")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.SentHeightInPixels", kHeight)); } TEST_F(SendStatisticsProxyTest, InputFpsHistogramIsUpdated) { @@ -1518,8 +1540,9 @@ TEST_F(SendStatisticsProxyTest, InputFpsHistogramIsUpdated) { statistics_proxy_->OnIncomingFrame(kWidth, kHeight); } statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InputFramesPerSecond")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.InputFramesPerSecond", kFps)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.InputFramesPerSecond")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.InputFramesPerSecond", kFps)); } TEST_F(SendStatisticsProxyTest, SentFpsHistogramIsUpdated) { @@ -1535,8 +1558,9 @@ TEST_F(SendStatisticsProxyTest, SentFpsHistogramIsUpdated) { statistics_proxy_->OnSendEncodedImage(encoded_image, nullptr); } statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.SentFramesPerSecond")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.SentFramesPerSecond", kFps)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.SentFramesPerSecond")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.SentFramesPerSecond", kFps)); } TEST_F(SendStatisticsProxyTest, InputFpsHistogramExcludesSuspendedTime) { @@ -1558,8 +1582,9 @@ TEST_F(SendStatisticsProxyTest, InputFpsHistogramExcludesSuspendedTime) { } // Suspended time interval should not affect the framerate. statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.InputFramesPerSecond")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.InputFramesPerSecond", kFps)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.InputFramesPerSecond")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.InputFramesPerSecond", kFps)); } TEST_F(SendStatisticsProxyTest, SentFpsHistogramExcludesSuspendedTime) { @@ -1584,8 +1609,9 @@ TEST_F(SendStatisticsProxyTest, SentFpsHistogramExcludesSuspendedTime) { } // Suspended time interval should not affect the framerate. statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.SentFramesPerSecond")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.SentFramesPerSecond", kFps)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.SentFramesPerSecond")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.SentFramesPerSecond", kFps)); } TEST_F(SendStatisticsProxyTest, CpuLimitedHistogramNotUpdatedWhenDisabled) { @@ -1600,8 +1626,8 @@ TEST_F(SendStatisticsProxyTest, CpuLimitedHistogramNotUpdatedWhenDisabled) { statistics_proxy_->OnIncomingFrame(kWidth, kHeight); statistics_proxy_.reset(); - EXPECT_EQ(0, - metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent")); } TEST_F(SendStatisticsProxyTest, CpuLimitedHistogramUpdated) { @@ -1624,9 +1650,9 @@ TEST_F(SendStatisticsProxyTest, CpuLimitedHistogramUpdated) { statistics_proxy_->OnIncomingFrame(kWidth, kHeight); statistics_proxy_.reset(); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.CpuLimitedResolutionInPercent", 50)); } @@ -1634,15 +1660,17 @@ TEST_F(SendStatisticsProxyTest, LifetimeHistogramIsUpdated) { const int64_t kTimeSec = 3; fake_clock_.AdvanceTimeMilliseconds(kTimeSec * 1000); statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.SendStreamLifetimeInSeconds")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.SendStreamLifetimeInSeconds", - kTimeSec)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.SendStreamLifetimeInSeconds")); + EXPECT_METRIC_EQ( + 1, + metrics::NumEvents("WebRTC.Video.SendStreamLifetimeInSeconds", kTimeSec)); } TEST_F(SendStatisticsProxyTest, CodecTypeHistogramIsUpdated) { fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Encoder.CodecType")); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.Encoder.CodecType")); } TEST_F(SendStatisticsProxyTest, PauseEventHistogramIsUpdated) { @@ -1652,8 +1680,9 @@ TEST_F(SendStatisticsProxyTest, PauseEventHistogramIsUpdated) { // Min runtime has passed. fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.NumberOfPauseEvents", 0)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.NumberOfPauseEvents", 0)); } TEST_F(SendStatisticsProxyTest, @@ -1664,8 +1693,8 @@ TEST_F(SendStatisticsProxyTest, // Min runtime has not passed. fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000 - 1); statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.PausedTimeInPercent")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.PausedTimeInPercent")); } TEST_F(SendStatisticsProxyTest, @@ -1673,7 +1702,7 @@ TEST_F(SendStatisticsProxyTest, // First RTP packet not sent. fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000); statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); } TEST_F(SendStatisticsProxyTest, NoPauseEvent) { @@ -1686,10 +1715,12 @@ TEST_F(SendStatisticsProxyTest, NoPauseEvent) { statistics_proxy_->OnSetEncoderTargetRate(0); // VideoSendStream::Stop statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.NumberOfPauseEvents", 0)); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.PausedTimeInPercent")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.PausedTimeInPercent", 0)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.NumberOfPauseEvents", 0)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.PausedTimeInPercent")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.PausedTimeInPercent", 0)); } TEST_F(SendStatisticsProxyTest, OnePauseEvent) { @@ -1704,10 +1735,12 @@ TEST_F(SendStatisticsProxyTest, OnePauseEvent) { statistics_proxy_->OnSetEncoderTargetRate(0); // VideoSendStream::Stop statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.NumberOfPauseEvents", 1)); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.PausedTimeInPercent")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.PausedTimeInPercent", 30)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.NumberOfPauseEvents", 1)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.PausedTimeInPercent")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.PausedTimeInPercent", 30)); } TEST_F(SendStatisticsProxyTest, TwoPauseEvents) { @@ -1732,10 +1765,12 @@ TEST_F(SendStatisticsProxyTest, TwoPauseEvents) { statistics_proxy_->OnSetEncoderTargetRate(0); // VideoSendStream::Stop statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.NumberOfPauseEvents", 2)); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.PausedTimeInPercent")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.PausedTimeInPercent", 5)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.NumberOfPauseEvents")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.NumberOfPauseEvents", 2)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.PausedTimeInPercent")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.PausedTimeInPercent", 5)); } TEST_F(SendStatisticsProxyTest, @@ -1750,7 +1785,7 @@ TEST_F(SendStatisticsProxyTest, statistics_proxy_->OnSetEncoderTargetRate(0); // VideoSendStream::Stop statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.PausedTimeInPercent")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.PausedTimeInPercent")); } TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp8) { @@ -1767,10 +1802,12 @@ TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp8) { statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info); } statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp8.S0")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp8.S0", kQpIdx0)); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp8.S1")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp8.S1", kQpIdx1)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp8.S0")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp8.S0", kQpIdx0)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp8.S1")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp8.S1", kQpIdx1)); } TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp8OneSsrc) { @@ -1789,8 +1826,9 @@ TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp8OneSsrc) { statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info); } statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp8")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp8", kQpIdx0)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp8")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp8", kQpIdx0)); } TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp9) { @@ -1808,10 +1846,12 @@ TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp9) { statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info); } statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp9.S0")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp9.S0", kQpIdx0)); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp9.S1")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp9.S1", kQpIdx1)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp9.S0")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp9.S0", kQpIdx0)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp9.S1")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp9.S1", kQpIdx1)); } TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp9OneSpatialLayer) { @@ -1830,8 +1870,9 @@ TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp9OneSpatialLayer) { statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info); } statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp9")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp9", kQpIdx0)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.Vp9")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.Encoded.Qp.Vp9", kQpIdx0)); } TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_H264) { @@ -1848,10 +1889,12 @@ TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_H264) { statistics_proxy_->OnSendEncodedImage(encoded_image, &codec_info); } statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.H264.S0")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.H264.S0", kQpIdx0)); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.H264.S1")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.H264.S1", kQpIdx1)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.H264.S0")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.H264.S0", kQpIdx0)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.Encoded.Qp.H264.S1")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Encoded.Qp.H264.S1", kQpIdx1)); } TEST_F(SendStatisticsProxyTest, @@ -1883,10 +1926,10 @@ TEST_F(SendStatisticsProxyTest, // Histograms are updated when the statistics_proxy_ is deleted. statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples( - "WebRTC.Video.BandwidthLimitedResolutionInPercent")); - EXPECT_EQ(0, metrics::NumSamples( - "WebRTC.Video.BandwidthLimitedResolutionsDisabled")); + EXPECT_METRIC_EQ(0, metrics::NumSamples( + "WebRTC.Video.BandwidthLimitedResolutionInPercent")); + EXPECT_METRIC_EQ(0, metrics::NumSamples( + "WebRTC.Video.BandwidthLimitedResolutionsDisabled")); } TEST_F(SendStatisticsProxyTest, @@ -1924,13 +1967,14 @@ TEST_F(SendStatisticsProxyTest, // Histograms are updated when the statistics_proxy_ is deleted. statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.BandwidthLimitedResolutionInPercent")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.BandwidthLimitedResolutionInPercent", 0)); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.BandwidthLimitedResolutionInPercent")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.BandwidthLimitedResolutionInPercent", + 0)); // No resolution disabled. - EXPECT_EQ(0, metrics::NumSamples( - "WebRTC.Video.BandwidthLimitedResolutionsDisabled")); + EXPECT_METRIC_EQ(0, metrics::NumSamples( + "WebRTC.Video.BandwidthLimitedResolutionsDisabled")); } TEST_F(SendStatisticsProxyTest, @@ -1965,15 +2009,17 @@ TEST_F(SendStatisticsProxyTest, // Histograms are updated when the statistics_proxy_ is deleted. statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.BandwidthLimitedResolutionInPercent")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.BandwidthLimitedResolutionInPercent", 100)); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.BandwidthLimitedResolutionInPercent")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.BandwidthLimitedResolutionInPercent", + 100)); // One resolution disabled. - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.BandwidthLimitedResolutionsDisabled")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.BandwidthLimitedResolutionsDisabled", 1)); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.BandwidthLimitedResolutionsDisabled")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.BandwidthLimitedResolutionsDisabled", + 1)); } TEST_F(SendStatisticsProxyTest, @@ -1991,10 +2037,10 @@ TEST_F(SendStatisticsProxyTest, // Histograms are updated when the statistics_proxy_ is deleted. statistics_proxy_.reset(); - EXPECT_EQ( + EXPECT_METRIC_EQ( 0, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent")); - EXPECT_EQ(0, metrics::NumSamples( - "WebRTC.Video.QualityLimitedResolutionDownscales")); + EXPECT_METRIC_EQ(0, metrics::NumSamples( + "WebRTC.Video.QualityLimitedResolutionDownscales")); } TEST_F(SendStatisticsProxyTest, @@ -2012,13 +2058,13 @@ TEST_F(SendStatisticsProxyTest, // Histograms are updated when the statistics_proxy_ is deleted. statistics_proxy_.reset(); - EXPECT_EQ( + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.QualityLimitedResolutionInPercent", 0)); + EXPECT_METRIC_EQ(1, metrics::NumEvents( + "WebRTC.Video.QualityLimitedResolutionInPercent", 0)); // No resolution downscale. - EXPECT_EQ(0, metrics::NumSamples( - "WebRTC.Video.QualityLimitedResolutionDownscales")); + EXPECT_METRIC_EQ(0, metrics::NumSamples( + "WebRTC.Video.QualityLimitedResolutionDownscales")); } TEST_F(SendStatisticsProxyTest, @@ -2036,14 +2082,15 @@ TEST_F(SendStatisticsProxyTest, statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo); // Histograms are updated when the statistics_proxy_ is deleted. statistics_proxy_.reset(); - EXPECT_EQ( + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.QualityLimitedResolutionInPercent")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.QualityLimitedResolutionInPercent", 100)); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.QualityLimitedResolutionInPercent", + 100)); // Resolution downscales. - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.QualityLimitedResolutionDownscales")); - EXPECT_EQ( + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.QualityLimitedResolutionDownscales")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.QualityLimitedResolutionDownscales", kDownscales)); } @@ -2249,22 +2296,27 @@ TEST_F(SendStatisticsProxyTest, ResetsRtcpCountersOnContentChange) { config.content_type = VideoEncoderConfig::ContentType::kScreen; statistics_proxy_->OnEncoderReconfigured(config, {}); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.NackPacketsReceivedPerMinute")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.FirPacketsReceivedPerMinute")); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.PliPacketsReceivedPerMinute")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.UniqueNackRequestsReceivedInPercent")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.NackPacketsReceivedPerMinute")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.FirPacketsReceivedPerMinute")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.PliPacketsReceivedPerMinute")); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.UniqueNackRequestsReceivedInPercent")); const int kRate = 60 * 2; // Packets per minute with two streams. - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.NackPacketsReceivedPerMinute", - 1 * kRate)); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.FirPacketsReceivedPerMinute", - 2 * kRate)); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.PliPacketsReceivedPerMinute", - 3 * kRate)); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.NackPacketsReceivedPerMinute", + 1 * kRate)); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.FirPacketsReceivedPerMinute", + 2 * kRate)); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.PliPacketsReceivedPerMinute", + 3 * kRate)); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.UniqueNackRequestsReceivedInPercent", 4 * 100 / 5)); @@ -2285,29 +2337,35 @@ TEST_F(SendStatisticsProxyTest, ResetsRtcpCountersOnContentChange) { SetUp(); // Reset stats proxy also causes histograms to be reported. - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.NackPacketsReceivedPerMinute")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.FirPacketsReceivedPerMinute")); - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.PliPacketsReceivedPerMinute")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples( + "WebRTC.Video.Screenshare.NackPacketsReceivedPerMinute")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples( + "WebRTC.Video.Screenshare.FirPacketsReceivedPerMinute")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples( + "WebRTC.Video.Screenshare.PliPacketsReceivedPerMinute")); + EXPECT_METRIC_EQ( 1, metrics::NumSamples( "WebRTC.Video.Screenshare.UniqueNackRequestsReceivedInPercent")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.Screenshare.NackPacketsReceivedPerMinute", - 1 * kRate)); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.Screenshare.FirPacketsReceivedPerMinute", - 2 * kRate)); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.Screenshare.PliPacketsReceivedPerMinute", - 3 * kRate)); - EXPECT_EQ(1, - metrics::NumEvents( - "WebRTC.Video.Screenshare.UniqueNackRequestsReceivedInPercent", - 4 * 100 / 5)); + EXPECT_METRIC_EQ( + 1, + metrics::NumEvents( + "WebRTC.Video.Screenshare.NackPacketsReceivedPerMinute", 1 * kRate)); + EXPECT_METRIC_EQ( + 1, + metrics::NumEvents("WebRTC.Video.Screenshare.FirPacketsReceivedPerMinute", + 2 * kRate)); + EXPECT_METRIC_EQ( + 1, + metrics::NumEvents("WebRTC.Video.Screenshare.PliPacketsReceivedPerMinute", + 3 * kRate)); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents( + "WebRTC.Video.Screenshare.UniqueNackRequestsReceivedInPercent", + 4 * 100 / 5)); } TEST_F(SendStatisticsProxyTest, GetStatsReportsIsFlexFec) { @@ -2359,24 +2417,30 @@ TEST_F(SendStatisticsProxyTest, SendBitratesAreReportedWithFlexFecEnabled) { statistics_proxy_.reset(); // Interval: 3500 bytes * 4 / 2 sec = 7000 bytes / sec = 56 kbps - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.BitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.BitrateSentInKbps", 56)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.BitrateSentInKbps")); + EXPECT_METRIC_EQ(1, metrics::NumEvents("WebRTC.Video.BitrateSentInKbps", 56)); // Interval: 3500 bytes * 2 / 2 sec = 3500 bytes / sec = 28 kbps - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.RtxBitrateSentInKbps", 28)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.RtxBitrateSentInKbps", 28)); // Interval: (2000 - 2 * 250) bytes / 2 sec = 1500 bytes / sec = 12 kbps - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.MediaBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.MediaBitrateSentInKbps", 12)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.MediaBitrateSentInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.MediaBitrateSentInKbps", 12)); // Interval: 1000 bytes * 4 / 2 sec = 2000 bytes / sec = 16 kbps - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.PaddingBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.PaddingBitrateSentInKbps", 16)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.PaddingBitrateSentInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.PaddingBitrateSentInKbps", 16)); // Interval: 375 bytes * 2 / 2 sec = 375 bytes / sec = 3 kbps - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.FecBitrateSentInKbps", 3)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.FecBitrateSentInKbps", 3)); // Interval: 375 bytes * 2 / 2 sec = 375 bytes / sec = 3 kbps - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.RetransmittedBitrateSentInKbps")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.RetransmittedBitrateSentInKbps")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.RetransmittedBitrateSentInKbps", 3)); } @@ -2414,24 +2478,30 @@ TEST_F(SendStatisticsProxyTest, ResetsRtpCountersOnContentChange) { statistics_proxy_->OnEncoderReconfigured(config, {}); // Interval: 3500 bytes * 4 / 2 sec = 7000 bytes / sec = 56 kbps - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.BitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.BitrateSentInKbps", 56)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.BitrateSentInKbps")); + EXPECT_METRIC_EQ(1, metrics::NumEvents("WebRTC.Video.BitrateSentInKbps", 56)); // Interval: 3500 bytes * 2 / 2 sec = 3500 bytes / sec = 28 kbps - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.RtxBitrateSentInKbps", 28)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.RtxBitrateSentInKbps", 28)); // Interval: (2000 - 2 * 250) bytes / 2 sec = 1500 bytes / sec = 12 kbps - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.MediaBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.MediaBitrateSentInKbps", 12)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples("WebRTC.Video.MediaBitrateSentInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.MediaBitrateSentInKbps", 12)); // Interval: 1000 bytes * 4 / 2 sec = 2000 bytes / sec = 16 kbps - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.PaddingBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.PaddingBitrateSentInKbps", 16)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.PaddingBitrateSentInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.PaddingBitrateSentInKbps", 16)); // Interval: 375 bytes * 2 / 2 sec = 375 bytes / sec = 3 kbps - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.FecBitrateSentInKbps", 3)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.FecBitrateSentInKbps", 3)); // Interval: 375 bytes * 2 / 2 sec = 375 bytes / sec = 3 kbps - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.RetransmittedBitrateSentInKbps")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.RetransmittedBitrateSentInKbps")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.RetransmittedBitrateSentInKbps", 3)); // New metric counters but same data counters. @@ -2460,36 +2530,39 @@ TEST_F(SendStatisticsProxyTest, ResetsRtpCountersOnContentChange) { statistics_proxy_.reset(); // Interval: 3500 bytes * 4 / 2 sec = 7000 bytes / sec = 56 kbps - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.Screenshare.BitrateSentInKbps")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.Screenshare.BitrateSentInKbps")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.Screenshare.BitrateSentInKbps", 56)); // Interval: 3500 bytes * 2 / 2 sec = 3500 bytes / sec = 28 kbps - EXPECT_EQ( + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.Screenshare.RtxBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.Screenshare.RtxBitrateSentInKbps", 28)); + EXPECT_METRIC_EQ(1, metrics::NumEvents( + "WebRTC.Video.Screenshare.RtxBitrateSentInKbps", 28)); // Interval: (2000 - 2 * 250) bytes / 2 sec = 1500 bytes / sec = 12 kbps - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.MediaBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.Screenshare.MediaBitrateSentInKbps", 12)); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.Screenshare.MediaBitrateSentInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Screenshare.MediaBitrateSentInKbps", + 12)); // Interval: 1000 bytes * 4 / 2 sec = 2000 bytes / sec = 16 kbps - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.PaddingBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.Screenshare.PaddingBitrateSentInKbps", 16)); + EXPECT_METRIC_EQ(1, metrics::NumSamples( + "WebRTC.Video.Screenshare.PaddingBitrateSentInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents("WebRTC.Video.Screenshare.PaddingBitrateSentInKbps", + 16)); // Interval: 375 bytes * 2 / 2 sec = 375 bytes / sec = 3 kbps - EXPECT_EQ( + EXPECT_METRIC_EQ( 1, metrics::NumSamples("WebRTC.Video.Screenshare.FecBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents( - "WebRTC.Video.Screenshare.FecBitrateSentInKbps", 3)); + EXPECT_METRIC_EQ(1, metrics::NumEvents( + "WebRTC.Video.Screenshare.FecBitrateSentInKbps", 3)); // Interval: 375 bytes * 2 / 2 sec = 375 bytes / sec = 3 kbps - EXPECT_EQ(1, metrics::NumSamples( - "WebRTC.Video.Screenshare.RetransmittedBitrateSentInKbps")); - EXPECT_EQ(1, - metrics::NumEvents( - "WebRTC.Video.Screenshare.RetransmittedBitrateSentInKbps", 3)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples( + "WebRTC.Video.Screenshare.RetransmittedBitrateSentInKbps")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents( + "WebRTC.Video.Screenshare.RetransmittedBitrateSentInKbps", 3)); } TEST_F(SendStatisticsProxyTest, RtxBitrateIsZeroWhenEnabledAndNoRtxDataIsSent) { @@ -2512,8 +2585,9 @@ TEST_F(SendStatisticsProxyTest, RtxBitrateIsZeroWhenEnabledAndNoRtxDataIsSent) { // RTX enabled. No data sent over RTX. statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.RtxBitrateSentInKbps", 0)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.RtxBitrateSentInKbps", 0)); } TEST_F(SendStatisticsProxyTest, RtxBitrateNotReportedWhenNotEnabled) { @@ -2540,7 +2614,7 @@ TEST_F(SendStatisticsProxyTest, RtxBitrateNotReportedWhenNotEnabled) { // RTX not enabled. statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.RtxBitrateSentInKbps")); } TEST_F(SendStatisticsProxyTest, FecBitrateIsZeroWhenEnabledAndNoFecDataIsSent) { @@ -2562,8 +2636,9 @@ TEST_F(SendStatisticsProxyTest, FecBitrateIsZeroWhenEnabledAndNoFecDataIsSent) { // FEC enabled. No FEC data sent. statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); - EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.FecBitrateSentInKbps", 0)); + EXPECT_METRIC_EQ(1, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); + EXPECT_METRIC_EQ(1, + metrics::NumEvents("WebRTC.Video.FecBitrateSentInKbps", 0)); } TEST_F(SendStatisticsProxyTest, FecBitrateNotReportedWhenNotEnabled) { @@ -2590,7 +2665,7 @@ TEST_F(SendStatisticsProxyTest, FecBitrateNotReportedWhenNotEnabled) { // FEC not enabled. statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); + EXPECT_METRIC_EQ(0, metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); } TEST_F(SendStatisticsProxyTest, GetStatsReportsEncoderImplementationName) { @@ -2690,49 +2765,63 @@ class ForcedFallbackEnabled : public ForcedFallbackTest { TEST_F(ForcedFallbackEnabled, StatsNotUpdatedIfMinRunTimeHasNotPassed) { InsertEncodedFrames(kMinFrames, kFrameIntervalMs - 1); statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); } TEST_F(ForcedFallbackEnabled, StatsUpdated) { InsertEncodedFrames(kMinFrames, kFrameIntervalMs); EXPECT_FALSE(statistics_proxy_->GetStats().has_entered_low_resolution); statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); - EXPECT_EQ(1, metrics::NumEvents(kPrefix + "FallbackTimeInPercent.Vp8", 0)); - EXPECT_EQ(1, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); - EXPECT_EQ(1, metrics::NumEvents(kPrefix + "FallbackChangesPerMinute.Vp8", 0)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents(kPrefix + "FallbackTimeInPercent.Vp8", 0)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents(kPrefix + "FallbackChangesPerMinute.Vp8", 0)); } TEST_F(ForcedFallbackEnabled, StatsNotUpdatedIfNotVp8) { codec_info_.codecType = kVideoCodecVP9; InsertEncodedFrames(kMinFrames, kFrameIntervalMs); statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); } TEST_F(ForcedFallbackEnabled, StatsNotUpdatedForTemporalLayers) { codec_info_.codecSpecific.VP8.temporalIdx = 1; InsertEncodedFrames(kMinFrames, kFrameIntervalMs); statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); } TEST_F(ForcedFallbackEnabled, StatsNotUpdatedForSimulcast) { encoded_image_.SetSpatialIndex(1); InsertEncodedFrames(kMinFrames, kFrameIntervalMs); statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); } TEST_F(ForcedFallbackDisabled, StatsNotUpdatedIfNoFieldTrial) { InsertEncodedFrames(kMinFrames, kFrameIntervalMs); statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); } TEST_F(ForcedFallbackDisabled, EnteredLowResolutionSetIfAtMaxPixels) { @@ -2781,10 +2870,14 @@ TEST_F(ForcedFallbackEnabled, OneFallbackEvent) { EXPECT_TRUE(statistics_proxy_->GetStats().has_entered_low_resolution); statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); - EXPECT_EQ(1, metrics::NumEvents(kPrefix + "FallbackTimeInPercent.Vp8", 25)); - EXPECT_EQ(1, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); - EXPECT_EQ(1, metrics::NumEvents(kPrefix + "FallbackChangesPerMinute.Vp8", 3)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents(kPrefix + "FallbackTimeInPercent.Vp8", 25)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents(kPrefix + "FallbackChangesPerMinute.Vp8", 3)); } TEST_F(ForcedFallbackEnabled, ThreeFallbackEvents) { @@ -2810,10 +2903,14 @@ TEST_F(ForcedFallbackEnabled, ThreeFallbackEvents) { EXPECT_TRUE(statistics_proxy_->GetStats().has_entered_low_resolution); statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); - EXPECT_EQ(1, metrics::NumEvents(kPrefix + "FallbackTimeInPercent.Vp8", 25)); - EXPECT_EQ(1, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); - EXPECT_EQ(1, metrics::NumEvents(kPrefix + "FallbackChangesPerMinute.Vp8", 3)); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents(kPrefix + "FallbackTimeInPercent.Vp8", 25)); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); + EXPECT_METRIC_EQ( + 1, metrics::NumEvents(kPrefix + "FallbackChangesPerMinute.Vp8", 3)); } TEST_F(ForcedFallbackEnabled, NoFallbackIfAboveMaxPixels) { @@ -2823,8 +2920,10 @@ TEST_F(ForcedFallbackEnabled, NoFallbackIfAboveMaxPixels) { EXPECT_FALSE(statistics_proxy_->GetStats().has_entered_low_resolution); statistics_proxy_.reset(); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); - EXPECT_EQ(0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); + EXPECT_METRIC_EQ(0, + metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); + EXPECT_METRIC_EQ( + 0, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); } TEST_F(ForcedFallbackEnabled, FallbackIfAtMaxPixels) { @@ -2834,8 +2933,10 @@ TEST_F(ForcedFallbackEnabled, FallbackIfAtMaxPixels) { EXPECT_TRUE(statistics_proxy_->GetStats().has_entered_low_resolution); statistics_proxy_.reset(); - EXPECT_EQ(1, metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); - EXPECT_EQ(1, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); + EXPECT_METRIC_EQ(1, + metrics::NumSamples(kPrefix + "FallbackTimeInPercent.Vp8")); + EXPECT_METRIC_EQ( + 1, metrics::NumSamples(kPrefix + "FallbackChangesPerMinute.Vp8")); } } // namespace webrtc diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc index 71d975a66e..73cd326c82 100644 --- a/video/video_stream_encoder_unittest.cc +++ b/video/video_stream_encoder_unittest.cc @@ -3218,9 +3218,9 @@ TEST_F(VideoStreamEncoderTest, CpuLimitedHistogramIsReported) { video_stream_encoder_.reset(); stats_proxy_.reset(); - EXPECT_EQ(1, - metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent")); - EXPECT_EQ( + EXPECT_METRIC_EQ( + 1, metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent")); + EXPECT_METRIC_EQ( 1, metrics::NumEvents("WebRTC.Video.CpuLimitedResolutionInPercent", 50)); } diff --git a/webrtc.gni b/webrtc.gni index 56a1b0deca..513d5fcf21 100644 --- a/webrtc.gni +++ b/webrtc.gni @@ -252,6 +252,9 @@ declare_args() { # Set this to true to disable detailed error message and logging for # RTC_CHECKs. rtc_disable_check_msg = false + + # Set this to true to disable webrtc metrics. + rtc_disable_metrics = true } # Make it possible to provide custom locations for some libraries (move these