diff --git a/test/scenario/network/network_emulation_manager.cc b/test/scenario/network/network_emulation_manager.cc index d04805f4bb..ae67f6fb5e 100644 --- a/test/scenario/network/network_emulation_manager.cc +++ b/test/scenario/network/network_emulation_manager.cc @@ -9,6 +9,7 @@ */ #include "test/scenario/network/network_emulation_manager.h" +#include "test/time_controller/real_time_controller.h" #include #include @@ -31,10 +32,16 @@ constexpr uint32_t kMaxIPv4Address = 0xC0A8FFFF; } // namespace NetworkEmulationManagerImpl::NetworkEmulationManagerImpl() - : clock_(Clock::GetRealTimeClock()), + : NetworkEmulationManagerImpl(GlobalRealTimeController()) {} + +NetworkEmulationManagerImpl::NetworkEmulationManagerImpl( + TimeController* time_controller) + : clock_(time_controller->GetClock()), next_node_id_(1), next_ip4_address_(kMinIPv4Address), - task_queue_("network_emulation_manager") { + task_queue_(time_controller->GetTaskQueueFactory()->CreateTaskQueue( + "NetworkEmulation", + TaskQueueFactory::Priority::NORMAL)) { process_task_handle_ = RepeatingTaskHandle::Start(task_queue_.Get(), [this] { ProcessNetworkPackets(); return TimeDelta::ms(kPacketProcessingIntervalMs); diff --git a/test/scenario/network/network_emulation_manager.h b/test/scenario/network/network_emulation_manager.h index 4356152abe..b3fd2a5c3e 100644 --- a/test/scenario/network/network_emulation_manager.h +++ b/test/scenario/network/network_emulation_manager.h @@ -30,6 +30,7 @@ #include "test/scenario/network/fake_network_socket_server.h" #include "test/scenario/network/network_emulation.h" #include "test/scenario/network/traffic_route.h" +#include "test/time_controller/time_controller.h" namespace webrtc { namespace test { @@ -37,6 +38,7 @@ namespace test { class NetworkEmulationManagerImpl : public NetworkEmulationManager { public: NetworkEmulationManagerImpl(); + explicit NetworkEmulationManagerImpl(TimeController* time_controller); ~NetworkEmulationManagerImpl(); EmulatedNetworkNode* CreateEmulatedNode( diff --git a/test/time_controller/real_time_controller.cc b/test/time_controller/real_time_controller.cc index 7ad9eef98c..4e01665f07 100644 --- a/test/time_controller/real_time_controller.cc +++ b/test/time_controller/real_time_controller.cc @@ -38,4 +38,9 @@ void RealTimeController::InvokeWithControlledYield( closure(); } +RealTimeController* GlobalRealTimeController() { + static RealTimeController* time_controller = new RealTimeController(); + return time_controller; +} + } // namespace webrtc diff --git a/test/time_controller/real_time_controller.h b/test/time_controller/real_time_controller.h index 05cfc93523..10c1b20cbe 100644 --- a/test/time_controller/real_time_controller.h +++ b/test/time_controller/real_time_controller.h @@ -25,6 +25,8 @@ class RealTimeController : public TimeController { void InvokeWithControlledYield(std::function closure) override; }; +RealTimeController* GlobalRealTimeController(); + } // namespace webrtc #endif // TEST_TIME_CONTROLLER_REAL_TIME_CONTROLLER_H_