diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator.cc b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator.cc index 77418b7e5d..fe25e97ede 100644 --- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator.cc +++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator.cc @@ -234,6 +234,15 @@ void DefaultVideoQualityAnalyzerFramesComparator::Stop( last_rendered_frame_time - stream_last_freeze_end_time_.at(stats_key), Now(), /*metadata=*/{})); } + + // Freeze Time: + // If there were no freezes on a video stream, add only one sample with + // value 0 (0ms freezes time). + for (auto& [key, stream_stats] : stream_stats_) { + if (stream_stats.freeze_time_ms.IsEmpty()) { + stream_stats.freeze_time_ms.AddSample(0); + } + } } } diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator_test.cc b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator_test.cc index 2cfb0c3d79..436e877fe5 100644 --- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator_test.cc +++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frames_comparator_test.cc @@ -27,6 +27,7 @@ namespace webrtc { namespace { using ::testing::Contains; +using ::testing::Each; using ::testing::Eq; using ::testing::IsEmpty; using ::testing::Pair; @@ -150,6 +151,13 @@ void expectEmpty(const SamplesRateCounter& counter) { << counter.GetEventsPerSecond(); } +void ExpectSizeAndAllElementsAre(const SamplesStatsCounter& counter, + int size, + double value) { + EXPECT_EQ(counter.NumSamples(), size); + EXPECT_THAT(counter.GetSamples(), Each(Eq(value))); +} + TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, StatsPresentedAfterAddingOneComparison) { DefaultVideoQualityAnalyzerCpuMeasurer cpu_measurer; @@ -383,7 +391,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); expectEmpty(stats.target_encode_bitrate); @@ -443,7 +451,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); expectEmpty(stats.target_encode_bitrate); @@ -513,7 +521,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0); @@ -584,7 +592,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0); @@ -660,7 +668,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0); @@ -743,7 +751,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.decode_time_ms), 10.0); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); EXPECT_GE(GetFirstOrDie(stats.resolution_of_decoded_frame), 200 * 100.0); EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0); @@ -824,7 +832,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0); @@ -887,7 +895,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); expectEmpty(stats.target_encode_bitrate); @@ -947,7 +955,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); expectEmpty(stats.target_encode_bitrate); @@ -1017,7 +1025,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0); @@ -1088,7 +1096,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0); @@ -1162,7 +1170,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0); @@ -1246,7 +1254,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0); @@ -1327,7 +1335,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, expectEmpty(stats.decode_time_ms); expectEmpty(stats.receive_to_render_time_ms); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); expectEmpty(stats.resolution_of_decoded_frame); EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0); @@ -1416,7 +1424,7 @@ TEST(DefaultVideoQualityAnalyzerFramesComparatorTest, EXPECT_GE(GetFirstOrDie(stats.decode_time_ms), 10.0); EXPECT_GE(GetFirstOrDie(stats.receive_to_render_time_ms), 30.0); expectEmpty(stats.skipped_between_rendered); - expectEmpty(stats.freeze_time_ms); + ExpectSizeAndAllElementsAre(stats.freeze_time_ms, /*size=*/1, /*value=*/0); expectEmpty(stats.time_between_freezes_ms); EXPECT_GE(GetFirstOrDie(stats.resolution_of_decoded_frame), 200 * 100.0); EXPECT_DOUBLE_EQ(GetFirstOrDie(stats.target_encode_bitrate), 2000.0);