Update MediaEngine unittests to create Call using Environment
Bug: webrtc:15656
Change-Id: I8016f03fd0640d218344f5a6ab53c4b0663690c0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/329081
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41260}
diff --git a/media/BUILD.gn b/media/BUILD.gn
index 6b8eaf7..3f18a79 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -825,6 +825,8 @@
"../api:simulcast_test_fixture_api",
"../api/audio_codecs:builtin_audio_decoder_factory",
"../api/audio_codecs:builtin_audio_encoder_factory",
+ "../api/environment",
+ "../api/environment:environment_factory",
"../api/rtc_event_log",
"../api/task_queue",
"../api/task_queue:default_task_queue_factory",
diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc
index 645413b..f573667 100644
--- a/media/engine/webrtc_video_engine_unittest.cc
+++ b/media/engine/webrtc_video_engine_unittest.cc
@@ -20,9 +20,9 @@
#include "absl/algorithm/container.h"
#include "absl/strings/match.h"
-#include "api/rtc_event_log/rtc_event_log.h"
+#include "api/environment/environment.h"
+#include "api/environment/environment_factory.h"
#include "api/rtp_parameters.h"
-#include "api/task_queue/default_task_queue_factory.h"
#include "api/test/mock_encoder_selector.h"
#include "api/test/mock_video_bitrate_allocator.h"
#include "api/test/mock_video_bitrate_allocator_factory.h"
@@ -101,6 +101,8 @@
using ::webrtc::BitrateConstraints;
using ::webrtc::Call;
using ::webrtc::CallConfig;
+using ::webrtc::CreateEnvironment;
+using ::webrtc::Environment;
using ::webrtc::kDefaultScalabilityModeStr;
using ::webrtc::RtpExtension;
using ::webrtc::RtpPacket;
@@ -355,13 +357,10 @@
explicit WebRtcVideoEngineTest(const std::string& field_trials)
: field_trials_(field_trials),
time_controller_(webrtc::Timestamp::Millis(4711)),
- task_queue_factory_(time_controller_.CreateTaskQueueFactory()),
- call_(Call::Create([&] {
- CallConfig call_config(&event_log_);
- call_config.task_queue_factory = task_queue_factory_.get();
- call_config.trials = &field_trials_;
- return call_config;
- }())),
+ env_(CreateEnvironment(&field_trials_,
+ time_controller_.CreateTaskQueueFactory(),
+ time_controller_.GetClock())),
+ call_(Call::Create(CallConfig(env_))),
encoder_factory_(new cricket::FakeWebRtcVideoEncoderFactory),
decoder_factory_(new cricket::FakeWebRtcVideoDecoderFactory),
video_bitrate_allocator_factory_(
@@ -398,8 +397,7 @@
webrtc::test::ScopedKeyValueConfig field_trials_;
webrtc::GlobalSimulatedTimeController time_controller_;
- webrtc::RtcEventLogNull event_log_;
- std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_;
+ Environment env_;
// Used in WebRtcVideoEngineVoiceTest, but defined here so it's properly
// initialized when the constructor is called.
std::unique_ptr<Call> call_;
@@ -1479,14 +1477,10 @@
EXPECT_CALL(*decoder_factory, CreateVideoDecoder(format)).Times(0);
// Create a call.
- webrtc::RtcEventLogNull event_log;
webrtc::GlobalSimulatedTimeController time_controller(
webrtc::Timestamp::Millis(4711));
- auto task_queue_factory = time_controller.CreateTaskQueueFactory();
- CallConfig call_config(&event_log);
- webrtc::FieldTrialBasedConfig field_trials;
- call_config.trials = &field_trials;
- call_config.task_queue_factory = task_queue_factory.get();
+ CallConfig call_config(CreateEnvironment(
+ time_controller.CreateTaskQueueFactory(), time_controller.GetClock()));
const std::unique_ptr<Call> call = Call::Create(call_config);
// Create send channel.
@@ -1615,18 +1609,11 @@
class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test {
protected:
- CallConfig GetCallConfig(webrtc::RtcEventLogNull* event_log,
- webrtc::TaskQueueFactory* task_queue_factory) {
- CallConfig call_config(event_log);
- call_config.task_queue_factory = task_queue_factory;
- call_config.trials = &field_trials_;
- return call_config;
- }
-
WebRtcVideoChannelEncodedFrameCallbackTest()
- : task_queue_factory_(time_controller_.CreateTaskQueueFactory()),
- call_(Call::Create(
- GetCallConfig(&event_log_, task_queue_factory_.get()))),
+ : env_(CreateEnvironment(&field_trials_,
+ time_controller_.CreateTaskQueueFactory(),
+ time_controller_.GetClock())),
+ call_(Call::Create(CallConfig(env_))),
video_bitrate_allocator_factory_(
webrtc::CreateBuiltinVideoBitrateAllocatorFactory()),
engine_(
@@ -1676,8 +1663,7 @@
webrtc::GlobalSimulatedTimeController time_controller_{
Timestamp::Seconds(1000)};
webrtc::test::ScopedKeyValueConfig field_trials_;
- webrtc::RtcEventLogNull event_log_;
- std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_;
+ Environment env_;
std::unique_ptr<Call> call_;
std::unique_ptr<webrtc::VideoBitrateAllocatorFactory>
video_bitrate_allocator_factory_;
@@ -1796,7 +1782,9 @@
class WebRtcVideoChannelBaseTest : public ::testing::Test {
protected:
WebRtcVideoChannelBaseTest()
- : task_queue_factory_(time_controller_.CreateTaskQueueFactory()),
+ : env_(CreateEnvironment(&field_trials_,
+ time_controller_.CreateTaskQueueFactory(),
+ time_controller_.GetClock())),
video_bitrate_allocator_factory_(
webrtc::CreateBuiltinVideoBitrateAllocatorFactory()),
engine_(std::make_unique<webrtc::VideoEncoderFactoryTemplate<
@@ -1814,10 +1802,7 @@
void SetUp() override {
// One testcase calls SetUp in a loop, only create call_ once.
if (!call_) {
- CallConfig call_config(&event_log_);
- call_config.task_queue_factory = task_queue_factory_.get();
- call_config.trials = &field_trials_;
- call_ = Call::Create(call_config);
+ call_ = Call::Create(CallConfig(env_));
}
cricket::MediaConfig media_config;
@@ -2016,10 +2001,9 @@
webrtc::GlobalSimulatedTimeController time_controller_{
Timestamp::Seconds(1000)};
- webrtc::RtcEventLogNull event_log_;
webrtc::test::ScopedKeyValueConfig field_trials_;
std::unique_ptr<webrtc::test::ScopedKeyValueConfig> override_field_trials_;
- std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_;
+ Environment env_;
std::unique_ptr<Call> call_;
std::unique_ptr<webrtc::VideoBitrateAllocatorFactory>
video_bitrate_allocator_factory_;
@@ -9863,7 +9847,6 @@
}
webrtc::test::ScopedKeyValueConfig field_trials_;
- webrtc::RtcEventLogNull event_log_;
FakeCall fake_call_;
cricket::FakeWebRtcVideoEncoderFactory* encoder_factory_;
cricket::FakeWebRtcVideoDecoderFactory* decoder_factory_;
diff --git a/media/engine/webrtc_voice_engine_unittest.cc b/media/engine/webrtc_voice_engine_unittest.cc
index 4c5d850..4d65806 100644
--- a/media/engine/webrtc_voice_engine_unittest.cc
+++ b/media/engine/webrtc_voice_engine_unittest.cc
@@ -18,8 +18,9 @@
#include "absl/types/optional.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
+#include "api/environment/environment.h"
+#include "api/environment/environment_factory.h"
#include "api/media_types.h"
-#include "api/rtc_event_log/rtc_event_log.h"
#include "api/rtp_parameters.h"
#include "api/scoped_refptr.h"
#include "api/task_queue/default_task_queue_factory.h"
@@ -45,6 +46,7 @@
#include "test/mock_audio_encoder_factory.h"
#include "test/scoped_key_value_config.h"
+namespace {
using ::testing::_;
using ::testing::ContainerEq;
using ::testing::Contains;
@@ -55,11 +57,11 @@
using ::testing::SaveArg;
using ::testing::StrictMock;
using ::testing::UnorderedElementsAreArray;
+using ::webrtc::BitrateConstraints;
using ::webrtc::Call;
using ::webrtc::CallConfig;
-
-namespace {
-using webrtc::BitrateConstraints;
+using ::webrtc::CreateEnvironment;
+using ::webrtc::Environment;
constexpr uint32_t kMaxUnsignaledRecvStreams = 4;
@@ -3678,24 +3680,18 @@
for (bool use_null_apm : {false, true}) {
// If the VoiceEngine wants to gather available codecs early, that's fine
// but we never want it to create a decoder at this stage.
- std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
- webrtc::CreateDefaultTaskQueueFactory();
+ Environment env = CreateEnvironment();
rtc::scoped_refptr<webrtc::test::MockAudioDeviceModule> adm =
webrtc::test::MockAudioDeviceModule::CreateNice();
rtc::scoped_refptr<webrtc::AudioProcessing> apm =
use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
- webrtc::FieldTrialBasedConfig field_trials;
cricket::WebRtcVoiceEngine engine(
- task_queue_factory.get(), adm.get(),
+ &env.task_queue_factory(), adm.get(),
webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm,
- nullptr, field_trials);
+ nullptr, env.field_trials());
engine.Init();
- webrtc::RtcEventLogNull event_log;
- CallConfig call_config(&event_log);
- call_config.trials = &field_trials;
- call_config.task_queue_factory = task_queue_factory.get();
- std::unique_ptr<Call> call = Call::Create(call_config);
+ std::unique_ptr<Call> call = Call::Create(CallConfig(env));
std::unique_ptr<cricket::VoiceMediaSendChannelInterface> send_channel =
engine.CreateSendChannel(
call.get(), cricket::MediaConfig(), cricket::AudioOptions(),
@@ -3713,25 +3709,19 @@
TEST(WebRtcVoiceEngineTest, StartupShutdownWithExternalADM) {
rtc::AutoThread main_thread;
for (bool use_null_apm : {false, true}) {
- std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
- webrtc::CreateDefaultTaskQueueFactory();
+ Environment env = CreateEnvironment();
auto adm = rtc::make_ref_counted<
::testing::NiceMock<webrtc::test::MockAudioDeviceModule>>();
{
rtc::scoped_refptr<webrtc::AudioProcessing> apm =
use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
- webrtc::FieldTrialBasedConfig field_trials;
cricket::WebRtcVoiceEngine engine(
- task_queue_factory.get(), adm.get(),
+ &env.task_queue_factory(), adm.get(),
webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm,
- nullptr, field_trials);
+ nullptr, env.field_trials());
engine.Init();
- webrtc::RtcEventLogNull event_log;
- CallConfig call_config(&event_log);
- call_config.trials = &field_trials;
- call_config.task_queue_factory = task_queue_factory.get();
- std::unique_ptr<Call> call = Call::Create(call_config);
+ std::unique_ptr<Call> call = Call::Create(CallConfig(env));
std::unique_ptr<cricket::VoiceMediaSendChannelInterface> send_channel =
engine.CreateSendChannel(
call.get(), cricket::MediaConfig(), cricket::AudioOptions(),
@@ -3804,24 +3794,18 @@
TEST(WebRtcVoiceEngineTest, Has32Channels) {
rtc::AutoThread main_thread;
for (bool use_null_apm : {false, true}) {
- std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
- webrtc::CreateDefaultTaskQueueFactory();
+ Environment env = CreateEnvironment();
rtc::scoped_refptr<webrtc::test::MockAudioDeviceModule> adm =
webrtc::test::MockAudioDeviceModule::CreateNice();
rtc::scoped_refptr<webrtc::AudioProcessing> apm =
use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
- webrtc::FieldTrialBasedConfig field_trials;
cricket::WebRtcVoiceEngine engine(
- task_queue_factory.get(), adm.get(),
+ &env.task_queue_factory(), adm.get(),
webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm,
- nullptr, field_trials);
+ nullptr, env.field_trials());
engine.Init();
- webrtc::RtcEventLogNull event_log;
- CallConfig call_config(&event_log);
- call_config.trials = &field_trials;
- call_config.task_queue_factory = task_queue_factory.get();
- std::unique_ptr<Call> call = Call::Create(call_config);
+ std::unique_ptr<Call> call = Call::Create(CallConfig(env));
std::vector<std::unique_ptr<cricket::VoiceMediaSendChannelInterface>>
channels;
@@ -3843,8 +3827,7 @@
TEST(WebRtcVoiceEngineTest, SetRecvCodecs) {
rtc::AutoThread main_thread;
for (bool use_null_apm : {false, true}) {
- std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
- webrtc::CreateDefaultTaskQueueFactory();
+ Environment env = CreateEnvironment();
// TODO(ossu): I'm not sure of the intent of this test. It's either:
// - Check that our builtin codecs are usable by Channel.
// - The codecs provided by the engine is usable by Channel.
@@ -3856,18 +3839,13 @@
webrtc::test::MockAudioDeviceModule::CreateNice();
rtc::scoped_refptr<webrtc::AudioProcessing> apm =
use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
- webrtc::FieldTrialBasedConfig field_trials;
cricket::WebRtcVoiceEngine engine(
- task_queue_factory.get(), adm.get(),
+ &env.task_queue_factory(), adm.get(),
webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
webrtc::CreateBuiltinAudioDecoderFactory(), nullptr, apm, nullptr,
- field_trials);
+ env.field_trials());
engine.Init();
- webrtc::RtcEventLogNull event_log;
- CallConfig call_config(&event_log);
- call_config.trials = &field_trials;
- call_config.task_queue_factory = task_queue_factory.get();
- std::unique_ptr<Call> call = Call::Create(call_config);
+ std::unique_ptr<Call> call = Call::Create(CallConfig(env));
cricket::WebRtcVoiceReceiveChannel channel(
&engine, cricket::MediaConfig(), cricket::AudioOptions(),
webrtc::CryptoOptions(), call.get(),
@@ -3880,21 +3858,17 @@
TEST(WebRtcVoiceEngineTest, SetRtpSendParametersMaxBitrate) {
rtc::AutoThread main_thread;
- std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
- webrtc::CreateDefaultTaskQueueFactory();
+ Environment env = CreateEnvironment();
rtc::scoped_refptr<webrtc::test::MockAudioDeviceModule> adm =
webrtc::test::MockAudioDeviceModule::CreateNice();
- webrtc::FieldTrialBasedConfig field_trials;
FakeAudioSource source;
- cricket::WebRtcVoiceEngine engine(task_queue_factory.get(), adm.get(),
+ cricket::WebRtcVoiceEngine engine(&env.task_queue_factory(), adm.get(),
webrtc::CreateBuiltinAudioEncoderFactory(),
webrtc::CreateBuiltinAudioDecoderFactory(),
- nullptr, nullptr, nullptr, field_trials);
+ nullptr, nullptr, nullptr,
+ env.field_trials());
engine.Init();
- webrtc::RtcEventLogNull event_log;
- CallConfig call_config(&event_log);
- call_config.trials = &field_trials;
- call_config.task_queue_factory = task_queue_factory.get();
+ CallConfig call_config(env);
{
webrtc::AudioState::Config config;
config.audio_mixer = webrtc::AudioMixerImpl::Create();