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)));
+ }
+
+}