From bae42398b616d82bb83add30e60557f572894f88 Mon Sep 17 00:00:00 2001 From: Slobodan Adamovic Date: Wed, 20 Mar 2024 12:45:44 +0100 Subject: [PATCH] [Test] Fix SslMultiPortTests by increasing the number of ephemeral ports on windows This PR increases client's port ranges for tests which are executed on Windows in order to avoid failures due to some port ranges being excluded from use. The larger ports range (300) is chosen based on the observation where a random consecutive range of 200 ports can be excluded on Windows test workers. Relates to: https://github.com/elastic/elasticsearch/pull/103894 Resolves: https://github.com/elastic/elasticsearch/issues/106537 --- .../transport/ssl/SslMultiPortTests.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/x-pack/plugin/security/src/internalClusterTest/java/org/elasticsearch/xpack/security/transport/ssl/SslMultiPortTests.java b/x-pack/plugin/security/src/internalClusterTest/java/org/elasticsearch/xpack/security/transport/ssl/SslMultiPortTests.java index 4896384490c36..402fc7091d84a 100644 --- a/x-pack/plugin/security/src/internalClusterTest/java/org/elasticsearch/xpack/security/transport/ssl/SslMultiPortTests.java +++ b/x-pack/plugin/security/src/internalClusterTest/java/org/elasticsearch/xpack/security/transport/ssl/SslMultiPortTests.java @@ -6,6 +6,7 @@ */ package org.elasticsearch.xpack.security.transport.ssl; +import org.apache.lucene.util.Constants; import org.elasticsearch.client.transport.NoNodeAvailableException; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.network.NetworkAddress; @@ -39,14 +40,24 @@ public class SslMultiPortTests extends SecurityIntegTestCase { + private static final int NUMBER_OF_CLIENT_PORTS = Constants.WINDOWS ? 300 : 100; + private static int randomClientPort; + private static String randomClientPortRange; private static int randomNoClientAuthPort; + private static String randomNoClientAuthPortRange; private static InetAddress localAddress; @BeforeClass public static void getRandomPort() { - randomClientPort = randomIntBetween(49000, 65500); // ephemeral port - randomNoClientAuthPort = randomIntBetween(49000, 65500); + randomClientPort = randomIntBetween(49152, 65535 - NUMBER_OF_CLIENT_PORTS); + randomClientPortRange = randomClientPort + "-" + (randomClientPort + NUMBER_OF_CLIENT_PORTS); + + randomNoClientAuthPort = randomValueOtherThanMany( + port -> port >= randomClientPort - NUMBER_OF_CLIENT_PORTS && port <= randomClientPort + NUMBER_OF_CLIENT_PORTS, + () -> randomIntBetween(49152, 65535 - NUMBER_OF_CLIENT_PORTS) + ); + randomNoClientAuthPortRange = randomNoClientAuthPort + "-" + (randomNoClientAuthPort + NUMBER_OF_CLIENT_PORTS); localAddress = InetAddress.getLoopbackAddress(); } @@ -60,9 +71,6 @@ public static void getRandomPort() { */ @Override protected Settings nodeSettings(int nodeOrdinal, Settings otherSettings) { - String randomClientPortRange = randomClientPort + "-" + (randomClientPort + 100); - String randomNoClientAuthPortRange = randomNoClientAuthPort + "-" + (randomNoClientAuthPort + 100); - Path trustCert; try { trustCert = getDataPath("/org/elasticsearch/xpack/security/transport/ssl/certs/simple/testclient-client-profile.crt");