New struct PeerNetworkDependencies
Preparation to make landing of https://webrtc-review.googlesource.com/c/src/+/238660 easier. Bug: webrtc:13145 Change-Id: I314a53cc634f842e5df009d0802b214aa6f8728b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/238663 Reviewed-by: Artem Titov <titovartem@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/main@{#35403}
This commit is contained in:
parent
89f1aa59b6
commit
f47a724168
12
api/BUILD.gn
12
api/BUILD.gn
@ -410,6 +410,16 @@ rtc_source_set("stats_observer_interface") {
|
|||||||
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
|
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rtc_source_set("peer_network_dependencies") {
|
||||||
|
visibility = [ "*" ]
|
||||||
|
sources = [ "test/peer_network_dependencies.h" ]
|
||||||
|
deps = [
|
||||||
|
":packet_socket_factory",
|
||||||
|
"../rtc_base",
|
||||||
|
"../rtc_base:threading",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
rtc_source_set("peer_connection_quality_test_fixture_api") {
|
rtc_source_set("peer_connection_quality_test_fixture_api") {
|
||||||
visibility = [ "*" ]
|
visibility = [ "*" ]
|
||||||
testonly = true
|
testonly = true
|
||||||
@ -425,6 +435,7 @@ rtc_source_set("peer_connection_quality_test_fixture_api") {
|
|||||||
":media_stream_interface",
|
":media_stream_interface",
|
||||||
":network_state_predictor_api",
|
":network_state_predictor_api",
|
||||||
":packet_socket_factory",
|
":packet_socket_factory",
|
||||||
|
":peer_network_dependencies",
|
||||||
":rtp_parameters",
|
":rtp_parameters",
|
||||||
":simulated_network_api",
|
":simulated_network_api",
|
||||||
":stats_observer_interface",
|
":stats_observer_interface",
|
||||||
@ -654,6 +665,7 @@ rtc_source_set("network_emulation_manager_api") {
|
|||||||
deps = [
|
deps = [
|
||||||
":array_view",
|
":array_view",
|
||||||
":packet_socket_factory",
|
":packet_socket_factory",
|
||||||
|
":peer_network_dependencies",
|
||||||
":simulated_network_api",
|
":simulated_network_api",
|
||||||
":time_controller",
|
":time_controller",
|
||||||
"../call:simulated_network",
|
"../call:simulated_network",
|
||||||
|
|||||||
@ -16,6 +16,10 @@ specific_include_rules = {
|
|||||||
"+rtc_base/network.h",
|
"+rtc_base/network.h",
|
||||||
"+rtc_base/network_constants.h",
|
"+rtc_base/network_constants.h",
|
||||||
],
|
],
|
||||||
|
"peer_network_dependencies\.h": [
|
||||||
|
"+rtc_base/network.h",
|
||||||
|
"+rtc_base/thread.h",
|
||||||
|
],
|
||||||
"peerconnection_quality_test_fixture\.h": [
|
"peerconnection_quality_test_fixture\.h": [
|
||||||
"+logging/rtc_event_log/rtc_event_log_factory_interface.h",
|
"+logging/rtc_event_log/rtc_event_log_factory_interface.h",
|
||||||
"+rtc_base/network.h",
|
"+rtc_base/network.h",
|
||||||
|
|||||||
@ -20,6 +20,7 @@
|
|||||||
#include "api/packet_socket_factory.h"
|
#include "api/packet_socket_factory.h"
|
||||||
#include "api/test/network_emulation/cross_traffic.h"
|
#include "api/test/network_emulation/cross_traffic.h"
|
||||||
#include "api/test/network_emulation/network_emulation_interfaces.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/simulated_network.h"
|
||||||
#include "api/test/time_controller.h"
|
#include "api/test/time_controller.h"
|
||||||
#include "api/units/timestamp.h"
|
#include "api/units/timestamp.h"
|
||||||
@ -130,6 +131,9 @@ class EmulatedNetworkManagerInterface {
|
|||||||
// into WebRTC to properly setup network emulation. Returned factory is owned
|
// into WebRTC to properly setup network emulation. Returned factory is owned
|
||||||
// by EmulatedNetworkManagerInterface implementation.
|
// by EmulatedNetworkManagerInterface implementation.
|
||||||
virtual rtc::PacketSocketFactory* packet_socket_factory() = 0;
|
virtual rtc::PacketSocketFactory* packet_socket_factory() = 0;
|
||||||
|
webrtc::webrtc_pc_e2e::PeerNetworkDependencies network_dependencies() {
|
||||||
|
return {network_thread(), network_manager(), packet_socket_factory()};
|
||||||
|
}
|
||||||
// Returns list of endpoints that are associated with this instance. Pointers
|
// Returns list of endpoints that are associated with this instance. Pointers
|
||||||
// are guaranteed to be non-null and are owned by NetworkEmulationManager.
|
// are guaranteed to be non-null and are owned by NetworkEmulationManager.
|
||||||
virtual std::vector<EmulatedEndpoint*> endpoints() const = 0;
|
virtual std::vector<EmulatedEndpoint*> endpoints() const = 0;
|
||||||
|
|||||||
32
api/test/peer_network_dependencies.h
Normal file
32
api/test/peer_network_dependencies.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021 The WebRTC project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef API_TEST_PEER_NETWORK_DEPENDENCIES_H_
|
||||||
|
#define API_TEST_PEER_NETWORK_DEPENDENCIES_H_
|
||||||
|
|
||||||
|
#include "api/packet_socket_factory.h"
|
||||||
|
#include "rtc_base/network.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;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace webrtc_pc_e2e
|
||||||
|
} // namespace webrtc
|
||||||
|
|
||||||
|
#endif // API_TEST_PEER_NETWORK_DEPENDENCIES_H_
|
||||||
@ -30,6 +30,7 @@
|
|||||||
#include "api/task_queue/task_queue_factory.h"
|
#include "api/task_queue/task_queue_factory.h"
|
||||||
#include "api/test/audio_quality_analyzer_interface.h"
|
#include "api/test/audio_quality_analyzer_interface.h"
|
||||||
#include "api/test/frame_generator_interface.h"
|
#include "api/test/frame_generator_interface.h"
|
||||||
|
#include "api/test/peer_network_dependencies.h"
|
||||||
#include "api/test/simulated_network.h"
|
#include "api/test/simulated_network.h"
|
||||||
#include "api/test/stats_observer_interface.h"
|
#include "api/test/stats_observer_interface.h"
|
||||||
#include "api/test/track_id_stream_info_map.h"
|
#include "api/test/track_id_stream_info_map.h"
|
||||||
@ -494,10 +495,17 @@ class PeerConnectionE2EQualityTestFixture {
|
|||||||
|
|
||||||
// Add a new peer to the call and return an object through which caller
|
// Add a new peer to the call and return an object through which caller
|
||||||
// can configure peer's behavior.
|
// can configure peer's behavior.
|
||||||
// `network_thread` will be used as network thread for peer's peer connection
|
// `network_dependencies` are used to provide networking for peer's peer
|
||||||
// `network_manager` will be used to provide network interfaces for peer's
|
// connection. Members must be non-null.
|
||||||
// peer connection.
|
|
||||||
// `configurer` function will be used to configure peer in the call.
|
// `configurer` function will be used to configure peer in the call.
|
||||||
|
virtual PeerHandle* AddPeer(
|
||||||
|
const PeerNetworkDependencies& network_dependencies,
|
||||||
|
rtc::FunctionView<void(PeerConfigurer*)> configurer) {
|
||||||
|
return AddPeer(network_dependencies.network_thread,
|
||||||
|
network_dependencies.network_manager, configurer);
|
||||||
|
}
|
||||||
|
// TODO(bugs.webrtc.org/13145): Delete, replaced by above overload with
|
||||||
|
// PeerNetworkDependencies.
|
||||||
virtual PeerHandle* AddPeer(
|
virtual PeerHandle* AddPeer(
|
||||||
rtc::Thread* network_thread,
|
rtc::Thread* network_thread,
|
||||||
rtc::NetworkManager* network_manager,
|
rtc::NetworkManager* network_manager,
|
||||||
|
|||||||
@ -80,10 +80,10 @@ CreateTestFixture(const std::string& test_case_name,
|
|||||||
auto fixture = webrtc_pc_e2e::CreatePeerConnectionE2EQualityTestFixture(
|
auto fixture = webrtc_pc_e2e::CreatePeerConnectionE2EQualityTestFixture(
|
||||||
test_case_name, time_controller, /*audio_quality_analyzer=*/nullptr,
|
test_case_name, time_controller, /*audio_quality_analyzer=*/nullptr,
|
||||||
/*video_quality_analyzer=*/nullptr);
|
/*video_quality_analyzer=*/nullptr);
|
||||||
fixture->AddPeer(network_links.first->network_thread(),
|
fixture->AddPeer(network_links.first->network_dependencies(),
|
||||||
network_links.first->network_manager(), alice_configurer);
|
alice_configurer);
|
||||||
fixture->AddPeer(network_links.second->network_thread(),
|
fixture->AddPeer(network_links.second->network_dependencies(),
|
||||||
network_links.second->network_manager(), bob_configurer);
|
bob_configurer);
|
||||||
fixture->AddQualityMetricsReporter(
|
fixture->AddQualityMetricsReporter(
|
||||||
std::make_unique<webrtc_pc_e2e::NetworkQualityMetricsReporter>(
|
std::make_unique<webrtc_pc_e2e::NetworkQualityMetricsReporter>(
|
||||||
network_links.first, network_links.second));
|
network_links.first, network_links.second));
|
||||||
|
|||||||
@ -85,8 +85,7 @@ class PeerConnectionE2EQualityTestSmokeTest : public ::testing::Test {
|
|||||||
|
|
||||||
void AddPeer(EmulatedNetworkManagerInterface* network,
|
void AddPeer(EmulatedNetworkManagerInterface* network,
|
||||||
rtc::FunctionView<void(PeerConfigurer*)> configurer) {
|
rtc::FunctionView<void(PeerConfigurer*)> configurer) {
|
||||||
fixture_->AddPeer(network->network_thread(), network->network_manager(),
|
fixture_->AddPeer(network->network_dependencies(), configurer);
|
||||||
configurer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RunAndCheckEachVideoStreamReceivedFrames(const RunParams& run_params) {
|
void RunAndCheckEachVideoStreamReceivedFrames(const RunParams& run_params) {
|
||||||
|
|||||||
@ -85,10 +85,10 @@ CreateTestFixture(const std::string& test_case_name,
|
|||||||
auto fixture = webrtc_pc_e2e::CreatePeerConnectionE2EQualityTestFixture(
|
auto fixture = webrtc_pc_e2e::CreatePeerConnectionE2EQualityTestFixture(
|
||||||
test_case_name, time_controller, /*audio_quality_analyzer=*/nullptr,
|
test_case_name, time_controller, /*audio_quality_analyzer=*/nullptr,
|
||||||
/*video_quality_analyzer=*/nullptr);
|
/*video_quality_analyzer=*/nullptr);
|
||||||
fixture->AddPeer(network_links.first->network_thread(),
|
fixture->AddPeer(network_links.first->network_dependencies(),
|
||||||
network_links.first->network_manager(), alice_configurer);
|
alice_configurer);
|
||||||
fixture->AddPeer(network_links.second->network_thread(),
|
fixture->AddPeer(network_links.second->network_dependencies(),
|
||||||
network_links.second->network_manager(), bob_configurer);
|
bob_configurer);
|
||||||
fixture->AddQualityMetricsReporter(
|
fixture->AddQualityMetricsReporter(
|
||||||
std::make_unique<webrtc_pc_e2e::NetworkQualityMetricsReporter>(
|
std::make_unique<webrtc_pc_e2e::NetworkQualityMetricsReporter>(
|
||||||
network_links.first, network_links.second));
|
network_links.first, network_links.second));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user