Split EmulatedNetworkInterface into two
This removes PCLF dependency on EmulatedNetwork framework and uses
more natural name for providing network dependencies for PCLF framework
Bug: None
Change-Id: I9e44dc4155a95697b9bcc76be5b3b5deb477e02b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/377160
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44128}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 6000e13..f67fcc3 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -593,9 +593,10 @@
visibility = [ "*" ]
sources = [ "test/peer_network_dependencies.h" ]
deps = [
- ":packet_socket_factory",
"../rtc_base:network",
+ "../rtc_base:socket_factory",
"../rtc_base:threading",
+ "//third_party/abseil-cpp/absl/base:nullability",
]
}
@@ -614,7 +615,6 @@
":media_stream_interface",
":network_state_predictor_api",
":packet_socket_factory",
- ":peer_network_dependencies",
":rtp_parameters",
":simulated_network_api",
":stats_observer_interface",
@@ -895,18 +895,14 @@
":peer_network_dependencies",
":simulated_network_api",
":time_controller",
- "..//test/network:simulated_network",
"../rtc_base:checks",
"../rtc_base:ip_address",
"../rtc_base:network",
"../rtc_base:network_constants",
"../rtc_base:socket_address",
- "../rtc_base:socket_factory",
- "../rtc_base:threading",
+ "../test/network:simulated_network",
"test/network_emulation",
"units:data_rate",
- "units:data_size",
- "units:timestamp",
"//third_party/abseil-cpp/absl/base:nullability",
"//third_party/abseil-cpp/absl/strings:string_view",
]
diff --git a/api/test/DEPS b/api/test/DEPS
index 02a677e..7416f3a 100644
--- a/api/test/DEPS
+++ b/api/test/DEPS
@@ -15,14 +15,12 @@
"+system_wrappers/include/clock.h",
],
"network_emulation_manager\.h": [
- "+rtc_base/thread.h",
- "+rtc_base/network.h",
"+rtc_base/network_constants.h",
"+rtc_base/ip_address.h",
"+rtc_base/socket_address.h",
- "+rtc_base/socket_factory.h",
],
"peer_network_dependencies\.h": [
+ "+rtc_base/socket_factory.h",
"+rtc_base/network.h",
"+rtc_base/thread.h",
],
diff --git a/api/test/network_emulation_manager.h b/api/test/network_emulation_manager.h
index ce1173d..df442eb 100644
--- a/api/test/network_emulation_manager.h
+++ b/api/test/network_emulation_manager.h
@@ -25,15 +25,13 @@
#include "api/field_trials_view.h"
#include "api/test/network_emulation/cross_traffic.h"
#include "api/test/network_emulation/network_emulation_interfaces.h"
+#include "api/test/peer_network_dependencies.h"
#include "api/test/simulated_network.h"
#include "api/test/time_controller.h"
#include "api/units/data_rate.h"
#include "rtc_base/ip_address.h"
-#include "rtc_base/network.h"
#include "rtc_base/network_constants.h"
#include "rtc_base/socket_address.h"
-#include "rtc_base/socket_factory.h"
-#include "rtc_base/thread.h"
namespace webrtc {
@@ -125,19 +123,10 @@
// Provide interface to obtain all required objects to inject network emulation
// layer into PeerConnection. Also contains information about network interfaces
// accessible by PeerConnection.
-class EmulatedNetworkManagerInterface {
+class EmulatedNetworkManagerInterface
+ : public webrtc_pc_e2e::PeerNetworkDependencies {
public:
- virtual ~EmulatedNetworkManagerInterface() = default;
-
- // Returns thread that have to be used as network thread
- // for WebRTC to properly setup network emulation. Returned thread is owned
- // by EmulatedNetworkManagerInterface implementation.
- virtual absl::Nonnull<rtc::Thread*> network_thread() = 0;
-
- // Returns objects to pass to PeerConnectionFactoryDependencies.
- virtual absl::Nonnull<rtc::SocketFactory*> socket_factory() = 0;
- virtual absl::Nonnull<std::unique_ptr<rtc::NetworkManager>>
- ReleaseNetworkManager() = 0;
+ ~EmulatedNetworkManagerInterface() override = default;
// Returns list of endpoints that are associated with this instance. Pointers
// are guaranteed to be non-null and are owned by NetworkEmulationManager.
diff --git a/api/test/pclf/BUILD.gn b/api/test/pclf/BUILD.gn
index bd5295c..2e3b439 100644
--- a/api/test/pclf/BUILD.gn
+++ b/api/test/pclf/BUILD.gn
@@ -81,6 +81,7 @@
"../..:ice_transport_interface",
"../..:libjingle_peerconnection_api",
"../..:network_emulation_manager_api",
+ "../..:peer_network_dependencies",
"../..:scoped_refptr",
"../../../p2p:port_allocator",
"../../../rtc_base:checks",
diff --git a/api/test/pclf/peer_configurer.cc b/api/test/pclf/peer_configurer.cc
index a08e007..20ab2f3 100644
--- a/api/test/pclf/peer_configurer.cc
+++ b/api/test/pclf/peer_configurer.cc
@@ -32,9 +32,9 @@
#include "api/scoped_refptr.h"
#include "api/test/create_peer_connection_quality_test_frame_generator.h"
#include "api/test/frame_generator_interface.h"
-#include "api/test/network_emulation_manager.h"
#include "api/test/pclf/media_configuration.h"
#include "api/test/pclf/media_quality_test_params.h"
+#include "api/test/peer_network_dependencies.h"
#include "api/transport/bitrate_settings.h"
#include "api/transport/network_control.h"
#include "api/video_codecs/video_decoder_factory.h"
@@ -47,7 +47,7 @@
namespace webrtc {
namespace webrtc_pc_e2e {
-PeerConfigurer::PeerConfigurer(EmulatedNetworkManagerInterface& network)
+PeerConfigurer::PeerConfigurer(PeerNetworkDependencies& network)
: components_(std::make_unique<InjectableComponents>(
network.network_thread(),
network.ReleaseNetworkManager(),
diff --git a/api/test/pclf/peer_configurer.h b/api/test/pclf/peer_configurer.h
index 0448054..f120b0b 100644
--- a/api/test/pclf/peer_configurer.h
+++ b/api/test/pclf/peer_configurer.h
@@ -30,9 +30,9 @@
#include "api/rtc_event_log/rtc_event_log_factory_interface.h"
#include "api/scoped_refptr.h"
#include "api/test/frame_generator_interface.h"
-#include "api/test/network_emulation_manager.h"
#include "api/test/pclf/media_configuration.h"
#include "api/test/pclf/media_quality_test_params.h"
+#include "api/test/peer_network_dependencies.h"
#include "api/transport/bitrate_settings.h"
#include "api/transport/network_control.h"
#include "api/video_codecs/video_decoder_factory.h"
@@ -50,7 +50,7 @@
absl::variant<std::unique_ptr<test::FrameGeneratorInterface>,
CapturingDeviceIndex>;
- explicit PeerConfigurer(EmulatedNetworkManagerInterface& network);
+ explicit PeerConfigurer(PeerNetworkDependencies& network);
// Sets peer name that will be used to report metrics related to this peer.
// If not set, some default name will be assigned. All names have to be
diff --git a/api/test/peer_network_dependencies.h b/api/test/peer_network_dependencies.h
index 6f85ad0..7a072ad 100644
--- a/api/test/peer_network_dependencies.h
+++ b/api/test/peer_network_dependencies.h
@@ -11,19 +11,26 @@
#ifndef API_TEST_PEER_NETWORK_DEPENDENCIES_H_
#define API_TEST_PEER_NETWORK_DEPENDENCIES_H_
-#include "api/packet_socket_factory.h"
+#include <memory>
+
+#include "absl/base/nullability.h"
#include "rtc_base/network.h"
+#include "rtc_base/socket_factory.h"
#include "rtc_base/thread.h"
namespace webrtc {
namespace webrtc_pc_e2e {
-// The network dependencies needed when adding a peer to tests using
-// PeerConnectionE2EQualityTestFixture.
-struct PeerNetworkDependencies {
- rtc::Thread* network_thread;
- rtc::NetworkManager* network_manager;
- rtc::PacketSocketFactory* packet_socket_factory;
+// Provides interface to obtain all required objects to inject network layer
+// into PeerConnectionFactory.
+class PeerNetworkDependencies {
+ public:
+ virtual ~PeerNetworkDependencies() = default;
+
+ virtual absl::Nonnull<rtc::Thread*> network_thread() = 0;
+ virtual absl::Nonnull<rtc::SocketFactory*> socket_factory() = 0;
+ virtual absl::Nonnull<std::unique_ptr<rtc::NetworkManager>>
+ ReleaseNetworkManager() = 0;
};
} // namespace webrtc_pc_e2e
diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn
index 92f6b41..6526141 100644
--- a/test/pc/e2e/BUILD.gn
+++ b/test/pc/e2e/BUILD.gn
@@ -181,7 +181,6 @@
deps = [
"../..:fileutils",
"../../../api:array_view",
- "../../../api:peer_network_dependencies",
"../../../api:rtp_parameters",
"../../../api/test/pclf:media_configuration",
"../../../api/test/pclf:media_quality_test_params",