From a88a4b70501ffabf5885af3b1c328bf8f719c04c Mon Sep 17 00:00:00 2001 From: Liad Rubin Date: Wed, 18 Oct 2023 16:44:01 +0300 Subject: [PATCH] Change the NetworkTesterTest.ClientServer test to use a random port number to avoid collisions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:15575 Change-Id: Ied0bdc79d52edd0d919be007798135c1c6b1f98b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/323820 Reviewed-by: Harald Alvestrand Reviewed-by: Björn Terelius Commit-Queue: Björn Terelius Cr-Commit-Position: refs/heads/main@{#40966} --- rtc_tools/network_tester/BUILD.gn | 1 + rtc_tools/network_tester/network_tester_unittest.cc | 12 ++++++++++-- rtc_tools/network_tester/test_controller.cc | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/rtc_tools/network_tester/BUILD.gn b/rtc_tools/network_tester/BUILD.gn index e33a3c000f..efe2123510 100644 --- a/rtc_tools/network_tester/BUILD.gn +++ b/rtc_tools/network_tester/BUILD.gn @@ -86,6 +86,7 @@ if (rtc_enable_protobuf) { deps = [ ":network_tester", "../../rtc_base:gunit_helpers", + "../../rtc_base:random", "../../rtc_base:threading", "../../test:fileutils", "../../test:test_support", diff --git a/rtc_tools/network_tester/network_tester_unittest.cc b/rtc_tools/network_tester/network_tester_unittest.cc index 60b34e4e9f..ea0ebf98f8 100644 --- a/rtc_tools/network_tester/network_tester_unittest.cc +++ b/rtc_tools/network_tester/network_tester_unittest.cc @@ -13,6 +13,7 @@ #include #include "rtc_base/gunit.h" +#include "rtc_base/random.h" #include "rtc_tools/network_tester/test_controller.h" #include "test/gtest.h" #include "test/testsupport/file_utils.h" @@ -20,15 +21,22 @@ namespace webrtc { TEST(NetworkTesterTest, ServerClient) { + // Use a unique port rather than a hard-coded one to avoid collision when + // running the test in parallel in stress runs. Skipping all reserved ports. + const int MIN_PORT = 49152; + const int MAX_PORT = 65535; + int port = webrtc::Random(rtc::TimeMicros()).Rand(MIN_PORT, MAX_PORT); + rtc::AutoThread main_thread; + TestController client( 0, 0, webrtc::test::ResourcePath("network_tester/client_config", "dat"), webrtc::test::OutputPath() + "client_packet_log.dat"); TestController server( - 9090, 9090, + port, port, webrtc::test::ResourcePath("network_tester/server_config", "dat"), webrtc::test::OutputPath() + "server_packet_log.dat"); - client.SendConnectTo("127.0.0.1", 9090); + client.SendConnectTo("127.0.0.1", port); EXPECT_TRUE_WAIT(server.IsTestDone() && client.IsTestDone(), 2000); } diff --git a/rtc_tools/network_tester/test_controller.cc b/rtc_tools/network_tester/test_controller.cc index 6fe83fd430..3d9af380f1 100644 --- a/rtc_tools/network_tester/test_controller.cc +++ b/rtc_tools/network_tester/test_controller.cc @@ -43,6 +43,7 @@ TestController::TestController(int min_port, udp_socket_ = std::unique_ptr(socket_factory_.CreateUdpSocket( rtc::SocketAddress(rtc::GetAnyIP(AF_INET), 0), min_port, max_port)); + RTC_CHECK(udp_socket_ != nullptr); udp_socket_->SignalReadPacket.connect(this, &TestController::OnReadPacket); }); }