diff --git a/video/report_block_stats_unittest.cc b/video/report_block_stats_unittest.cc index 23b3ab82a8..0b0230941f 100644 --- a/video/report_block_stats_unittest.cc +++ b/video/report_block_stats_unittest.cc @@ -9,7 +9,6 @@ */ #include "video/report_block_stats.h" -#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "test/gtest.h" @@ -17,56 +16,62 @@ namespace webrtc { class ReportBlockStatsTest : public ::testing::Test { protected: - ReportBlockStatsTest() : kSsrc1(0x12345) {} - - void SetUp() override { - // kSsrc1: block 1-3. - block1_1_.packets_lost = 10; - block1_1_.fraction_lost = 123; - block1_1_.extended_highest_sequence_number = 24000; - block1_1_.jitter = 777; - block1_1_.source_ssrc = kSsrc1; - block1_2_.packets_lost = 15; - block1_2_.fraction_lost = 0; - block1_2_.extended_highest_sequence_number = 24100; - block1_2_.jitter = 222; - block1_2_.source_ssrc = kSsrc1; - block1_3_.packets_lost = 50; - block1_3_.fraction_lost = 0; - block1_3_.extended_highest_sequence_number = 24200; - block1_3_.jitter = 333; - block1_3_.source_ssrc = kSsrc1; + ReportBlockStatsTest() { + // kSsrc1: report 1-3. + stats1_1_.packets_lost = 10; + stats1_1_.extended_highest_sequence_number = 24000; + stats1_2_.packets_lost = 15; + stats1_2_.extended_highest_sequence_number = 24100; + stats1_3_.packets_lost = 50; + stats1_3_.extended_highest_sequence_number = 24200; + // kSsrc2: report 1,2. + stats2_1_.packets_lost = 111; + stats2_1_.extended_highest_sequence_number = 8500; + stats2_2_.packets_lost = 136; + stats2_2_.extended_highest_sequence_number = 8800; } - RtcpStatistics RtcpReportBlockToRtcpStatistics(const RTCPReportBlock& stats) { - RtcpStatistics block; - block.packets_lost = stats.packets_lost; - block.fraction_lost = stats.fraction_lost; - block.extended_highest_sequence_number = - stats.extended_highest_sequence_number; - block.jitter = stats.jitter; - return block; - } - - const uint32_t kSsrc1; - RTCPReportBlock block1_1_; - RTCPReportBlock block1_2_; - RTCPReportBlock block1_3_; + const uint32_t kSsrc1 = 123; + const uint32_t kSsrc2 = 234; + RtcpStatistics stats1_1_; + RtcpStatistics stats1_2_; + RtcpStatistics stats1_3_; + RtcpStatistics stats2_1_; + RtcpStatistics stats2_2_; }; TEST_F(ReportBlockStatsTest, StoreAndGetFractionLost) { ReportBlockStats stats; EXPECT_EQ(-1, stats.FractionLostInPercent()); - // First block. - stats.Store(kSsrc1, RtcpReportBlockToRtcpStatistics(block1_1_)); + // First report. + stats.Store(kSsrc1, stats1_1_); EXPECT_EQ(-1, stats.FractionLostInPercent()); // fl: 100 * (15-10) / (24100-24000) = 5% - stats.Store(kSsrc1, RtcpReportBlockToRtcpStatistics(block1_2_)); + stats.Store(kSsrc1, stats1_2_); EXPECT_EQ(5, stats.FractionLostInPercent()); // fl: 100 * (50-10) / (24200-24000) = 20% - stats.Store(kSsrc1, RtcpReportBlockToRtcpStatistics(block1_3_)); + stats.Store(kSsrc1, stats1_3_); EXPECT_EQ(20, stats.FractionLostInPercent()); } +TEST_F(ReportBlockStatsTest, StoreAndGetFractionLost_TwoSsrcs) { + ReportBlockStats stats; + EXPECT_EQ(-1, stats.FractionLostInPercent()); + + // First report. + stats.Store(kSsrc1, stats1_1_); + EXPECT_EQ(-1, stats.FractionLostInPercent()); + // fl: 100 * (15-10) / (24100-24000) = 5% + stats.Store(kSsrc1, stats1_2_); + EXPECT_EQ(5, stats.FractionLostInPercent()); + + // First report, kSsrc2. + stats.Store(kSsrc2, stats2_1_); + EXPECT_EQ(5, stats.FractionLostInPercent()); + // fl: 100 * ((15-10) + (136-111)) / ((24100-24000) + (8800-8500)) = 7% + stats.Store(kSsrc2, stats2_2_); + EXPECT_EQ(7, stats.FractionLostInPercent()); +} + } // namespace webrtc