Migrate test_main_lib on new global metrics API

Bug: b/246095034
Change-Id: I99cd631cdae49ad1e0812f1204a6be4d6f43bc34
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276604
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38184}
diff --git a/api/test/create_peerconnection_quality_test_fixture.cc b/api/test/create_peerconnection_quality_test_fixture.cc
index ec38de0..e156991 100644
--- a/api/test/create_peerconnection_quality_test_fixture.cc
+++ b/api/test/create_peerconnection_quality_test_fixture.cc
@@ -29,7 +29,7 @@
   return std::make_unique<PeerConnectionE2EQualityTest>(
       std::move(test_case_name), time_controller,
       std::move(audio_quality_analyzer), std::move(video_quality_analyzer),
-      test::GetGlobalMetricsLoggerAndExporter());
+      test::GetGlobalMetricsLogger());
 }
 
 }  // namespace webrtc_pc_e2e
diff --git a/test/ios/test_support.mm b/test/ios/test_support.mm
index d51e5a1..1c79682 100644
--- a/test/ios/test_support.mm
+++ b/test/ios/test_support.mm
@@ -93,6 +93,8 @@
 - (int)runGoogleTests {
   rtc::test::ConfigureCoverageReportPath();
 
+  int exitStatus = g_test_suite();
+
   std::vector<std::unique_ptr<webrtc::test::MetricsExporter>> exporters;
   if (g_export_perf_results_new_api) {
     exporters.push_back(std::make_unique<webrtc::test::StdoutMetricsExporter>());
@@ -111,11 +113,7 @@
   } else {
     exporters.push_back(std::make_unique<webrtc::test::PrintResultProxyMetricsExporter>());
   }
-  webrtc::test::SetupGlobalMetricsLoggerAndExporter(std::move(exporters));
-
-  int exitStatus = g_test_suite();
-
-  webrtc::test::ExportAndDestroyGlobalMetricsLoggerAndExporter();
+  webrtc::test::ExportPerfMetric(*webrtc::test::GetGlobalMetricsLogger(), std::move(exporters));
   if (!g_export_perf_results_new_api) {
     if (g_write_perf_output) {
       // Stores data into a proto file under the app's document directory.
diff --git a/test/pc/e2e/peer_connection_e2e_smoke_test.cc b/test/pc/e2e/peer_connection_e2e_smoke_test.cc
index fd031fc..e2770aa 100644
--- a/test/pc/e2e/peer_connection_e2e_smoke_test.cc
+++ b/test/pc/e2e/peer_connection_e2e_smoke_test.cc
@@ -58,7 +58,7 @@
     network_emulation_ = CreateNetworkEmulationManager();
     auto video_quality_analyzer = std::make_unique<DefaultVideoQualityAnalyzer>(
         network_emulation_->time_controller()->GetClock(),
-        test::GetGlobalMetricsLoggerAndExporter());
+        test::GetGlobalMetricsLogger());
     video_quality_analyzer_ = video_quality_analyzer.get();
     fixture_ = CreatePeerConnectionE2EQualityTestFixture(
         testing::UnitTest::GetInstance()->current_test_info()->name(),
@@ -185,7 +185,7 @@
           std::map<std::string, std::vector<EmulatedEndpoint*>>(
               {{"alice", network_links.first->endpoints()},
                {"charlie", network_links.second->endpoints()}}),
-          network_emulation(), test::GetGlobalMetricsLoggerAndExporter()));
+          network_emulation(), test::GetGlobalMetricsLogger()));
   RunParams run_params(TimeDelta::Seconds(2));
   run_params.enable_flex_fec_support = true;
   RunAndCheckEachVideoStreamReceivedFrames(run_params);
@@ -237,7 +237,7 @@
           std::map<std::string, std::vector<EmulatedEndpoint*>>(
               {{"alice", network_links.first->endpoints()},
                {"charlie", network_links.second->endpoints()}}),
-          network_emulation(), test::GetGlobalMetricsLoggerAndExporter()));
+          network_emulation(), test::GetGlobalMetricsLogger()));
   RunParams run_params(TimeDelta::Seconds(2));
   run_params.enable_flex_fec_support = true;
   RunAndCheckEachVideoStreamReceivedFrames(run_params);
@@ -304,7 +304,7 @@
           std::map<std::string, std::vector<EmulatedEndpoint*>>(
               {{"alice", alice_network->endpoints()},
                {"bob", bob_network->endpoints()}}),
-          network_emulation(), test::GetGlobalMetricsLoggerAndExporter()));
+          network_emulation(), test::GetGlobalMetricsLogger()));
 
   fixture()->ExecuteAt(TimeDelta::Seconds(1), [alice_node](TimeDelta) {
     BuiltInNetworkBehaviorConfig config;
diff --git a/test/test_main_lib.cc b/test/test_main_lib.cc
index 0c5a998..9968adf 100644
--- a/test/test_main_lib.cc
+++ b/test/test_main_lib.cc
@@ -157,6 +157,8 @@
     rtc::test::RunTestsFromIOSApp();
     int exit_code = 0;
 #else
+    int exit_code = RUN_ALL_TESTS();
+
     std::vector<std::unique_ptr<test::MetricsExporter>> exporters;
     if (absl::GetFlag(FLAGS_export_perf_results_new_api)) {
       exporters.push_back(std::make_unique<test::StdoutMetricsExporter>());
@@ -169,11 +171,8 @@
       exporters.push_back(
           std::make_unique<test::PrintResultProxyMetricsExporter>());
     }
-    test::SetupGlobalMetricsLoggerAndExporter(std::move(exporters));
-
-    int exit_code = RUN_ALL_TESTS();
-
-    test::ExportAndDestroyGlobalMetricsLoggerAndExporter();
+    test::ExportPerfMetric(*test::GetGlobalMetricsLogger(),
+                           std::move(exporters));
     if (!absl::GetFlag(FLAGS_export_perf_results_new_api)) {
       std::string perf_output_file =
           absl::GetFlag(FLAGS_isolated_script_test_perf_output);