Fixed #1088 (#1090) * Fixed #1088 Co-authored-by: jansupol <jan.supol@oracle.com> * cap after 1025 attempts * [1082] Rename TCK packages from jakarta.ws.rs.tck to ee.jakarta.tck.ws.rs Co-authored-by: jansupol <jan.supol@oracle.com> Co-authored-by: Santiago Pericasgeertsen <santiago.pericasgeertsen@oracle.com>
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/common/util/JaxrsUtil.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/common/util/JaxrsUtil.java index d3eae1d..0568fc2 100644 --- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/common/util/JaxrsUtil.java +++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/common/util/JaxrsUtil.java
@@ -24,6 +24,7 @@ import java.io.InputStreamReader; import java.io.Reader; import java.lang.reflect.Array; +import java.net.ServerSocket; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Arrays; @@ -34,6 +35,17 @@ public abstract class JaxrsUtil { + public static final int unprivilegedPort() throws IOException { + for (int i = 0; i < 1025; i++) { + try (final ServerSocket serverSocket = new ServerSocket(0)) { + final int port = serverSocket.getLocalPort(); + if (port > 1024) + return port; + } + } + throw new IOException("No free unprivileged port"); + } + public static final// String readFromStream(InputStream stream) throws IOException { InputStreamReader isr = new InputStreamReader(stream);
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/sebootstrap/SeBootstrapIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/sebootstrap/SeBootstrapIT.java index 29c70bd..c62736b 100644 --- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/sebootstrap/SeBootstrapIT.java +++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/sebootstrap/SeBootstrapIT.java
@@ -17,12 +17,14 @@ package ee.jakarta.tck.ws.rs.sebootstrap; import static java.util.concurrent.TimeUnit.HOURS; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; +import static ee.jakarta.tck.ws.rs.common.util.JaxrsUtil.unprivilegedPort; + import java.io.IOException; -import java.net.ServerSocket; import java.util.Collections; import java.util.Optional; import java.util.Set; @@ -369,9 +371,7 @@ }; private static final int someFreeIpPort() throws IOException { - try (final ServerSocket serverSocket = new ServerSocket(0)) { - return serverSocket.getLocalPort(); - } + return unprivilegedPort(); } private static final int mockInt() {
diff --git a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/jaxrs31/spec/extensions/JAXRSClientIT.java b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/jaxrs31/spec/extensions/JAXRSClientIT.java index 1626935..15b0f9b 100644 --- a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/jaxrs31/spec/extensions/JAXRSClientIT.java +++ b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/jaxrs31/spec/extensions/JAXRSClientIT.java
@@ -21,6 +21,8 @@ import jakarta.ws.rs.core.Feature; import jakarta.ws.rs.core.Response; import ee.jakarta.tck.ws.rs.common.client.JaxrsCommonClient; +import ee.jakarta.tck.ws.rs.common.client.JdkLoggingFilter; +import ee.jakarta.tck.ws.rs.jaxrs21.spec.completionstage.CompletionStageResource; import ee.jakarta.tck.ws.rs.lib.util.TestUtil; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit5.ArquillianExtension;
diff --git a/jaxrs-tck/src/test/java/jakarta/ws/rs/tck/common/util/JaxrsUtilTest.java b/jaxrs-tck/src/test/java/jakarta/ws/rs/tck/common/util/JaxrsUtilTest.java new file mode 100644 index 0000000..8129aa3 --- /dev/null +++ b/jaxrs-tck/src/test/java/jakarta/ws/rs/tck/common/util/JaxrsUtilTest.java
@@ -0,0 +1,40 @@ +/* + * Copyright (c) 2022 Markus Karg. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ + +package ee.jakarta.tck.ws.rs.common.util; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.is; + +import static ee.jakarta.tck.ws.rs.common.util.JaxrsUtil.unprivilegedPort; + +import java.io.IOException; + +import org.junit.jupiter.api.Test; + +final class JaxrsUtilTest { + + @Test + final void shouldReturnPortLarger1024() throws IOException { + // when + final int chosenPort = unprivilegedPort(); + + // then + assertThat(chosenPort, is(greaterThan(1024))); + } + +}