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}
This commit is contained in:
Danil Chapovalov 2025-02-11 16:27:56 +01:00 committed by WebRTC LUCI CQ
parent 221013f316
commit 462640e04b
3 changed files with 63 additions and 20 deletions

View File

@ -26,26 +26,29 @@ if (rtc_include_tests) {
"..: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 @@ if (rtc_include_tests) {
"../../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",

View File

@ -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 @@ PeerScenarioClient::PeerScenarioClient(
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 @@ PeerScenarioClient::PeerScenarioClient(
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))

View File

@ -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 @@ class ScenarioIceConnectionImpl : public ScenarioIceConnection,
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 @@ ScenarioIceConnectionImpl::ScenarioIceConnectionImpl(
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_,