diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn index 141022d267..cc2707ab63 100644 --- a/test/pc/e2e/BUILD.gn +++ b/test/pc/e2e/BUILD.gn @@ -909,6 +909,8 @@ if (!build_with_chromium) { "../../../api:rtc_stats_api", "../../../api:track_id_stream_info_map", "../../../api/numerics", + "../../../api/test/metrics:metric", + "../../../api/test/metrics:metrics_logger_and_exporter", "../../../api/units:timestamp", "../../../rtc_base:criticalsection", "../../../rtc_base:rtc_event", diff --git a/test/pc/e2e/cross_media_metrics_reporter.cc b/test/pc/e2e/cross_media_metrics_reporter.cc index 96f661fd4f..2b5373fdad 100644 --- a/test/pc/e2e/cross_media_metrics_reporter.cc +++ b/test/pc/e2e/cross_media_metrics_reporter.cc @@ -14,6 +14,7 @@ #include "api/stats/rtc_stats.h" #include "api/stats/rtcstats_objects.h" +#include "api/test/metrics/metric.h" #include "api/units/timestamp.h" #include "rtc_base/event.h" #include "system_wrappers/include/field_trial.h" @@ -21,6 +22,9 @@ namespace webrtc { namespace webrtc_pc_e2e { +using ::webrtc::test::ImprovementDirection; +using ::webrtc::test::Unit; + void CrossMediaMetricsReporter::Start( absl::string_view test_case_name, const TrackIdStreamInfoMap* reporter_helper) { @@ -98,14 +102,27 @@ void CrossMediaMetricsReporter::StopAndReportResults() { MutexLock lock(&mutex_); for (const auto& pair : stats_info_) { const std::string& sync_group = pair.first; - ReportResult("audio_ahead_ms", - GetTestCaseName(pair.second.audio_stream_label, sync_group), - pair.second.audio_ahead_ms, "ms", - webrtc::test::ImproveDirection::kSmallerIsBetter); - ReportResult("video_ahead_ms", - GetTestCaseName(pair.second.video_stream_label, sync_group), - pair.second.video_ahead_ms, "ms", - webrtc::test::ImproveDirection::kSmallerIsBetter); + if (metrics_logger_ == nullptr) { + ReportResult("audio_ahead_ms", + GetTestCaseName(pair.second.audio_stream_label, sync_group), + pair.second.audio_ahead_ms, "ms", + webrtc::test::ImproveDirection::kSmallerIsBetter); + ReportResult("video_ahead_ms", + GetTestCaseName(pair.second.video_stream_label, sync_group), + pair.second.video_ahead_ms, "ms", + webrtc::test::ImproveDirection::kSmallerIsBetter); + } else { + metrics_logger_->LogMetric( + "audio_ahead_ms", + GetTestCaseName(pair.second.audio_stream_label, sync_group), + pair.second.audio_ahead_ms, Unit::kMilliseconds, + webrtc::test::ImprovementDirection::kSmallerIsBetter); + metrics_logger_->LogMetric( + "video_ahead_ms", + GetTestCaseName(pair.second.video_stream_label, sync_group), + pair.second.video_ahead_ms, Unit::kMilliseconds, + webrtc::test::ImprovementDirection::kSmallerIsBetter); + } } } diff --git a/test/pc/e2e/cross_media_metrics_reporter.h b/test/pc/e2e/cross_media_metrics_reporter.h index 6ddc994d1f..fbb90b2e60 100644 --- a/test/pc/e2e/cross_media_metrics_reporter.h +++ b/test/pc/e2e/cross_media_metrics_reporter.h @@ -17,6 +17,7 @@ #include "absl/strings/string_view.h" #include "absl/types/optional.h" #include "api/numerics/samples_stats_counter.h" +#include "api/test/metrics/metrics_logger_and_exporter.h" #include "api/test/peerconnection_quality_test_fixture.h" #include "api/test/track_id_stream_info_map.h" #include "api/units/timestamp.h" @@ -29,7 +30,11 @@ namespace webrtc_pc_e2e { class CrossMediaMetricsReporter : public PeerConnectionE2EQualityTestFixture::QualityMetricsReporter { public: - CrossMediaMetricsReporter() = default; + CrossMediaMetricsReporter() + : CrossMediaMetricsReporter(/*metrics_logger=*/nullptr) {} + explicit CrossMediaMetricsReporter( + test::MetricsLoggerAndExporter* metrics_logger) + : metrics_logger_(metrics_logger) {} ~CrossMediaMetricsReporter() override = default; void Start(absl::string_view test_case_name, @@ -57,6 +62,8 @@ class CrossMediaMetricsReporter std::string GetTestCaseName(const std::string& stream_label, const std::string& sync_group) const; + test::MetricsLoggerAndExporter* const metrics_logger_; + std::string test_case_name_; const TrackIdStreamInfoMap* reporter_helper_;