commit 6db2310096e74485802169e830f2afaa7cc459cd
parent 6e9b9dfa04887e6dbafa64de19b21a1200e34d21
Author: Dan Baker <dbaker@mozilla.com>
Date: Mon, 1 Dec 2025 16:52:27 -0700
Bug 2000941 - Vendor libwebrtc from e45e523f79
Upstream commit: https://webrtc.googlesource.com/src/+/e45e523f799b3beb9bb172b5511f04505e2b9855
Use injected clock in rtc_tools/network_tester
Bug: webrtc:42223992
Change-Id: I200ffcc93a20b0382badae5536c57f875986f5a8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408040
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Evan Shrubsole <eshr@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45570}
Diffstat:
9 files changed, 53 insertions(+), 27 deletions(-)
diff --git a/third_party/libwebrtc/README.mozilla.last-vendor b/third_party/libwebrtc/README.mozilla.last-vendor
@@ -1,4 +1,4 @@
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc
-libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-12-01T23:49:54.037970+00:00.
+libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-12-01T23:52:14.394175+00:00.
# base of lastest vendoring
-ea1ac2490e
+e45e523f79
diff --git a/third_party/libwebrtc/moz-patch-stack/s0102.patch b/third_party/libwebrtc/moz-patch-stack/s0102.patch
@@ -687,10 +687,10 @@ index 4a772795ed..de27f01bb0 100644
rtc_source_set("arch") {
diff --git a/rtc_tools/network_tester/BUILD.gn b/rtc_tools/network_tester/BUILD.gn
-index 082a11f47c..2e8f069f24 100644
+index fd98be799b..fe30e9ece9 100644
--- a/rtc_tools/network_tester/BUILD.gn
+++ b/rtc_tools/network_tester/BUILD.gn
-@@ -180,8 +180,8 @@ if (is_android) {
+@@ -187,8 +187,8 @@ if (is_android) {
"../../rtc_base:threading",
]
diff --git a/third_party/libwebrtc/rtc_tools/network_tester/BUILD.gn b/third_party/libwebrtc/rtc_tools/network_tester/BUILD.gn
@@ -41,6 +41,7 @@ if (rtc_enable_protobuf) {
":network_tester_packet_proto",
"../../api:scoped_refptr",
"../../api:sequence_checker",
+ "../../api/environment",
"../../api/task_queue",
"../../api/task_queue:default_task_queue_factory",
"../../api/task_queue:pending_task_safety_flag",
@@ -61,6 +62,7 @@ if (rtc_enable_protobuf) {
"../../rtc_base/network:received_packet",
"../../rtc_base/synchronization:mutex",
"../../rtc_base/system:no_unique_address",
+ "../../system_wrappers",
"//third_party/abseil-cpp/absl/functional:any_invocable",
]
}
@@ -86,10 +88,13 @@ if (rtc_enable_protobuf) {
deps = [
":network_tester",
"../../api:rtc_error_matchers",
+ "../../api/environment",
+ "../../api/environment:environment_factory",
"../../rtc_base:gunit_helpers",
"../../rtc_base:random",
"../../rtc_base:threading",
"../../rtc_base:timeutils",
+ "../../test:create_test_environment",
"../../test:fileutils",
"../../test:test_support",
"../../test:wait_until",
@@ -110,6 +115,8 @@ if (rtc_enable_protobuf) {
deps = [
":network_tester",
+ "../../api/environment",
+ "../../api/environment:environment_factory",
"../../rtc_base:null_socket_server",
"../../rtc_base:threading",
]
diff --git a/third_party/libwebrtc/rtc_tools/network_tester/network_tester_unittest.cc b/third_party/libwebrtc/rtc_tools/network_tester/network_tester_unittest.cc
@@ -12,11 +12,13 @@
#include <string>
+#include "api/environment/environment.h"
#include "api/test/rtc_error_matchers.h"
#include "rtc_base/random.h"
#include "rtc_base/thread.h"
#include "rtc_base/time_utils.h"
#include "rtc_tools/network_tester/test_controller.h"
+#include "test/create_test_environment.h"
#include "test/gmock.h"
#include "test/gtest.h"
#include "test/testsupport/file_utils.h"
@@ -32,12 +34,14 @@ TEST(NetworkTesterTest, ServerClient) {
int port = Random(TimeMicros()).Rand(MIN_PORT, MAX_PORT);
AutoThread main_thread;
+ Environment env = CreateTestEnvironment();
TestController client(
- 0, 0, test::ResourcePath("network_tester/client_config", "dat"),
+ env, 0, 0, test::ResourcePath("network_tester/client_config", "dat"),
test::OutputPath() + "client_packet_log.dat");
TestController server(
- port, port, test::ResourcePath("network_tester/server_config", "dat"),
+ env, port, port,
+ test::ResourcePath("network_tester/server_config", "dat"),
test::OutputPath() + "server_packet_log.dat");
client.SendConnectTo("127.0.0.1", port);
EXPECT_THAT(
diff --git a/third_party/libwebrtc/rtc_tools/network_tester/packet_sender.cc b/third_party/libwebrtc/rtc_tools/network_tester/packet_sender.cc
@@ -19,32 +19,34 @@
#include <utility>
#include "absl/functional/any_invocable.h"
+#include "api/environment/environment.h"
#include "api/scoped_refptr.h"
#include "api/sequence_checker.h"
#include "api/task_queue/pending_task_safety_flag.h"
#include "api/task_queue/task_queue_base.h"
#include "api/units/time_delta.h"
-#include "rtc_base/time_utils.h"
#include "rtc_tools/network_tester/config_reader.h"
#include "rtc_tools/network_tester/test_controller.h"
+#include "system_wrappers/include/clock.h"
namespace webrtc {
namespace {
absl::AnyInvocable<void() &&> SendPacketTask(
+ Clock* clock,
PacketSender* packet_sender,
scoped_refptr<PendingTaskSafetyFlag> task_safety_flag,
- int64_t target_time_ms = TimeMillis()) {
- return [target_time_ms, packet_sender,
+ int64_t target_time_ms) {
+ return [clock, target_time_ms, packet_sender,
task_safety_flag = std::move(task_safety_flag)]() mutable {
if (task_safety_flag->alive() && packet_sender->IsSending()) {
packet_sender->SendPacket();
target_time_ms += packet_sender->GetSendIntervalMs();
- int64_t delay_ms =
- std::max(static_cast<int64_t>(0), target_time_ms - TimeMillis());
+ int64_t delay_ms = std::max(static_cast<int64_t>(0),
+ target_time_ms - clock->TimeInMilliseconds());
TaskQueueBase::Current()->PostDelayedTask(
- SendPacketTask(packet_sender, std::move(task_safety_flag),
+ SendPacketTask(clock, packet_sender, std::move(task_safety_flag),
target_time_ms),
TimeDelta::Millis(delay_ms));
}
@@ -77,11 +79,13 @@ absl::AnyInvocable<void() &&> UpdateTestSettingTask(
} // namespace
PacketSender::PacketSender(
+ const Environment& env,
TestController* test_controller,
TaskQueueBase* worker_queue,
scoped_refptr<PendingTaskSafetyFlag> task_safety_flag,
const std::string& config_file_path)
- : packet_size_(0),
+ : env_(env),
+ packet_size_(0),
send_interval_ms_(0),
sequence_number_(0),
sending_(false),
@@ -101,7 +105,8 @@ void PacketSender::StartSending() {
worker_queue_->PostTask(UpdateTestSettingTask(
this, std::make_unique<ConfigReader>(config_file_path_),
task_safety_flag_));
- worker_queue_->PostTask(SendPacketTask(this, task_safety_flag_));
+ worker_queue_->PostTask(SendPacketTask(&env_.clock(), this, task_safety_flag_,
+ env_.clock().TimeInMilliseconds()));
}
void PacketSender::StopSending() {
@@ -120,7 +125,7 @@ void PacketSender::SendPacket() {
NetworkTesterPacket packet;
packet.set_type(NetworkTesterPacket::TEST_DATA);
packet.set_sequence_number(sequence_number_++);
- packet.set_send_timestamp(TimeMicros());
+ packet.set_send_timestamp(env_.clock().TimeInMicroseconds());
test_controller_->SendData(packet, packet_size_);
}
diff --git a/third_party/libwebrtc/rtc_tools/network_tester/packet_sender.h b/third_party/libwebrtc/rtc_tools/network_tester/packet_sender.h
@@ -15,6 +15,7 @@
#include <cstdint>
#include <string>
+#include "api/environment/environment.h"
#include "api/scoped_refptr.h"
#include "api/sequence_checker.h"
#include "api/task_queue/pending_task_safety_flag.h"
@@ -35,7 +36,8 @@ class TestController;
class PacketSender {
public:
- PacketSender(TestController* test_controller,
+ PacketSender(const Environment& env,
+ TestController* test_controller,
TaskQueueBase* worker_queue,
scoped_refptr<PendingTaskSafetyFlag> task_safety_flag,
const std::string& config_file_path);
@@ -54,6 +56,7 @@ class PacketSender {
void UpdateTestSetting(size_t packet_size, int64_t send_interval_ms);
private:
+ Environment env_;
RTC_NO_UNIQUE_ADDRESS SequenceChecker worker_queue_checker_;
size_t packet_size_ RTC_GUARDED_BY(worker_queue_checker_);
int64_t send_interval_ms_ RTC_GUARDED_BY(worker_queue_checker_);
diff --git a/third_party/libwebrtc/rtc_tools/network_tester/server.cc b/third_party/libwebrtc/rtc_tools/network_tester/server.cc
@@ -10,14 +10,15 @@
#include <memory>
+#include "api/environment/environment_factory.h"
#include "rtc_base/null_socket_server.h"
#include "rtc_base/thread.h"
#include "rtc_tools/network_tester/test_controller.h"
int main(int /*argn*/, char* /*argv*/[]) {
webrtc::Thread main_thread(std::make_unique<webrtc::NullSocketServer>());
- webrtc::TestController server(9090, 9090, "server_config.dat",
- "server_packet_log.dat");
+ webrtc::TestController server(webrtc::CreateEnvironment(), 9090, 9090,
+ "server_config.dat", "server_packet_log.dat");
while (!server.IsTestDone()) {
// 100 ms is arbitrary chosen.
main_thread.ProcessMessages(/*cms=*/100);
diff --git a/third_party/libwebrtc/rtc_tools/network_tester/test_controller.cc b/third_party/libwebrtc/rtc_tools/network_tester/test_controller.cc
@@ -16,6 +16,7 @@
#include <optional>
#include <string>
+#include "api/environment/environment.h"
#include "api/sequence_checker.h"
#include "api/task_queue/pending_task_safety_flag.h"
#include "api/units/timestamp.h"
@@ -33,11 +34,13 @@
namespace webrtc {
-TestController::TestController(int min_port,
+TestController::TestController(const Environment& env,
+ int min_port,
int max_port,
const std::string& config_file_path,
const std::string& log_file_path)
- : socket_server_(CreateDefaultSocketServer()),
+ : env_(env),
+ socket_server_(CreateDefaultSocketServer()),
packet_sender_thread_(std::make_unique<Thread>(socket_server_.get())),
socket_factory_(socket_server_.get()),
config_file_path_(config_file_path),
@@ -133,9 +136,9 @@ void TestController::OnReadPacket(AsyncPacketSocket* socket,
start_packet.set_type(NetworkTesterPacket::TEST_START);
remote_address_ = received_packet.source_address();
SendData(start_packet, std::nullopt);
- packet_sender_.reset(new PacketSender(this, packet_sender_thread_.get(),
- task_safety_flag_,
- config_file_path_));
+ packet_sender_.reset(
+ new PacketSender(env_, this, packet_sender_thread_.get(),
+ task_safety_flag_, config_file_path_));
packet_sender_->StartSending();
MutexLock scoped_lock(&test_done_lock_);
local_test_done_ = false;
@@ -143,9 +146,9 @@ void TestController::OnReadPacket(AsyncPacketSocket* socket,
break;
}
case NetworkTesterPacket::TEST_START: {
- packet_sender_.reset(new PacketSender(this, packet_sender_thread_.get(),
- task_safety_flag_,
- config_file_path_));
+ packet_sender_.reset(
+ new PacketSender(env_, this, packet_sender_thread_.get(),
+ task_safety_flag_, config_file_path_));
packet_sender_->StartSending();
MutexLock scoped_lock(&test_done_lock_);
local_test_done_ = false;
diff --git a/third_party/libwebrtc/rtc_tools/network_tester/test_controller.h b/third_party/libwebrtc/rtc_tools/network_tester/test_controller.h
@@ -17,6 +17,7 @@
#include <optional>
#include <string>
+#include "api/environment/environment.h"
#include "api/scoped_refptr.h"
#include "api/sequence_checker.h"
#include "api/task_queue/pending_task_safety_flag.h"
@@ -45,7 +46,8 @@ constexpr size_t kEthernetMtu = 1500;
class TestController {
public:
- TestController(int min_port,
+ TestController(const Environment& env,
+ int min_port,
int max_port,
const std::string& config_file_path,
const std::string& log_file_path);
@@ -66,6 +68,7 @@ class TestController {
private:
void OnReadPacket(AsyncPacketSocket* socket,
const ReceivedIpPacket& received_packet);
+ Environment env_;
RTC_NO_UNIQUE_ADDRESS SequenceChecker test_controller_thread_checker_;
std::unique_ptr<SocketServer> socket_server_;
std::unique_ptr<Thread> packet_sender_thread_;