Allow injection of time controller to NetworkEmulationManagerImpl.
Bug: webrtc:10365
Change-Id: I6a0e04459f75e8134787e605057dcb03cae55cd8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/132780
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27631}
diff --git a/test/scenario/network/network_emulation_manager.cc b/test/scenario/network/network_emulation_manager.cc
index d04805f..ae67f6f 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 <algorithm>
#include <memory>
@@ -31,10 +32,16 @@
} // 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 4356152..b3fd2a5 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 @@
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 7ad9eef..4e01665 100644
--- a/test/time_controller/real_time_controller.cc
+++ b/test/time_controller/real_time_controller.cc
@@ -38,4 +38,9 @@
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 05cfc93..10c1b20 100644
--- a/test/time_controller/real_time_controller.h
+++ b/test/time_controller/real_time_controller.h
@@ -25,6 +25,8 @@
void InvokeWithControlledYield(std::function<void()> closure) override;
};
+RealTimeController* GlobalRealTimeController();
+
} // namespace webrtc
#endif // TEST_TIME_CONTROLLER_REAL_TIME_CONTROLLER_H_