Move creation of rtc::NetworkManager into network emulation layer

Bug: webrtc:10138
Change-Id: I64271fab46a8dccb09f255eb14a4404b0bccdea3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127285
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27097}
This commit is contained in:
Artem Titov 2019-03-13 10:30:51 +01:00 committed by Commit Bot
parent 9699f09eb3
commit 208634763a
6 changed files with 31 additions and 33 deletions

View File

@ -281,7 +281,6 @@ if (rtc_include_tests) {
"../../../rtc_base:gunit_helpers",
"../../../rtc_base:logging",
"../../../rtc_base:rtc_base",
"../../../rtc_base:rtc_base_tests_utils",
"../../../rtc_base:rtc_event",
"../../../test:fileutils",
"../../../test:test_support",

View File

@ -13,8 +13,6 @@
#include "absl/memory/memory.h"
#include "call/simulated_network.h"
#include "rtc_base/async_invoker.h"
#include "rtc_base/fake_network.h"
#include "test/gtest.h"
#include "test/pc/e2e/analyzer/audio/default_audio_quality_analyzer.h"
#include "test/pc/e2e/analyzer/video/default_video_quality_analyzer.h"
@ -28,16 +26,6 @@ namespace webrtc {
namespace test {
namespace {
std::unique_ptr<rtc::NetworkManager> CreateFakeNetworkManager(
std::vector<EmulatedEndpoint*> endpoints) {
auto network_manager = absl::make_unique<rtc::FakeNetworkManager>();
for (auto* endpoint : endpoints) {
network_manager->AddInterface(
rtc::SocketAddress(endpoint->GetPeerLocalAddress(), /*port=*/0));
}
return network_manager;
}
void PrintFrameCounters(const std::string& name,
const FrameCounters& counters) {
RTC_LOG(INFO) << "[" << name << "] Captured : " << counters.captured;
@ -96,14 +84,14 @@ TEST(PeerConnectionE2EQualityTestSmokeTest, RunWithEmulatedNetwork) {
// Setup components. We need to provide rtc::NetworkManager compatible with
// emulated network layer.
std::unique_ptr<rtc::NetworkManager> alice_network_manager =
CreateFakeNetworkManager({alice_endpoint});
rtc::NetworkManager* alice_network_manager =
network_emulation_manager.CreateNetworkManager({alice_endpoint});
auto alice_components = absl::make_unique<InjectableComponents>(
alice_network_thread, alice_network_manager.get());
std::unique_ptr<rtc::NetworkManager> bob_network_manager =
CreateFakeNetworkManager({bob_endpoint});
alice_network_thread, alice_network_manager);
rtc::NetworkManager* bob_network_manager =
network_emulation_manager.CreateNetworkManager({bob_endpoint});
auto bob_components = absl::make_unique<InjectableComponents>(
bob_network_thread, bob_network_manager.get());
bob_network_thread, bob_network_manager);
// Create analyzers.
std::unique_ptr<VideoQualityAnalyzerInterface> video_quality_analyzer =

View File

@ -32,6 +32,7 @@ rtc_source_set("emulated_network") {
"../../../api/units:time_delta",
"../../../api/units:timestamp",
"../../../rtc_base:rtc_base",
"../../../rtc_base:rtc_base_tests_utils",
"../../../rtc_base:rtc_task_queue",
"../../../rtc_base:safe_minmax",
"../../../rtc_base/task_utils:repeating_task",
@ -83,7 +84,6 @@ rtc_source_set("network_emulation_pc_unittest") {
"../../../rtc_base:gunit_helpers",
"../../../rtc_base:logging",
"../../../rtc_base:rtc_base",
"../../../rtc_base:rtc_base_tests_utils",
"../../../rtc_base:rtc_event",
"../../../test:test_support",
"//third_party/abseil-cpp/absl/memory:memory",

View File

@ -16,6 +16,7 @@
#include "absl/memory/memory.h"
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "rtc_base/fake_network.h"
namespace webrtc {
namespace test {
@ -203,6 +204,18 @@ rtc::Thread* NetworkEmulationManager::CreateNetworkThread(
return out;
}
rtc::NetworkManager* NetworkEmulationManager::CreateNetworkManager(
std::vector<EmulatedEndpoint*> endpoints) {
auto network_manager = absl::make_unique<rtc::FakeNetworkManager>();
for (auto* endpoint : endpoints) {
network_manager->AddInterface(
rtc::SocketAddress(endpoint->GetPeerLocalAddress(), /*port=*/0));
}
rtc::NetworkManager* out = network_manager.get();
managers_.push_back(std::move(network_manager));
return out;
}
FakeNetworkSocketServer* NetworkEmulationManager::CreateSocketServer(
std::vector<EmulatedEndpoint*> endpoints) {
auto socket_server =

View File

@ -19,6 +19,7 @@
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "rtc_base/logging.h"
#include "rtc_base/network.h"
#include "rtc_base/task_queue.h"
#include "rtc_base/task_utils/repeating_task.h"
#include "rtc_base/thread.h"
@ -71,6 +72,8 @@ class NetworkEmulationManager {
PulsedPeaksConfig config);
rtc::Thread* CreateNetworkThread(std::vector<EmulatedEndpoint*> endpoints);
rtc::NetworkManager* CreateNetworkManager(
std::vector<EmulatedEndpoint*> endpoints);
private:
FakeNetworkSocketServer* CreateSocketServer(
@ -96,6 +99,7 @@ class NetworkEmulationManager {
std::vector<std::unique_ptr<PulsedPeaksCrossTraffic>> pulsed_cross_traffics_;
std::vector<std::unique_ptr<FakeNetworkSocketServer>> socket_servers_;
std::vector<std::unique_ptr<rtc::Thread>> threads_;
std::vector<std::unique_ptr<rtc::NetworkManager>> managers_;
// Must be the last field, so it will be deleted first, because tasks
// in the TaskQueue can access other fields of the instance of this class.

View File

@ -26,8 +26,6 @@
#include "p2p/client/basic_port_allocator.h"
#include "pc/peer_connection_wrapper.h"
#include "pc/test/mock_peer_connection_observers.h"
#include "rtc_base/async_invoker.h"
#include "rtc_base/fake_network.h"
#include "rtc_base/gunit.h"
#include "test/gmock.h"
#include "test/gtest.h"
@ -125,30 +123,26 @@ TEST(NetworkEmulationManagerPCTest, Run) {
rtc::scoped_refptr<PeerConnectionInterface> alice_pc;
std::unique_ptr<MockPeerConnectionObserver> alice_observer =
absl::make_unique<MockPeerConnectionObserver>();
std::unique_ptr<rtc::FakeNetworkManager> alice_network_manager =
absl::make_unique<rtc::FakeNetworkManager>();
alice_network_manager->AddInterface(
rtc::SocketAddress(alice_endpoint->GetPeerLocalAddress(), 0));
rtc::NetworkManager* alice_network_manager =
network_manager.CreateNetworkManager({alice_endpoint});
rtc::scoped_refptr<PeerConnectionFactoryInterface> bob_pcf;
rtc::scoped_refptr<PeerConnectionInterface> bob_pc;
std::unique_ptr<MockPeerConnectionObserver> bob_observer =
absl::make_unique<MockPeerConnectionObserver>();
std::unique_ptr<rtc::FakeNetworkManager> bob_network_manager =
absl::make_unique<rtc::FakeNetworkManager>();
bob_network_manager->AddInterface(
rtc::SocketAddress(bob_endpoint->GetPeerLocalAddress(), 0));
rtc::NetworkManager* bob_network_manager =
network_manager.CreateNetworkManager({bob_endpoint});
signaling_thread->Invoke<void>(RTC_FROM_HERE, [&]() {
alice_pcf = CreatePeerConnectionFactory(signaling_thread.get(),
alice_network_thread);
alice_pc = CreatePeerConnection(alice_pcf, alice_observer.get(),
alice_network_manager.get());
alice_network_manager);
bob_pcf =
CreatePeerConnectionFactory(signaling_thread.get(), bob_network_thread);
bob_pc = CreatePeerConnection(bob_pcf, bob_observer.get(),
bob_network_manager.get());
bob_pc =
CreatePeerConnection(bob_pcf, bob_observer.get(), bob_network_manager);
});
std::unique_ptr<PeerConnectionWrapper> alice =