| Index: webrtc/video/receive_statistics_proxy_unittest.cc
|
| diff --git a/webrtc/video/receive_statistics_proxy_unittest.cc b/webrtc/video/receive_statistics_proxy_unittest.cc
|
| index 66856a70ade72fff3c42b9a486f607e075b4c9fb..74186f040c1420fd19b13c9eba26e893e3c11b6f 100644
|
| --- a/webrtc/video/receive_statistics_proxy_unittest.cc
|
| +++ b/webrtc/video/receive_statistics_proxy_unittest.cc
|
| @@ -12,6 +12,7 @@
|
|
|
| #include <memory>
|
|
|
| +#include "webrtc/system_wrappers/include/metrics.h"
|
| #include "webrtc/system_wrappers/include/metrics_default.h"
|
| #include "webrtc/test/gtest.h"
|
|
|
| @@ -112,6 +113,64 @@ TEST_F(ReceiveStatisticsProxyTest, LifetimeHistogramIsUpdated) {
|
| kTimeSec));
|
| }
|
|
|
| +TEST_F(ReceiveStatisticsProxyTest, PacketLossHistogramIsUpdated) {
|
| + const uint32_t kCumLost1 = 1;
|
| + const uint32_t kExtSeqNum1 = 10;
|
| + const uint32_t kCumLost2 = 2;
|
| + const uint32_t kExtSeqNum2 = 20;
|
| +
|
| + // One report block received.
|
| + RtcpStatistics rtcp_stats1;
|
| + rtcp_stats1.cumulative_lost = kCumLost1;
|
| + rtcp_stats1.extended_max_sequence_number = kExtSeqNum1;
|
| + statistics_proxy_->StatisticsUpdated(rtcp_stats1, kRemoteSsrc);
|
| +
|
| + // Two report blocks received.
|
| + RtcpStatistics rtcp_stats2;
|
| + rtcp_stats2.cumulative_lost = kCumLost2;
|
| + rtcp_stats2.extended_max_sequence_number = kExtSeqNum2;
|
| + statistics_proxy_->StatisticsUpdated(rtcp_stats2, kRemoteSsrc);
|
| +
|
| + // Two received report blocks but min run time has not passed.
|
| + fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000 - 1);
|
| + SetUp(); // Reset stat proxy causes histograms to be updated.
|
| + EXPECT_EQ(0,
|
| + metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent"));
|
| +
|
| + // Two report blocks received.
|
| + statistics_proxy_->StatisticsUpdated(rtcp_stats1, kRemoteSsrc);
|
| + statistics_proxy_->StatisticsUpdated(rtcp_stats2, kRemoteSsrc);
|
| +
|
| + // Two received report blocks and min run time has passed.
|
| + fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000);
|
| + SetUp();
|
| + EXPECT_EQ(1,
|
| + metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent"));
|
| + EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.ReceivedPacketsLostInPercent",
|
| + (kCumLost2 - kCumLost1) * 100 /
|
| + (kExtSeqNum2 - kExtSeqNum1)));
|
| +}
|
| +
|
| +TEST_F(ReceiveStatisticsProxyTest,
|
| + PacketLossHistogramIsNotUpdatedIfLessThanTwoReportBlocksAreReceived) {
|
| + RtcpStatistics rtcp_stats1;
|
| + rtcp_stats1.cumulative_lost = 1;
|
| + rtcp_stats1.extended_max_sequence_number = 10;
|
| +
|
| + // Min run time has passed but no received report block.
|
| + fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000);
|
| + SetUp(); // Reset stat proxy causes histograms to be updated.
|
| + EXPECT_EQ(0,
|
| + metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent"));
|
| +
|
| + // Min run time has passed but only one received report block.
|
| + statistics_proxy_->StatisticsUpdated(rtcp_stats1, kRemoteSsrc);
|
| + fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000);
|
| + SetUp();
|
| + EXPECT_EQ(0,
|
| + metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent"));
|
| +}
|
| +
|
| TEST_F(ReceiveStatisticsProxyTest, AvSyncOffsetHistogramIsUpdated) {
|
| const int64_t kSyncOffsetMs = 22;
|
| const double kFreqKhz = 90.0;
|
|
|