[PCLF] Add possibility to use new perf metrics api in CrossMediaMetricsReporter
Bug: b/246095034
Change-Id: I8d6dd352cb12ee2b729bb534a1646b178fe0b6db
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276181
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38147}
diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn
index 141022d..cc2707a 100644
--- a/test/pc/e2e/BUILD.gn
+++ b/test/pc/e2e/BUILD.gn
@@ -909,6 +909,8 @@
"../../../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 96f661f..2b5373f 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 @@
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 6ddc994..fbb90b2 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 @@
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 @@
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_;