diff --git a/api/test/peerconnection_quality_test_fixture.h b/api/test/peerconnection_quality_test_fixture.h index 198868d7a7..1bd2eb2635 100644 --- a/api/test/peerconnection_quality_test_fixture.h +++ b/api/test/peerconnection_quality_test_fixture.h @@ -371,6 +371,11 @@ class PeerConnectionE2EQualityTestFixture { std::unique_ptr tls_cert_verifier) = 0; virtual PeerConfigurer* SetIceTransportFactory( std::unique_ptr factory) = 0; + // Flags to set on `cricket::PortAllocator`. These flags will be added + // to the default ones that are presented on the port allocator. + // For possible values check p2p/base/port_allocator.h. + virtual PeerConfigurer* SetPortAllocatorExtraFlags( + uint32_t extra_flags) = 0; // Add new video stream to the call that will be sent from this peer. // Default implementation of video frames generator will be used. diff --git a/test/DEPS b/test/DEPS index 2d45003a76..ed994b7e79 100644 --- a/test/DEPS +++ b/test/DEPS @@ -60,6 +60,9 @@ specific_include_rules = { "+pc", "+p2p", ], + ".*peer_connection_quality_test_params\.h": [ + "+p2p/base/port_allocator.h", + ], ".*network_emulation_pc_unittest\.cc": [ "+pc/peer_connection_wrapper.h", "+pc/test/mock_peer_connection_observers.h", diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn index 1befff95bf..4e4b6bfda3 100644 --- a/test/pc/e2e/BUILD.gn +++ b/test/pc/e2e/BUILD.gn @@ -60,6 +60,7 @@ if (!build_with_chromium) { "../../../api/transport:network_control", "../../../api/transport:webrtc_key_value_config", "../../../api/video_codecs:video_codecs_api", + "../../../p2p:rtc_p2p", "../../../rtc_base", "../../../rtc_base:threading", ] diff --git a/test/pc/e2e/peer_configurer.h b/test/pc/e2e/peer_configurer.h index faf887834d..33ad5ebd12 100644 --- a/test/pc/e2e/peer_configurer.h +++ b/test/pc/e2e/peer_configurer.h @@ -195,6 +195,11 @@ class PeerConfigurerImpl final components_->pc_dependencies->ice_transport_factory = std::move(factory); return this; } + + PeerConfigurer* SetPortAllocatorExtraFlags(uint32_t extra_flags) override { + params_->port_allocator_extra_flags = extra_flags; + return this; + } // Implementation of PeerConnectionE2EQualityTestFixture::PeerConfigurer end. InjectableComponents* components() { return components_.get(); } diff --git a/test/pc/e2e/peer_connection_quality_test_params.h b/test/pc/e2e/peer_connection_quality_test_params.h index 37ccf57033..93fa8c11b9 100644 --- a/test/pc/e2e/peer_connection_quality_test_params.h +++ b/test/pc/e2e/peer_connection_quality_test_params.h @@ -24,6 +24,7 @@ #include "api/transport/webrtc_key_value_config.h" #include "api/video_codecs/video_decoder_factory.h" #include "api/video_codecs/video_encoder_factory.h" +#include "p2p/base/port_allocator.h" #include "rtc_base/network.h" #include "rtc_base/rtc_certificate_generator.h" #include "rtc_base/ssl_certificate.h" @@ -112,6 +113,9 @@ struct Params { std::vector video_configs; // If `audio_config` is set audio stream will be configured absl::optional audio_config; + // Flags to set on `cricket::PortAllocator`. These flags will be added + // to the default ones that are presented on the port allocator. + uint32_t port_allocator_extra_flags = cricket::kDefaultPortAllocatorFlags; // If `rtc_event_log_path` is set, an RTCEventLog will be saved in that // location and it will be available for further analysis. absl::optional rtc_event_log_path; diff --git a/test/pc/e2e/test_peer_factory.cc b/test/pc/e2e/test_peer_factory.cc index 709148c5b3..119c8e114f 100644 --- a/test/pc/e2e/test_peer_factory.cc +++ b/test/pc/e2e/test_peer_factory.cc @@ -257,6 +257,7 @@ PeerConnectionFactoryDependencies CreatePCFDependencies( // from InjectableComponents::PeerConnectionComponents. PeerConnectionDependencies CreatePCDependencies( MockPeerConnectionObserver* observer, + uint32_t port_allocator_extra_flags, std::unique_ptr pc_dependencies) { PeerConnectionDependencies pc_deps(observer); @@ -264,7 +265,7 @@ PeerConnectionDependencies CreatePCDependencies( pc_dependencies->network_manager, pc_dependencies->packet_socket_factory); // This test does not support TCP - int flags = cricket::PORTALLOCATOR_DISABLE_TCP; + int flags = port_allocator_extra_flags | cricket::PORTALLOCATOR_DISABLE_TCP; port_allocator->set_flags(port_allocator->flags() | flags); pc_deps.allocator = std::move(port_allocator); @@ -344,8 +345,9 @@ std::unique_ptr TestPeerFactory::CreateTestPeer( CreateModularPeerConnectionFactory(std::move(pcf_deps)); // Create peer connection. - PeerConnectionDependencies pc_deps = CreatePCDependencies( - observer.get(), std::move(components->pc_dependencies)); + PeerConnectionDependencies pc_deps = + CreatePCDependencies(observer.get(), params->port_allocator_extra_flags, + std::move(components->pc_dependencies)); rtc::scoped_refptr peer_connection = peer_connection_factory ->CreatePeerConnectionOrError(params->rtc_configuration,