diff --git a/api/BUILD.gn b/api/BUILD.gn index 571b89aacb..1b2250436f 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -377,6 +377,7 @@ rtc_source_set("peer_connection_quality_test_fixture_api") { ":rtp_parameters", ":simulated_network_api", ":stats_observer_interface", + ":track_id_stream_label_map", ":video_quality_analyzer_api", "../media:rtc_media_base", "../rtc_base:deprecation", diff --git a/api/test/peerconnection_quality_test_fixture.h b/api/test/peerconnection_quality_test_fixture.h index 4cdca81350..57d77c5dc8 100644 --- a/api/test/peerconnection_quality_test_fixture.h +++ b/api/test/peerconnection_quality_test_fixture.h @@ -32,6 +32,7 @@ #include "api/test/frame_generator_interface.h" #include "api/test/simulated_network.h" #include "api/test/stats_observer_interface.h" +#include "api/test/track_id_stream_label_map.h" #include "api/test/video_quality_analyzer_interface.h" #include "api/transport/network_control.h" #include "api/units/time_delta.h" @@ -411,7 +412,19 @@ class PeerConnectionE2EQualityTestFixture { // Invoked by framework after peer connection factory and peer connection // itself will be created but before offer/answer exchange will be started. - virtual void Start(absl::string_view test_case_name) = 0; + // |test_case_name| is name of test case, that should be used to report all + // metrics. + // |reporter_helper| is a pointer to a class that will allow track_id to + // stream_id matching. The caller is responsible for ensuring the + // TrackIdStreamLabelMap will be valid from Start() to + // StopAndReportResults(). + virtual void Start(absl::string_view test_case_name, + const TrackIdStreamLabelMap* reporter_helper) = 0; + // This method has been added for backwards compatibility with upstream + // project. + void Start(absl::string_view test_case_name) { + Start(test_case_name, nullptr); + } // Invoked by framework after call is ended and peer connection factory and // peer connection are destroyed. diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn index fea59bcb87..a893f4c21b 100644 --- a/test/pc/e2e/BUILD.gn +++ b/test/pc/e2e/BUILD.gn @@ -593,6 +593,7 @@ if (!build_with_chromium) { "../..:perf_test", "../../../api:peer_connection_quality_test_fixture_api", "../../../api:rtc_stats_api", + "../../../api:track_id_stream_label_map", "../../../api/units:data_rate", "../../../api/units:data_size", "../../../api/units:time_delta", @@ -646,6 +647,7 @@ if (!build_with_chromium) { "../../../api:network_emulation_manager_api", "../../../api:peer_connection_quality_test_fixture_api", "../../../api:rtc_stats_api", + "../../../api:track_id_stream_label_map", "../../../api/units:data_size", "../../../rtc_base:criticalsection", "../../../rtc_base:rtc_event", diff --git a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc index baf973f277..de3bcaaf4f 100644 --- a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc +++ b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc @@ -19,7 +19,9 @@ namespace webrtc { namespace webrtc_pc_e2e { -void VideoQualityMetricsReporter::Start(absl::string_view test_case_name) { +void VideoQualityMetricsReporter::Start( + absl::string_view test_case_name, + const TrackIdStreamLabelMap* /*reporter_helper*/) { test_case_name_ = std::string(test_case_name); start_time_ = Now(); } diff --git a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h index a6ac9b4fa1..4a45116ae9 100644 --- a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h +++ b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.h @@ -15,6 +15,7 @@ #include #include "api/test/peerconnection_quality_test_fixture.h" +#include "api/test/track_id_stream_label_map.h" #include "api/units/data_size.h" #include "api/units/timestamp.h" #include "rtc_base/critical_section.h" @@ -36,7 +37,8 @@ class VideoQualityMetricsReporter VideoQualityMetricsReporter(Clock* const clock) : clock_(clock) {} ~VideoQualityMetricsReporter() override = default; - void Start(absl::string_view test_case_name) override; + void Start(absl::string_view test_case_name, + const TrackIdStreamLabelMap* reporter_helper) override; void OnStatsReports( absl::string_view pc_label, const rtc::scoped_refptr& report) override; diff --git a/test/pc/e2e/network_quality_metrics_reporter.cc b/test/pc/e2e/network_quality_metrics_reporter.cc index 3b232fdc71..b81ece2b71 100644 --- a/test/pc/e2e/network_quality_metrics_reporter.cc +++ b/test/pc/e2e/network_quality_metrics_reporter.cc @@ -29,7 +29,9 @@ constexpr int kStatsWaitTimeoutMs = 1000; constexpr char kUseStandardBytesStats[] = "WebRTC-UseStandardBytesStats"; } -void NetworkQualityMetricsReporter::Start(absl::string_view test_case_name) { +void NetworkQualityMetricsReporter::Start( + absl::string_view test_case_name, + const TrackIdStreamLabelMap* /*reporter_helper*/) { test_case_name_ = std::string(test_case_name); // Check that network stats are clean before test execution. EmulatedNetworkStats alice_stats = PopulateStats(alice_network_); diff --git a/test/pc/e2e/network_quality_metrics_reporter.h b/test/pc/e2e/network_quality_metrics_reporter.h index 932e03140b..5e61f71bd2 100644 --- a/test/pc/e2e/network_quality_metrics_reporter.h +++ b/test/pc/e2e/network_quality_metrics_reporter.h @@ -15,6 +15,7 @@ #include "api/test/network_emulation_manager.h" #include "api/test/peerconnection_quality_test_fixture.h" +#include "api/test/track_id_stream_label_map.h" #include "api/units/data_size.h" #include "rtc_base/critical_section.h" @@ -30,7 +31,8 @@ class NetworkQualityMetricsReporter ~NetworkQualityMetricsReporter() override = default; // Network stats must be empty when this method will be invoked. - void Start(absl::string_view test_case_name) override; + void Start(absl::string_view test_case_name, + const TrackIdStreamLabelMap* reporter_helper) override; void OnStatsReports( absl::string_view pc_label, const rtc::scoped_refptr& report) override; diff --git a/test/pc/e2e/peer_connection_quality_test.cc b/test/pc/e2e/peer_connection_quality_test.cc index a23d2248f3..2109ff5936 100644 --- a/test/pc/e2e/peer_connection_quality_test.cc +++ b/test/pc/e2e/peer_connection_quality_test.cc @@ -259,7 +259,7 @@ void PeerConnectionE2EQualityTest::Run(RunParams run_params) { video_analyzer_threads); audio_quality_analyzer_->Start(test_case_name_, &analyzer_helper_); for (auto& reporter : quality_metrics_reporters_) { - reporter->Start(test_case_name_); + reporter->Start(test_case_name_, &analyzer_helper_); } // Start RTCEventLog recording if requested.