From 208634763a17606672e6bc3ecad01387bff9deea Mon Sep 17 00:00:00 2001 From: Artem Titov Date: Wed, 13 Mar 2019 10:30:51 +0100 Subject: [PATCH] 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 Commit-Queue: Artem Titov Cr-Commit-Position: refs/heads/master@{#27097} --- test/pc/e2e/BUILD.gn | 1 - test/pc/e2e/peer_connection_e2e_smoke_test.cc | 24 +++++-------------- test/scenario/network/BUILD.gn | 2 +- .../network/network_emulation_manager.cc | 13 ++++++++++ .../network/network_emulation_manager.h | 4 ++++ .../network/network_emulation_pc_unittest.cc | 20 ++++++---------- 6 files changed, 31 insertions(+), 33 deletions(-) diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn index 865b415c56..8c85fdd865 100644 --- a/test/pc/e2e/BUILD.gn +++ b/test/pc/e2e/BUILD.gn @@ -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", diff --git a/test/pc/e2e/peer_connection_e2e_smoke_test.cc b/test/pc/e2e/peer_connection_e2e_smoke_test.cc index 93e659c2e8..f4f2015833 100644 --- a/test/pc/e2e/peer_connection_e2e_smoke_test.cc +++ b/test/pc/e2e/peer_connection_e2e_smoke_test.cc @@ -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 CreateFakeNetworkManager( - std::vector endpoints) { - auto network_manager = absl::make_unique(); - 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 alice_network_manager = - CreateFakeNetworkManager({alice_endpoint}); + rtc::NetworkManager* alice_network_manager = + network_emulation_manager.CreateNetworkManager({alice_endpoint}); auto alice_components = absl::make_unique( - alice_network_thread, alice_network_manager.get()); - std::unique_ptr 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( - bob_network_thread, bob_network_manager.get()); + bob_network_thread, bob_network_manager); // Create analyzers. std::unique_ptr video_quality_analyzer = diff --git a/test/scenario/network/BUILD.gn b/test/scenario/network/BUILD.gn index 3a2270f852..25a3ec06be 100644 --- a/test/scenario/network/BUILD.gn +++ b/test/scenario/network/BUILD.gn @@ -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", diff --git a/test/scenario/network/network_emulation_manager.cc b/test/scenario/network/network_emulation_manager.cc index 604bd1267b..851c29f83e 100644 --- a/test/scenario/network/network_emulation_manager.cc +++ b/test/scenario/network/network_emulation_manager.cc @@ -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 endpoints) { + auto network_manager = absl::make_unique(); + 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 endpoints) { auto socket_server = diff --git a/test/scenario/network/network_emulation_manager.h b/test/scenario/network/network_emulation_manager.h index 3c1c148a66..6923d655bf 100644 --- a/test/scenario/network/network_emulation_manager.h +++ b/test/scenario/network/network_emulation_manager.h @@ -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 endpoints); + rtc::NetworkManager* CreateNetworkManager( + std::vector endpoints); private: FakeNetworkSocketServer* CreateSocketServer( @@ -96,6 +99,7 @@ class NetworkEmulationManager { std::vector> pulsed_cross_traffics_; std::vector> socket_servers_; std::vector> threads_; + std::vector> 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. diff --git a/test/scenario/network/network_emulation_pc_unittest.cc b/test/scenario/network/network_emulation_pc_unittest.cc index 26b900c048..71f8487f47 100644 --- a/test/scenario/network/network_emulation_pc_unittest.cc +++ b/test/scenario/network/network_emulation_pc_unittest.cc @@ -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 alice_pc; std::unique_ptr alice_observer = absl::make_unique(); - std::unique_ptr alice_network_manager = - absl::make_unique(); - alice_network_manager->AddInterface( - rtc::SocketAddress(alice_endpoint->GetPeerLocalAddress(), 0)); + rtc::NetworkManager* alice_network_manager = + network_manager.CreateNetworkManager({alice_endpoint}); rtc::scoped_refptr bob_pcf; rtc::scoped_refptr bob_pc; std::unique_ptr bob_observer = absl::make_unique(); - std::unique_ptr bob_network_manager = - absl::make_unique(); - bob_network_manager->AddInterface( - rtc::SocketAddress(bob_endpoint->GetPeerLocalAddress(), 0)); + rtc::NetworkManager* bob_network_manager = + network_manager.CreateNetworkManager({bob_endpoint}); signaling_thread->Invoke(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 alice =