Prepare for migration of TestPeer and TestPeerFactory on TimeController
Bug: webrtc:11743
Change-Id: I99a9746830a1c6abae753d33cf61890f7a372608
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178605
Reviewed-by: Andrey Logvin <landrey@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31622}
diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn
index 6ac07ad..dd5e8d7 100644
--- a/test/pc/e2e/BUILD.gn
+++ b/test/pc/e2e/BUILD.gn
@@ -261,6 +261,7 @@
":video_quality_analyzer_injection_helper",
"../..:copy_to_file_audio_capturer",
"../../../api:peer_connection_quality_test_fixture_api",
+ "../../../api:time_controller",
"../../../api/rtc_event_log:rtc_event_log_factory",
"../../../api/task_queue:default_task_queue_factory",
"../../../api/video_codecs:builtin_video_decoder_factory",
diff --git a/test/pc/e2e/peer_connection_quality_test.cc b/test/pc/e2e/peer_connection_quality_test.cc
index 3b3da67..aa7e855 100644
--- a/test/pc/e2e/peer_connection_quality_test.cc
+++ b/test/pc/e2e/peer_connection_quality_test.cc
@@ -216,7 +216,10 @@
bob_configurer->params()->video_configs;
std::string bob_name = bob_configurer->params()->name.value();
- alice_ = TestPeerFactory::CreateTestPeer(
+ TestPeerFactory test_peer_factory(
+ signaling_thread.get(), video_quality_analyzer_injection_helper_.get(),
+ task_queue_.get());
+ alice_ = test_peer_factory.CreateTestPeer(
std::move(alice_configurer),
std::make_unique<FixturePeerConnectionObserver>(
[this, bob_video_configs, alice_name](
@@ -224,10 +227,9 @@
OnTrackCallback(alice_name, transceiver, bob_video_configs);
},
[this]() { StartVideo(alice_video_sources_); }),
- video_quality_analyzer_injection_helper_.get(), signaling_thread.get(),
alice_remote_audio_config, run_params.video_encoder_bitrate_multiplier,
- run_params.echo_emulation_config, task_queue_.get());
- bob_ = TestPeerFactory::CreateTestPeer(
+ run_params.echo_emulation_config);
+ bob_ = test_peer_factory.CreateTestPeer(
std::move(bob_configurer),
std::make_unique<FixturePeerConnectionObserver>(
[this, alice_video_configs,
@@ -235,9 +237,8 @@
OnTrackCallback(bob_name, transceiver, alice_video_configs);
},
[this]() { StartVideo(bob_video_sources_); }),
- video_quality_analyzer_injection_helper_.get(), signaling_thread.get(),
bob_remote_audio_config, run_params.video_encoder_bitrate_multiplier,
- run_params.echo_emulation_config, task_queue_.get());
+ run_params.echo_emulation_config);
int num_cores = CpuInfo::DetectNumberOfCores();
RTC_DCHECK_GE(num_cores, 1);
diff --git a/test/pc/e2e/test_peer_factory.cc b/test/pc/e2e/test_peer_factory.cc
index f700f1c..134e441 100644
--- a/test/pc/e2e/test_peer_factory.cc
+++ b/test/pc/e2e/test_peer_factory.cc
@@ -280,16 +280,20 @@
}
std::unique_ptr<TestPeer> TestPeerFactory::CreateTestPeer(
- std::unique_ptr<InjectableComponents> components,
- std::unique_ptr<Params> params,
- std::vector<PeerConfigurerImpl::VideoSource> video_sources,
+ std::unique_ptr<PeerConfigurerImpl> configurer,
std::unique_ptr<MockPeerConnectionObserver> observer,
VideoQualityAnalyzerInjectionHelper* video_analyzer_helper,
rtc::Thread* signaling_thread,
absl::optional<RemotePeerAudioConfig> remote_audio_config,
double bitrate_multiplier,
- absl::optional<EchoEmulationConfig> echo_emulation_config,
+ absl::optional<PeerConnectionE2EQualityTestFixture::EchoEmulationConfig>
+ echo_emulation_config,
rtc::TaskQueue* task_queue) {
+ std::unique_ptr<InjectableComponents> components =
+ configurer->ReleaseComponents();
+ std::unique_ptr<Params> params = configurer->ReleaseParams();
+ std::vector<PeerConfigurerImpl::VideoSource> video_sources =
+ configurer->ReleaseVideoSources();
RTC_DCHECK(components);
RTC_DCHECK(params);
RTC_DCHECK_EQ(params->video_configs.size(), video_sources.size());
@@ -339,18 +343,14 @@
std::unique_ptr<TestPeer> TestPeerFactory::CreateTestPeer(
std::unique_ptr<PeerConfigurerImpl> configurer,
std::unique_ptr<MockPeerConnectionObserver> observer,
- VideoQualityAnalyzerInjectionHelper* video_analyzer_helper,
- rtc::Thread* signaling_thread,
absl::optional<RemotePeerAudioConfig> remote_audio_config,
double bitrate_multiplier,
absl::optional<PeerConnectionE2EQualityTestFixture::EchoEmulationConfig>
- echo_emulation_config,
- rtc::TaskQueue* task_queue) {
- return CreateTestPeer(
- configurer->ReleaseComponents(), configurer->ReleaseParams(),
- configurer->ReleaseVideoSources(), std::move(observer),
- video_analyzer_helper, signaling_thread, remote_audio_config,
- bitrate_multiplier, echo_emulation_config, task_queue);
+ echo_emulation_config) {
+ return CreateTestPeer(std::move(configurer), std::move(observer),
+ video_analyzer_helper_, signaling_thread_,
+ remote_audio_config, bitrate_multiplier,
+ echo_emulation_config, task_queue_);
}
} // namespace webrtc_pc_e2e
diff --git a/test/pc/e2e/test_peer_factory.h b/test/pc/e2e/test_peer_factory.h
index 3233bb6..edbfe8b 100644
--- a/test/pc/e2e/test_peer_factory.h
+++ b/test/pc/e2e/test_peer_factory.h
@@ -19,6 +19,7 @@
#include "absl/strings/string_view.h"
#include "api/rtc_event_log/rtc_event_log_factory.h"
#include "api/test/peerconnection_quality_test_fixture.h"
+#include "api/test/time_controller.h"
#include "modules/audio_device/include/test_audio_device.h"
#include "rtc_base/task_queue.h"
#include "test/pc/e2e/analyzer/video/video_quality_analyzer_injection_helper.h"
@@ -44,26 +45,31 @@
class TestPeerFactory {
public:
- // Setups all components, that should be provided to WebRTC
- // PeerConnectionFactory and PeerConnection creation methods,
- // also will setup dependencies, that are required for media analyzers
- // injection.
- //
- // |signaling_thread| will be provided by test fixture implementation.
- // |params| - describes current peer parameters, like current peer video
- // streams and audio streams
- static std::unique_ptr<TestPeer> CreateTestPeer(
- std::unique_ptr<InjectableComponents> components,
- std::unique_ptr<Params> params,
- std::vector<PeerConfigurerImpl::VideoSource> video_sources,
- std::unique_ptr<MockPeerConnectionObserver> observer,
- VideoQualityAnalyzerInjectionHelper* video_analyzer_helper,
- rtc::Thread* signaling_thread,
- absl::optional<RemotePeerAudioConfig> remote_audio_config,
- double bitrate_multiplier,
- absl::optional<PeerConnectionE2EQualityTestFixture::EchoEmulationConfig>
- echo_emulation_config,
- rtc::TaskQueue* task_queue);
+ // Creates a test peer factory.
+ // |signaling_thread| will be used as a signaling thread for all peers created
+ // by this factory.
+ // |time_controller| will be used to create required threads, task queue
+ // factories and call factory.
+ // |video_analyzer_helper| will be used to setup video quality analysis for
+ // created peers.
+ // |task_queue| will be used for AEC dump if it is requested.
+ TestPeerFactory(rtc::Thread* signaling_thread,
+ TimeController& time_controller,
+ VideoQualityAnalyzerInjectionHelper* video_analyzer_helper,
+ rtc::TaskQueue* task_queue)
+ : signaling_thread_(signaling_thread),
+ video_analyzer_helper_(video_analyzer_helper),
+ task_queue_(task_queue) {}
+
+ // Same as previous. Created for keeping backward compatibility during
+ // migration. Will be removed soon.
+ TestPeerFactory(rtc::Thread* signaling_thread,
+ VideoQualityAnalyzerInjectionHelper* video_analyzer_helper,
+ rtc::TaskQueue* task_queue)
+ : signaling_thread_(signaling_thread),
+ video_analyzer_helper_(video_analyzer_helper),
+ task_queue_(task_queue) {}
+
// Setups all components, that should be provided to WebRTC
// PeerConnectionFactory and PeerConnection creation methods,
// also will setup dependencies, that are required for media analyzers
@@ -80,6 +86,19 @@
absl::optional<PeerConnectionE2EQualityTestFixture::EchoEmulationConfig>
echo_emulation_config,
rtc::TaskQueue* task_queue);
+
+ std::unique_ptr<TestPeer> CreateTestPeer(
+ std::unique_ptr<PeerConfigurerImpl> configurer,
+ std::unique_ptr<MockPeerConnectionObserver> observer,
+ absl::optional<RemotePeerAudioConfig> remote_audio_config,
+ double bitrate_multiplier,
+ absl::optional<PeerConnectionE2EQualityTestFixture::EchoEmulationConfig>
+ echo_emulation_config);
+
+ private:
+ rtc::Thread* signaling_thread_;
+ VideoQualityAnalyzerInjectionHelper* video_analyzer_helper_;
+ rtc::TaskQueue* task_queue_;
};
} // namespace webrtc_pc_e2e