Update peer scenario test helpers to newer emulation network api
To minimize direct construction of BasicPortAllocator, network emulation manager api is changed to push toward injecting network dependencies to PeerConnectionFactory and let it create PortAllocator
Bug: webrtc:42232556
Change-Id: I0c86d797a97d543c2f033286281dc1145d4ef51b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/376880
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43872}
diff --git a/test/peer_scenario/BUILD.gn b/test/peer_scenario/BUILD.gn
index 335f7f3..41bcd65 100644
--- a/test/peer_scenario/BUILD.gn
+++ b/test/peer_scenario/BUILD.gn
@@ -26,26 +26,29 @@
"..:fake_video_codecs",
"..:fileutils",
"..:frame_generator_capturer",
+ "..:scoped_key_value_config",
"..:test_support",
"../../api:array_view",
+ "../../api:audio_options_api",
"../../api:candidate",
"../../api:create_time_controller",
"../../api:libjingle_peerconnection_api",
+ "../../api:make_ref_counted",
+ "../../api:media_stream_interface",
"../../api:network_emulation_manager_api",
- "../../api:rtc_stats_api",
+ "../../api:rtc_error",
"../../api:scoped_refptr",
"../../api:sequence_checker",
"../../api:time_controller",
- "../../api/audio_codecs:builtin_audio_decoder_factory",
- "../../api/audio_codecs:builtin_audio_encoder_factory",
"../../api/environment",
"../../api/rtc_event_log:rtc_event_log_factory",
- "../../api/task_queue:default_task_queue_factory",
"../../api/test/network_emulation",
"../../api/transport:datagram_transport_interface",
"../../api/transport:enums",
"../../api/transport:field_trial_based_config",
+ "../../api/video:video_frame",
"../../api/video_codecs:scalability_mode",
+ "../../api/video_codecs:video_codecs_api",
"../../api/video_codecs:video_decoder_factory_template",
"../../api/video_codecs:video_decoder_factory_template_dav1d_adapter",
"../../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter",
@@ -59,31 +62,33 @@
"../../call:payload_type_picker",
"../../call:rtp_interfaces",
"../../call:rtp_receiver",
- "../../media:rtc_audio_video",
+ "../../media:media_constants",
"../../media:rtp_utils",
"../../modules/audio_device:test_audio_device_module",
"../../modules/rtp_rtcp:rtp_rtcp_format",
+ "../../p2p:basic_packet_socket_factory",
"../../p2p:basic_port_allocator",
"../../p2p:dtls_transport_internal",
"../../p2p:p2p_constants",
"../../p2p:port_allocator",
"../../p2p:transport_description",
- "../../pc:channel",
"../../pc:dtls_transport",
"../../pc:jsep_transport_controller",
"../../pc:pc_test_utils",
"../../pc:rtp_transport_internal",
"../../pc:session_description",
"../../rtc_base:checks",
+ "../../rtc_base:copy_on_write_buffer",
"../../rtc_base:crypto_random",
+ "../../rtc_base:logging",
"../../rtc_base:macromagic",
+ "../../rtc_base:network",
"../../rtc_base:null_socket_server",
"../../rtc_base:ssl",
"../../rtc_base:stringutils",
"../../rtc_base:task_queue_for_test",
+ "../../rtc_base:threading",
"../../rtc_base/third_party/sigslot",
- "../../test:explicit_key_value_config",
- "../../test:scoped_key_value_config",
"../logging:log_writer",
"../network:emulated_network",
"../scenario",
diff --git a/test/peer_scenario/peer_scenario_client.cc b/test/peer_scenario/peer_scenario_client.cc
index 2a73cf2..5431616 100644
--- a/test/peer_scenario/peer_scenario_client.cc
+++ b/test/peer_scenario/peer_scenario_client.cc
@@ -9,37 +9,68 @@
*/
#include "test/peer_scenario/peer_scenario_client.h"
+#include <cstdint>
+#include <functional>
#include <limits>
+#include <map>
#include <memory>
+#include <string>
#include <utility>
+#include <vector>
#include "absl/container/inlined_vector.h"
#include "absl/memory/memory.h"
-#include "api/audio_codecs/builtin_audio_decoder_factory.h"
-#include "api/audio_codecs/builtin_audio_encoder_factory.h"
+#include "api/audio_options.h"
+#include "api/candidate.h"
+#include "api/data_channel_interface.h"
#include "api/environment/environment.h"
+#include "api/jsep.h"
+#include "api/make_ref_counted.h"
+#include "api/media_stream_interface.h"
+#include "api/peer_connection_interface.h"
+#include "api/rtc_error.h"
#include "api/rtc_event_log/rtc_event_log_factory.h"
-#include "api/task_queue/default_task_queue_factory.h"
+#include "api/rtp_receiver_interface.h"
+#include "api/rtp_transceiver_interface.h"
+#include "api/scoped_refptr.h"
+#include "api/sequence_checker.h"
+#include "api/set_local_description_observer_interface.h"
+#include "api/set_remote_description_observer_interface.h"
#include "api/test/create_time_controller.h"
+#include "api/test/network_emulation/network_emulation_interfaces.h"
+#include "api/test/network_emulation_manager.h"
#include "api/transport/field_trial_based_config.h"
+#include "api/video/video_frame.h"
+#include "api/video/video_sink_interface.h"
+#include "api/video/video_source_interface.h"
#include "api/video_codecs/scalability_mode.h"
+#include "api/video_codecs/sdp_video_format.h"
+#include "api/video_codecs/video_decoder.h"
+#include "api/video_codecs/video_decoder_factory.h"
#include "api/video_codecs/video_decoder_factory_template.h"
#include "api/video_codecs/video_decoder_factory_template_dav1d_adapter.h"
#include "api/video_codecs/video_decoder_factory_template_libvpx_vp8_adapter.h"
#include "api/video_codecs/video_decoder_factory_template_libvpx_vp9_adapter.h"
#include "api/video_codecs/video_decoder_factory_template_open_h264_adapter.h"
+#include "api/video_codecs/video_encoder.h"
+#include "api/video_codecs/video_encoder_factory.h"
#include "api/video_codecs/video_encoder_factory_template.h"
#include "api/video_codecs/video_encoder_factory_template_libaom_av1_adapter.h"
#include "api/video_codecs/video_encoder_factory_template_libvpx_vp8_adapter.h"
#include "api/video_codecs/video_encoder_factory_template_libvpx_vp9_adapter.h"
#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
-#include "media/engine/webrtc_media_engine.h"
+#include "media/base/media_constants.h"
#include "modules/audio_device/include/test_audio_device.h"
-#include "p2p/client/basic_port_allocator.h"
+#include "p2p/base/port_allocator.h"
+#include "pc/test/frame_generator_capturer_video_track_source.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/thread.h"
#include "test/create_frame_generator_capturer.h"
#include "test/fake_decoder.h"
#include "test/fake_vp8_encoder.h"
#include "test/frame_generator_capturer.h"
+#include "test/logging/log_writer.h"
namespace webrtc {
namespace test {
@@ -252,6 +283,8 @@
pcf_deps.network_thread = manager->network_thread();
pcf_deps.signaling_thread = signaling_thread_;
pcf_deps.worker_thread = worker_thread_.get();
+ pcf_deps.socket_factory = manager->socket_factory();
+ pcf_deps.network_manager = manager->ReleaseNetworkManager();
pcf_deps.task_queue_factory =
net->time_controller()->CreateTaskQueueFactory();
pcf_deps.event_log_factory = std::make_unique<RtcEventLogFactory>();
@@ -293,10 +326,8 @@
pc_factory_->SetOptions(pc_options);
PeerConnectionDependencies pc_deps(observer_.get());
- pc_deps.allocator = std::make_unique<cricket::BasicPortAllocator>(
- manager->network_manager(), manager->packet_socket_factory());
- pc_deps.allocator->set_flags(pc_deps.allocator->flags() |
- cricket::PORTALLOCATOR_DISABLE_TCP);
+ config.rtc_config.port_allocator_config.flags |=
+ cricket::PORTALLOCATOR_DISABLE_TCP;
peer_connection_ =
pc_factory_
->CreatePeerConnectionOrError(config.rtc_config, std::move(pc_deps))
diff --git a/test/peer_scenario/scenario_connection.cc b/test/peer_scenario/scenario_connection.cc
index 22c52c0..3084994 100644
--- a/test/peer_scenario/scenario_connection.cc
+++ b/test/peer_scenario/scenario_connection.cc
@@ -31,6 +31,7 @@
#include "call/rtp_packet_sink_interface.h"
#include "media/base/rtp_utils.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
+#include "p2p/base/basic_packet_socket_factory.h"
#include "p2p/base/p2p_constants.h"
#include "p2p/base/port_allocator.h"
#include "p2p/base/transport_description.h"
@@ -41,7 +42,9 @@
#include "pc/rtp_transport_internal.h"
#include "pc/session_description.h"
#include "rtc_base/checks.h"
+#include "rtc_base/copy_on_write_buffer.h"
#include "rtc_base/crypto_random.h"
+#include "rtc_base/network.h"
#include "rtc_base/rtc_certificate.h"
#include "rtc_base/ssl_fingerprint.h"
#include "rtc_base/ssl_identity.h"
@@ -93,6 +96,8 @@
RTC_GUARDED_BY(network_thread_);
cricket::TransportDescription const transport_description_
RTC_GUARDED_BY(signaling_thread_);
+ std::unique_ptr<rtc::NetworkManager> network_manager_;
+ rtc::BasicPacketSocketFactory packet_socket_factory_;
std::unique_ptr<cricket::BasicPortAllocator> port_allocator_
RTC_GUARDED_BY(network_thread_);
PayloadTypePicker payload_type_picker_;
@@ -131,9 +136,11 @@
cricket::ConnectionRole::CONNECTIONROLE_PASSIVE,
rtc::SSLFingerprint::CreateFromCertificate(*certificate_.get())
.get()),
- port_allocator_(
- new cricket::BasicPortAllocator(manager_->network_manager(),
- manager_->packet_socket_factory())),
+ network_manager_(manager_->ReleaseNetworkManager()),
+ packet_socket_factory_(manager_->socket_factory()),
+ port_allocator_(std::make_unique<cricket::BasicPortAllocator>(
+ network_manager_.get(),
+ &packet_socket_factory_)),
jsep_controller_(
new JsepTransportController(env,
network_thread_,