diff --git a/test/jdk/com/sun/net/httpserver/BasicAuthenticatorRealm.java b/test/jdk/com/sun/net/httpserver/BasicAuthenticatorRealm.java index 06248e950a5..85e4f93b5c9 100644 --- a/test/jdk/com/sun/net/httpserver/BasicAuthenticatorRealm.java +++ b/test/jdk/com/sun/net/httpserver/BasicAuthenticatorRealm.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,7 +28,7 @@ * with HttpURLConnection and HttpClient * @modules jdk.httpserver * @library /test/lib - * @run testng/othervm BasicAuthenticatorRealm + * @run junit/othervm BasicAuthenticatorRealm */ import com.sun.net.httpserver.BasicAuthenticator; @@ -47,12 +47,20 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse.BodyHandlers; import jdk.test.lib.net.URIBuilder; -import org.testng.annotations.Test; import static java.net.http.HttpClient.Builder.NO_PROXY; import static java.nio.charset.StandardCharsets.UTF_8; -import static org.testng.Assert.assertEquals; +import org.junit.jupiter.api.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + +/** + * The second test @Order(2) must run after the first test because it + * sets a VM wide authenticator and the first test depends on no authenticator + * being set. + */ +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class BasicAuthenticatorRealm { static final String REALM = "U\u00ffU@realm"; // non-ASCII char @@ -61,7 +69,8 @@ public class BasicAuthenticatorRealm { static final InetAddress LOOPBACK_ADDR = InetAddress.getLoopbackAddress(); @Test - public static void testURLConnection() throws Exception { + @Order(1) + public void testURLConnection() throws Exception { var server = HttpServer.create(new InetSocketAddress(LOOPBACK_ADDR, 0), 0); var handler = HttpHandlers.of(200, Headers.of(), ""); var context = server.createContext("/test", handler); @@ -73,15 +82,16 @@ public class BasicAuthenticatorRealm { server.start(); var url = uri(server).toURL(); var connection = (HttpURLConnection)url.openConnection(Proxy.NO_PROXY); - assertEquals(connection.getResponseCode(), 401); - assertEquals(connection.getHeaderField("WWW-Authenticate"), EXPECTED_AUTH_HEADER_VALUE); + assertEquals(401, connection.getResponseCode()); + assertEquals(EXPECTED_AUTH_HEADER_VALUE, connection.getHeaderField("WWW-Authenticate")); } finally { server.stop(0); } } @Test - public static void testURLConnectionAuthenticated() throws Exception { + @Order(2) + public void testURLConnectionAuthenticated() throws Exception { var server = HttpServer.create(new InetSocketAddress(LOOPBACK_ADDR, 0), 0); var handler = HttpHandlers.of(200, Headers.of(), "foo"); var context = server.createContext("/test", handler); @@ -94,15 +104,16 @@ public class BasicAuthenticatorRealm { server.start(); var url = uri(server).toURL(); var connection = (HttpURLConnection)url.openConnection(Proxy.NO_PROXY); - assertEquals(connection.getResponseCode(), 200); - assertEquals(connection.getInputStream().readAllBytes(), "foo".getBytes(UTF_8)); + assertEquals(200, connection.getResponseCode()); + Assertions.assertArrayEquals("foo".getBytes(UTF_8), connection.getInputStream().readAllBytes()); } finally { server.stop(0); } } @Test - public static void testHttpClient() throws Exception { + @Order(3) + public void testHttpClient() throws Exception { var server = HttpServer.create(new InetSocketAddress(LOOPBACK_ADDR, 0), 0); var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server)).build(); @@ -115,15 +126,16 @@ public class BasicAuthenticatorRealm { try { server.start(); var response = client.send(request, BodyHandlers.ofString(UTF_8)); - assertEquals(response.statusCode(), 401); - assertEquals(response.headers().firstValue("WWW-Authenticate").orElseThrow(), EXPECTED_AUTH_HEADER_VALUE); + assertEquals(401, response.statusCode()); + assertEquals(EXPECTED_AUTH_HEADER_VALUE, response.headers().firstValue("WWW-Authenticate").orElseThrow()); } finally { server.stop(0); } } @Test - public static void testHttpClientAuthenticated() throws Exception { + @Order(4) + public void testHttpClientAuthenticated() throws Exception { var server = HttpServer.create(new InetSocketAddress(LOOPBACK_ADDR, 0), 0); var request = HttpRequest.newBuilder(uri(server)).build(); var handler = HttpHandlers.of(200, Headers.of(), "foo"); @@ -139,8 +151,8 @@ public class BasicAuthenticatorRealm { try { server.start(); var response = client.send(request, BodyHandlers.ofString(UTF_8)); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), "foo"); + assertEquals(200, response.statusCode()); + assertEquals("foo", response.body()); } finally { server.stop(0); } diff --git a/test/jdk/com/sun/net/httpserver/CreateHttpServerTest.java b/test/jdk/com/sun/net/httpserver/CreateHttpServerTest.java index 370bd75cf34..1fbe4e6f3d1 100644 --- a/test/jdk/com/sun/net/httpserver/CreateHttpServerTest.java +++ b/test/jdk/com/sun/net/httpserver/CreateHttpServerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,17 +25,17 @@ * @test * @bug 8251496 * @summary summary - * @run testng/othervm CreateHttpServerTest + * @run junit/othervm CreateHttpServerTest */ import com.sun.net.httpserver.HttpServer; -import org.testng.annotations.Test; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; -import static org.testng.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; public class CreateHttpServerTest { @Test diff --git a/test/jdk/com/sun/net/httpserver/DateFormatterTest.java b/test/jdk/com/sun/net/httpserver/DateFormatterTest.java index bda3421660c..efcc96d45b0 100644 --- a/test/jdk/com/sun/net/httpserver/DateFormatterTest.java +++ b/test/jdk/com/sun/net/httpserver/DateFormatterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,12 +39,13 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import jdk.test.lib.net.URIBuilder; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; import static java.net.http.HttpResponse.BodyHandlers.ofString; -import static org.testng.Assert.assertTrue; -import static org.testng.Assert.fail; + +import org.junit.jupiter.api.AfterAll; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; /** * @test @@ -53,19 +54,19 @@ import static org.testng.Assert.fail; * @modules java.net.http * @library /test/lib * @build DateFormatterTest - * @run testng/othervm DateFormatterTest + * @run junit/othervm DateFormatterTest */ public class DateFormatterTest { - private HttpServer server; + private static HttpServer server; static URI httpURI; static final Integer ITERATIONS = 10; static String format; static Pattern pattern; - @BeforeTest - public void setUp() throws IOException, URISyntaxException { + @BeforeAll + public static void setUp() throws IOException, URISyntaxException { String days = "(Mon|Tue|Wed|Thu|Fri|Sat|Sun)(,)"; String dayNo = "(\\s\\d\\d\\s)"; String month = "(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"; @@ -85,8 +86,8 @@ public class DateFormatterTest { server.start(); } - @AfterTest - public void cleanUp() { + @AfterAll + public static void cleanUp() { server.stop(0); } diff --git a/test/jdk/com/sun/net/httpserver/FilterTest.java b/test/jdk/com/sun/net/httpserver/FilterTest.java index 45c7ef21e8d..a5c90d2026e 100644 --- a/test/jdk/com/sun/net/httpserver/FilterTest.java +++ b/test/jdk/com/sun/net/httpserver/FilterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,7 +25,7 @@ * @test * @bug 8267262 * @summary Tests for Filter static factory methods - * @run testng/othervm FilterTest + * @run junit/othervm FilterTest */ import java.io.IOException; @@ -49,11 +49,13 @@ import com.sun.net.httpserver.Filter; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; -import org.testng.annotations.BeforeTest; import static java.net.http.HttpClient.Builder.NO_PROXY; -import static org.testng.Assert.*; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class FilterTest { @@ -64,8 +66,8 @@ public class FilterTest { static final boolean ENABLE_LOGGING = true; static final Logger logger = Logger.getLogger("com.sun.net.httpserver"); - @BeforeTest - public void setup() { + @BeforeAll + public static void setup() { if (ENABLE_LOGGING) { ConsoleHandler ch = new ConsoleHandler(); logger.setLevel(Level.ALL); @@ -76,14 +78,14 @@ public class FilterTest { @Test public void testNull() { - expectThrows(NPE, () -> Filter.beforeHandler(null, e -> e.getResponseHeaders().set("X-Foo", "Bar"))); - expectThrows(NPE, () -> Filter.beforeHandler("Some description", null)); + assertThrows(NPE, () -> Filter.beforeHandler(null, e -> e.getResponseHeaders().set("X-Foo", "Bar"))); + assertThrows(NPE, () -> Filter.beforeHandler("Some description", null)); - expectThrows(NPE, () -> Filter.afterHandler("Some description", null)); - expectThrows(NPE, () -> Filter.afterHandler(null, HttpExchange::getResponseCode)); + assertThrows(NPE, () -> Filter.afterHandler("Some description", null)); + assertThrows(NPE, () -> Filter.afterHandler(null, HttpExchange::getResponseCode)); - expectThrows(NPE, () -> Filter.adaptRequest("Some description", null)); - expectThrows(NPE, () -> Filter.adaptRequest(null, r -> r.with("Foo", List.of("Bar")))); + assertThrows(NPE, () -> Filter.adaptRequest("Some description", null)); + assertThrows(NPE, () -> Filter.adaptRequest(null, r -> r.with("Foo", List.of("Bar")))); } @Test @@ -91,16 +93,15 @@ public class FilterTest { var desc = "Some description"; var beforeFilter = Filter.beforeHandler(desc, HttpExchange::getRequestBody); - assertEquals(desc, beforeFilter.description()); + assertEquals(beforeFilter.description(), desc); var afterFilter = Filter.afterHandler(desc, HttpExchange::getResponseCode); - assertEquals(desc, afterFilter.description()); + assertEquals(afterFilter.description(), desc); var adaptFilter = Filter.adaptRequest(desc, r -> r.with("Foo", List.of("Bar"))); - assertEquals(desc, adaptFilter.description()); + assertEquals(adaptFilter.description(), desc); } - @DataProvider public static Object[][] throwingFilters() { return new Object[][] { {Filter.beforeHandler("before RE", e -> { throw new RuntimeException(); }), IOE}, @@ -111,7 +112,8 @@ public class FilterTest { }; } - @Test(dataProvider = "throwingFilters") + @ParameterizedTest + @MethodSource("throwingFilters") public void testException(Filter filter, Class exception) throws Exception { @@ -123,11 +125,11 @@ public class FilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); if (exception != null) { - expectThrows(exception, () -> client.send(request, HttpResponse.BodyHandlers.ofString())); + assertThrows(exception, () -> client.send(request, HttpResponse.BodyHandlers.ofString())); } else { var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), "hello world"); + assertEquals(200, response.statusCode()); + assertEquals("hello world", response.body()); } } finally { server.stop(0); @@ -146,9 +148,9 @@ public class FilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().map().size(), 3); - assertEquals(response.headers().firstValue("x-foo").orElseThrow(), "bar"); + assertEquals(200, response.statusCode()); + assertEquals(3, response.headers().map().size()); + assertEquals("bar", response.headers().firstValue("x-foo").orElseThrow()); } finally { server.stop(0); } @@ -170,9 +172,9 @@ public class FilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().map().size(), 3); - assertEquals(response.headers().firstValue("x-foo").orElseThrow(), "barbar"); + assertEquals(200, response.statusCode()); + assertEquals(3, response.headers().map().size()); + assertEquals("barbar", response.headers().firstValue("x-foo").orElseThrow()); } finally { server.stop(0); } @@ -202,9 +204,9 @@ public class FilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().map().size(), 3); - assertEquals(response.headers().firstValue("x-foo").orElseThrow(), "bar"); + assertEquals(200, response.statusCode()); + assertEquals(3, response.headers().map().size()); + assertEquals("bar", response.headers().firstValue("x-foo").orElseThrow()); } finally { server.stop(0); } @@ -223,8 +225,8 @@ public class FilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.statusCode(), (int)respCode.get()); + assertEquals(200, response.statusCode()); + assertEquals((int)respCode.get(), response.statusCode()); } finally { server.stop(0); } @@ -248,8 +250,8 @@ public class FilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(attr.get(), value); + assertEquals(200, response.statusCode()); + assertEquals(value, attr.get()); } finally { server.stop(0); } @@ -280,8 +282,8 @@ public class FilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.statusCode(), (int)respCode.get()); + assertEquals(200, response.statusCode()); + assertEquals((int)respCode.get(), response.statusCode()); } finally { server.stop(0); } @@ -304,10 +306,10 @@ public class FilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().map().size(), 3); - assertEquals(response.headers().firstValue("x-foo").orElseThrow(), "bar"); - assertEquals(response.statusCode(), (int)respCode.get()); + assertEquals(200, response.statusCode()); + assertEquals(3, response.headers().map().size()); + assertEquals("bar", response.headers().firstValue("x-foo").orElseThrow()); + assertEquals((int)respCode.get(), response.statusCode()); } finally { server.stop(0); } @@ -326,8 +328,8 @@ public class FilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "foo/bar")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(inspectedURI.get(), URI.create("/foo/bar")); + assertEquals(200, response.statusCode()); + assertEquals(URI.create("/foo/bar"), inspectedURI.get()); } finally { server.stop(0); } @@ -348,9 +350,9 @@ public class FilterTest { }); var adaptFilter = Filter.adaptRequest("Add x-foo request header", r -> { // Confirm request state is unchanged - assertEquals(r.getRequestHeaders(), originalExchange.getRequestHeaders()); - assertEquals(r.getRequestURI(), originalExchange.getRequestURI()); - assertEquals(r.getRequestMethod(), originalExchange.getRequestMethod()); + assertEquals(originalExchange.getRequestHeaders(), r.getRequestHeaders()); + assertEquals(originalExchange.getRequestURI(), r.getRequestURI()); + assertEquals(originalExchange.getRequestMethod(), r.getRequestMethod()); return r.with("x-foo", List.of("bar")); }); var server = HttpServer.create(new InetSocketAddress(LOOPBACK_ADDR,0), 10); @@ -362,8 +364,8 @@ public class FilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), "bar"); + assertEquals(200, response.statusCode()); + assertEquals("bar", response.body()); } finally { server.stop(0); } @@ -398,22 +400,22 @@ public class FilterTest { static class CompareStateAndEchoHandler implements HttpHandler { @Override public void handle(HttpExchange exchange) throws IOException { - assertEquals(exchange.getLocalAddress(), originalExchange.getLocalAddress()); - assertEquals(exchange.getRemoteAddress(), originalExchange.getRemoteAddress()); - assertEquals(exchange.getProtocol(), originalExchange.getProtocol()); - assertEquals(exchange.getPrincipal(), originalExchange.getPrincipal()); - assertEquals(exchange.getHttpContext(), originalExchange.getHttpContext()); - assertEquals(exchange.getRequestMethod(), originalExchange.getRequestMethod()); - assertEquals(exchange.getRequestURI(), originalExchange.getRequestURI()); - assertEquals(exchange.getRequestBody(), originalExchange.getRequestBody()); - assertEquals(exchange.getResponseHeaders(), originalExchange.getResponseHeaders()); - assertEquals(exchange.getResponseCode(), originalExchange.getResponseCode()); - assertEquals(exchange.getResponseBody(), originalExchange.getResponseBody()); - assertEquals(exchange.getAttribute("foo"), originalExchange.getAttribute("foo")); + assertEquals(originalExchange.getLocalAddress(), exchange.getLocalAddress()); + assertEquals(originalExchange.getRemoteAddress(), exchange.getRemoteAddress()); + assertEquals(originalExchange.getProtocol(), exchange.getProtocol()); + assertEquals(originalExchange.getPrincipal(), exchange.getPrincipal()); + assertEquals(originalExchange.getHttpContext(), exchange.getHttpContext()); + assertEquals(originalExchange.getRequestMethod(), exchange.getRequestMethod()); + assertEquals(originalExchange.getRequestURI(), exchange.getRequestURI()); + assertEquals(originalExchange.getRequestBody(), exchange.getRequestBody()); + assertEquals(originalExchange.getResponseHeaders(), exchange.getResponseHeaders()); + assertEquals(originalExchange.getResponseCode(), exchange.getResponseCode()); + assertEquals(originalExchange.getResponseBody(), exchange.getResponseBody()); + assertEquals(originalExchange.getAttribute("foo"), exchange.getAttribute("foo")); assertFalse(exchange.getRequestHeaders().equals(originalExchange.getRequestHeaders())); exchange.setAttribute("foo", "barbar"); - assertEquals(exchange.getAttribute("foo"), originalExchange.getAttribute("foo")); + assertEquals(originalExchange.getAttribute("foo"), exchange.getAttribute("foo")); try (InputStream is = exchange.getRequestBody(); OutputStream os = exchange.getResponseBody()) { diff --git a/test/jdk/com/sun/net/httpserver/HeadersTest.java b/test/jdk/com/sun/net/httpserver/HeadersTest.java index c37aba0424f..2c9ff93e179 100644 --- a/test/jdk/com/sun/net/httpserver/HeadersTest.java +++ b/test/jdk/com/sun/net/httpserver/HeadersTest.java @@ -29,7 +29,7 @@ * jdk.httpserver/sun.net.httpserver:+open * @library /test/lib * @build jdk.test.lib.net.URIBuilder - * @run testng/othervm HeadersTest + * @run junit/othervm HeadersTest */ import java.io.IOException; @@ -57,18 +57,20 @@ import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; import jdk.test.lib.net.URIBuilder; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import sun.net.httpserver.UnmodifiableHeaders; import static java.net.http.HttpClient.Builder.NO_PROXY; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotEquals; -import static org.testng.Assert.assertNotSame; -import static org.testng.Assert.assertSame; -import static org.testng.Assert.assertThrows; -import static org.testng.Assert.assertTrue; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotSame; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class HeadersTest { @@ -77,13 +79,13 @@ public class HeadersTest { static final Class NPE = NullPointerException.class; @Test - public static void testDefaultConstructor() { + public void testDefaultConstructor() { var headers = new Headers(); assertTrue(headers.isEmpty()); } @Test - public static void testNull() { + public void testNull() { final Headers h = new Headers(); h.put("Foo", List.of("Bar")); @@ -157,8 +159,7 @@ public class HeadersTest { assertThrows(NPE, () -> h.set("Foo", null)); } - @DataProvider - public Object[][] responseHeaders() { + public static Object[][] responseHeaders() { final var listWithNull = new LinkedList(); listWithNull.add(null); return new Object[][] { @@ -172,7 +173,8 @@ public class HeadersTest { * Confirms HttpExchange::sendResponseHeaders throws NPE if response headers * contain a null key or value. */ - @Test(dataProvider = "responseHeaders") + @ParameterizedTest + @MethodSource("responseHeaders") public void testNullResponseHeaders(String headerKey, List headerVal) throws Exception { var handler = new Handler(headerKey, headerVal); @@ -183,7 +185,7 @@ public class HeadersTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); assertThrows(IOE, () -> client.send(request, HttpResponse.BodyHandlers.ofString())); - assertEquals(throwable.get().getClass(), NPE); + assertEquals(NPE, throwable.get().getClass()); assertTrue(Arrays.stream(throwable.get().getStackTrace()) .anyMatch(e -> e.getClassName().equals("sun.net.httpserver.HttpExchangeImpl") || e.getMethodName().equals("sendResponseHeaders"))); @@ -240,7 +242,6 @@ public class HeadersTest { } } - @DataProvider public static Object[][] headerPairs() { final var h1 = new Headers(); final var h2 = new Headers(); @@ -259,16 +260,16 @@ public class HeadersTest { .toArray(Object[][]::new); } - @Test(dataProvider = "headerPairs") - public static void testEqualsAndHashCode(Headers h1, Headers h2) { - // avoid testng's asserts(Map, Map) as they don't call Headers::equals + @ParameterizedTest + @MethodSource("headerPairs") + public void testEqualsAndHashCode(Headers h1, Headers h2) { assertTrue(h1.equals(h2), "Headers differ"); - assertEquals(h1.hashCode(), h2.hashCode(), "hashCode differ for " + assertEquals(h2.hashCode(), h1.hashCode(), "hashCode differ for " + List.of(h1, h2)); } @Test - public static void testEqualsMap() { + public void testEqualsMap() { final var h = new Headers(); final var m = new HashMap>(); assertTrue(h.equals(m)); @@ -277,14 +278,14 @@ public class HeadersTest { } @Test - public static void testToString() { + public void testToString() { final var h = new Headers(); h.put("Accept-Encoding", List.of("gzip, deflate")); assertTrue(h.toString().equals("Headers { {Accept-encoding=[gzip, deflate]} }")); } @Test - public static void testPutAll() { + public void testPutAll() { final var h0 = new Headers(); final var map = new HashMap>(); map.put("a", null); @@ -311,7 +312,7 @@ public class HeadersTest { } @Test - public static void testReplaceAll() { + public void testReplaceAll() { final var h1 = new Headers(); h1.put("a", List.of("1")); h1.put("b", List.of("2")); @@ -331,7 +332,7 @@ public class HeadersTest { } @Test - public static void test1ArgConstructorNull() { + public void test1ArgConstructorNull() { assertThrows(NPE, () -> new Headers(null)); { final var m = new HashMap>(); @@ -353,35 +354,35 @@ public class HeadersTest { } @Test - public static void test1ArgConstructor() { + public void test1ArgConstructor() { { var h = new Headers(new Headers()); assertTrue(h.isEmpty()); } { var h = new Headers(Map.of("Foo", List.of("Bar"))); - assertEquals(h.get("Foo"), List.of("Bar")); - assertEquals(h.size(), 1); + assertEquals(List.of("Bar"), h.get("Foo")); + assertEquals(1, h.size()); } { var h1 = new Headers(new UnmodifiableHeaders(new Headers())); assertTrue(h1.isEmpty()); h1.put("Foo", List.of("Bar")); // modifiable - assertEquals(h1.get("Foo"), List.of("Bar")); - assertEquals(h1.size(), 1); + assertEquals(List.of("Bar"), h1.get("Foo")); + assertEquals(1, h1.size()); var h2 = new Headers(h1); - assertEquals(h2.get("Foo"), List.of("Bar")); - assertEquals(h2.size(), 1); + assertEquals(List.of("Bar"), h2.get("Foo")); + assertEquals(1, h2.size()); - assertEquals(h1, h2); + assertEquals(h2, h1); h1.set("Foo", "Barbar"); - assertNotEquals(h1, h2); + assertNotEquals(h2, h1); } } @Test - public static void testMutableHeaders() { + public void testMutableHeaders() { { var h = new Headers(); h.add("Foo", "Bar"); @@ -400,7 +401,7 @@ public class HeadersTest { } @Test - public static void testOfNull() { + public void testOfNull() { assertThrows(NPE, () -> Headers.of((String[])null)); assertThrows(NPE, () -> Headers.of(null, "Bar")); assertThrows(NPE, () -> Headers.of("Foo", null)); @@ -426,41 +427,40 @@ public class HeadersTest { } @Test - public static void testOf() { + public void testOf() { final var h = Headers.of("a", "1", "b", "2"); - assertEquals(h.size(), 2); + assertEquals(2, h.size()); List.of("a", "b").forEach(n -> assertTrue(h.containsKey(n))); List.of("1", "2").forEach(v -> assertTrue(h.containsValue(List.of(v)))); } @Test - public static void testOfEmpty() { + public void testOfEmpty() { for (var h : List.of(Headers.of(), Headers.of(new String[] { }))) { - assertEquals(h.size(), 0); + assertEquals(0, h.size()); assertTrue(h.isEmpty()); } } @Test - public static void testOfNumberOfElements() { + public void testOfNumberOfElements() { assertThrows(IAE, () -> Headers.of("a")); assertThrows(IAE, () -> Headers.of("a", "1", "b")); } @Test - public static void testOfMultipleValues() { + public void testOfMultipleValues() { final var h = Headers.of("a", "1", "b", "1", "b", "2", "b", "3"); - assertEquals(h.size(), 2); + assertEquals(2, h.size()); List.of("a", "b").forEach(n -> assertTrue(h.containsKey(n))); List.of(List.of("1"), List.of("1", "2", "3")).forEach(v -> assertTrue(h.containsValue(v))); } @Test - public static void testNormalizeOnNull() { + public void testNormalizeOnNull() { assertThrows(NullPointerException.class, () -> normalize(null)); } - @DataProvider public static Object[][] illegalKeys() { var illegalChars = List.of('\r', '\n'); var illegalStrings = Stream @@ -478,12 +478,12 @@ public class HeadersTest { .toArray(Object[][]::new); } - @Test(dataProvider = "illegalKeys") - public static void testNormalizeOnIllegalKeys(String illegalKey) { + @ParameterizedTest + @MethodSource("illegalKeys") + public void testNormalizeOnIllegalKeys(String illegalKey) { assertThrows(IllegalArgumentException.class, () -> normalize(illegalKey)); } - @DataProvider public static Object[][] normalizedKeys() { return new Object[][]{ // Empty string @@ -501,13 +501,13 @@ public class HeadersTest { }; } - @Test(dataProvider = "normalizedKeys") - public static void testNormalizeOnNormalizedKeys(String normalizedKey) { + @ParameterizedTest + @MethodSource("normalizedKeys") + public void testNormalizeOnNormalizedKeys(String normalizedKey) { // Verify that the fast-path is taken assertSame(normalize(normalizedKey), normalizedKey); } - @DataProvider public static Object[][] notNormalizedKeys() { return new Object[][]{ {"a"}, @@ -517,14 +517,15 @@ public class HeadersTest { }; } - @Test(dataProvider = "notNormalizedKeys") - public static void testNormalizeOnNotNormalizedKeys(String notNormalizedKey) { + @ParameterizedTest + @MethodSource("notNormalizedKeys") + public void testNormalizeOnNotNormalizedKeys(String notNormalizedKey) { var normalizedKey = normalize(notNormalizedKey); // Verify that the fast-path is *not* taken assertNotSame(normalizedKey, notNormalizedKey); // Verify the result var expectedNormalizedKey = normalizedKey.substring(0, 1).toUpperCase() + normalizedKey.substring(1); - assertEquals(normalizedKey, expectedNormalizedKey); + assertEquals(expectedNormalizedKey, normalizedKey); } private static String normalize(String key) { diff --git a/test/jdk/com/sun/net/httpserver/HttpContextTest.java b/test/jdk/com/sun/net/httpserver/HttpContextTest.java index aa50f1d9757..82098e4e993 100644 --- a/test/jdk/com/sun/net/httpserver/HttpContextTest.java +++ b/test/jdk/com/sun/net/httpserver/HttpContextTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,7 @@ * @bug 8269692 * @summary HttpContext::createContext should throw IllegalArgumentException * if context already exists - * @run testng/othervm HttpContextTest + * @run junit/othervm HttpContextTest */ import java.io.IOException; @@ -34,22 +34,23 @@ import com.sun.net.httpserver.HttpContext; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; -import org.testng.annotations.Test; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertThrows; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import org.junit.jupiter.api.Test; public class HttpContextTest { static final Class IAE = IllegalArgumentException.class; @Test - public static void test() throws IOException { + public void test() throws IOException { final var server = HttpServer.create(null, 0); final var path = "/foo/"; assertThrows(IAE, () -> server.removeContext(path)); HttpContext context = server.createContext(path); - assertEquals(context.getPath(), path); + assertEquals(path, context.getPath()); assertThrows(IAE, () -> server.createContext(path)); assertThrows(IAE, () -> server.createContext(path, new Handler())); @@ -60,7 +61,7 @@ public class HttpContextTest { assertThrows(IAE, () -> server.removeContext(path)); context = server.createContext(path, new Handler()); - assertEquals(context.getPath(), path); + assertEquals(path, context.getPath()); assertThrows(IAE, () -> server.createContext(path)); assertThrows(IAE, () -> server.createContext(path, new Handler())); server.removeContext(path); @@ -72,7 +73,7 @@ public class HttpContextTest { * shares the prefix of an existing context. */ @Test - public static void testSubcontext() throws IOException { + public void testSubcontext() throws IOException { final var server = HttpServer.create(null, 0); server.createContext("/foo/bar/"); server.createContext("/foo/"); diff --git a/test/jdk/com/sun/net/httpserver/HttpPrincipalTest.java b/test/jdk/com/sun/net/httpserver/HttpPrincipalTest.java index 30cf0c4490c..513a79feb60 100644 --- a/test/jdk/com/sun/net/httpserver/HttpPrincipalTest.java +++ b/test/jdk/com/sun/net/httpserver/HttpPrincipalTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,13 +25,13 @@ * @test * @bug 8251496 * @summary Tests for methods in HttpPrincipal - * @run testng/othervm HttpPrincipalTest + * @run junit/othervm HttpPrincipalTest */ import com.sun.net.httpserver.HttpPrincipal; -import org.testng.annotations.Test; -import static org.testng.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; public class HttpPrincipalTest { @@ -39,10 +39,10 @@ public class HttpPrincipalTest { public void testGetters() { var principal = new HttpPrincipal("test", "123"); - assertEquals(principal.getUsername(), "test"); - assertEquals(principal.getRealm(), "123"); - assertEquals(principal.getName(), "123:test"); - assertEquals(principal.toString(), principal.getName()); - assertEquals(("test"+"123").hashCode(), principal.hashCode()); + assertEquals("test", principal.getUsername()); + assertEquals("123", principal.getRealm()); + assertEquals("123:test", principal.getName()); + assertEquals(principal.getName(), principal.toString()); + assertEquals(principal.hashCode(), ("test"+"123").hashCode()); } } diff --git a/test/jdk/com/sun/net/httpserver/HttpServerProviderTest.java b/test/jdk/com/sun/net/httpserver/HttpServerProviderTest.java index 2912cdd40e1..db528c19488 100644 --- a/test/jdk/com/sun/net/httpserver/HttpServerProviderTest.java +++ b/test/jdk/com/sun/net/httpserver/HttpServerProviderTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,19 +25,19 @@ * @test * @bug 8270286 * @summary Test for HttpServerProvider::loadProviderFromProperty - * @run testng/othervm + * @run junit/othervm * -Dcom.sun.net.httpserver.HttpServerProvider=HttpServerProviderTest$ProviderP * HttpServerProviderTest - * @run testng/othervm + * @run junit/othervm * -Dcom.sun.net.httpserver.HttpServerProvider=HttpServerProviderTest$ProviderPNPC * HttpServerProviderTest - * @run testng/othervm + * @run junit/othervm * -Dcom.sun.net.httpserver.HttpServerProvider=HttpServerProviderTest$ProviderNP * HttpServerProviderTest - * @run testng/othervm + * @run junit/othervm * -Dcom.sun.net.httpserver.HttpServerProvider=HttpServerProviderTest$ProviderT * HttpServerProviderTest - * @run testng/othervm + * @run junit/othervm * -Dcom.sun.net.httpserver.HttpServerProvider=DoesNotExist * HttpServerProviderTest */ @@ -48,10 +48,11 @@ import java.util.ServiceConfigurationError; import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.HttpsServer; import com.sun.net.httpserver.spi.HttpServerProvider; -import org.testng.annotations.Test; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.expectThrows; + +import org.junit.jupiter.api.Assertions; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import org.junit.jupiter.api.Test; public class HttpServerProviderTest { public final static String PROPERTY_KEY = "com.sun.net.httpserver.HttpServerProvider"; @@ -70,7 +71,7 @@ public class HttpServerProviderTest { private void testPublic() throws Exception { var n = ProviderP.class.getName(); - assertEquals(System.getProperty(PROPERTY_KEY), n); + assertEquals(n, System.getProperty(PROPERTY_KEY)); var p = HttpServerProvider.provider(); assertNull(p.createHttpServer(null, 0)); @@ -79,39 +80,39 @@ public class HttpServerProviderTest { private void testPublicNonPublicConstructor() { var n = ProviderPNPC.class.getName(); - assertEquals(System.getProperty(PROPERTY_KEY), n); + assertEquals(n, System.getProperty(PROPERTY_KEY)); - var e = expectThrows(ServiceConfigurationError.class, HttpServerProvider::provider); - assertEquals(e.getClass(), ServiceConfigurationError.class); - assertEquals(e.getCause().getClass(), IllegalAccessException.class); + var e = Assertions.assertThrows(ServiceConfigurationError.class, HttpServerProvider::provider); + assertEquals(ServiceConfigurationError.class, e.getClass()); + assertEquals(IllegalAccessException.class, e.getCause().getClass()); } private void testNonPublic() { var n = ProviderNP.class.getName(); - assertEquals(System.getProperty(PROPERTY_KEY), n); + assertEquals(n, System.getProperty(PROPERTY_KEY)); - var e = expectThrows(ServiceConfigurationError.class, HttpServerProvider::provider); - assertEquals(e.getClass(), ServiceConfigurationError.class); - assertEquals(e.getCause().getClass(), IllegalAccessException.class); + var e = Assertions.assertThrows(ServiceConfigurationError.class, HttpServerProvider::provider); + assertEquals(ServiceConfigurationError.class, e.getClass()); + assertEquals(IllegalAccessException.class, e.getCause().getClass()); } private void testThrowingConstructor() { var cn = ProviderT.class.getName(); - assertEquals(System.getProperty(PROPERTY_KEY), cn); + assertEquals(cn, System.getProperty(PROPERTY_KEY)); - var e = expectThrows(ServiceConfigurationError.class, HttpServerProvider::provider); - assertEquals(e.getClass(), ServiceConfigurationError.class); - assertEquals(e.getCause().getClass(), InvocationTargetException.class); - assertEquals(e.getCause().getCause().getMessage(), "throwing constructor"); + var e = Assertions.assertThrows(ServiceConfigurationError.class, HttpServerProvider::provider); + assertEquals(ServiceConfigurationError.class, e.getClass()); + assertEquals(InvocationTargetException.class, e.getCause().getClass()); + assertEquals("throwing constructor", e.getCause().getCause().getMessage()); } private void testBadData() { var cn = "DoesNotExist"; - assertEquals(System.getProperty(PROPERTY_KEY), cn); + assertEquals(cn, System.getProperty(PROPERTY_KEY)); - var e = expectThrows(ServiceConfigurationError.class, HttpServerProvider::provider); - assertEquals(e.getClass(), ServiceConfigurationError.class); - assertEquals(e.getCause().getClass(), ClassNotFoundException.class); + var e = Assertions.assertThrows(ServiceConfigurationError.class, HttpServerProvider::provider); + assertEquals(ServiceConfigurationError.class, e.getClass()); + assertEquals(ClassNotFoundException.class, e.getCause().getClass()); } /** diff --git a/test/jdk/com/sun/net/httpserver/InputNotRead.java b/test/jdk/com/sun/net/httpserver/InputNotRead.java index 3d5bfad83c3..ff877dcaa7a 100644 --- a/test/jdk/com/sun/net/httpserver/InputNotRead.java +++ b/test/jdk/com/sun/net/httpserver/InputNotRead.java @@ -28,8 +28,8 @@ * read the request body and sends back a reply with no content, or when * the client closes its outputstream while the server tries to drains * its content. - * @run testng/othervm InputNotRead - * @run testng/othervm -Djava.net.preferIPv6Addresses=true InputNotRead + * @run junit/othervm InputNotRead + * @run junit/othervm -Djava.net.preferIPv6Addresses=true InputNotRead */ import java.io.BufferedReader; @@ -51,11 +51,12 @@ import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; -import org.testng.annotations.Test; import static java.nio.charset.StandardCharsets.*; import static com.sun.net.httpserver.HttpExchange.RSPBODY_EMPTY; +import org.junit.jupiter.api.Test; + public class InputNotRead { private static final int msgCode = 200; diff --git a/test/jdk/com/sun/net/httpserver/UnmodifiableHeadersTest.java b/test/jdk/com/sun/net/httpserver/UnmodifiableHeadersTest.java index 84fd5aceaa7..196cf36f010 100644 --- a/test/jdk/com/sun/net/httpserver/UnmodifiableHeadersTest.java +++ b/test/jdk/com/sun/net/httpserver/UnmodifiableHeadersTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,7 @@ * @bug 8251496 8333590 * @summary Test that UnmodifiableHeaders is in fact immutable * @modules jdk.httpserver/sun.net.httpserver:+open - * @run testng/othervm UnmodifiableHeadersTest + * @run junit/othervm UnmodifiableHeadersTest */ import java.io.InputStream; @@ -36,73 +36,75 @@ import java.net.URI; import java.util.AbstractMap; import java.util.List; import java.util.Map; +import java.util.stream.Stream; import com.sun.net.httpserver.Headers; import com.sun.net.httpserver.HttpContext; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpPrincipal; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import sun.net.httpserver.UnmodifiableHeaders; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertThrows; -import static org.testng.Assert.assertTrue; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class UnmodifiableHeadersTest { @Test - public static void testEquality() { + public void testEquality() { var headers = new Headers(); var unmodifiableHeaders1 = new UnmodifiableHeaders(headers); - assertEquals(unmodifiableHeaders1, headers); - assertEquals(unmodifiableHeaders1.hashCode(), headers.hashCode()); - assertEquals(unmodifiableHeaders1.get("Foo"), headers.get("Foo")); + assertEquals(headers, unmodifiableHeaders1); + assertEquals(headers.hashCode(), unmodifiableHeaders1.hashCode()); + assertEquals(headers.get("Foo"), unmodifiableHeaders1.get("Foo")); headers.add("Foo", "Bar"); var unmodifiableHeaders2 = new UnmodifiableHeaders(headers); - assertEquals(unmodifiableHeaders2, headers); - assertEquals(unmodifiableHeaders2.hashCode(), headers.hashCode()); - assertEquals(unmodifiableHeaders2.get("Foo"), headers.get("Foo")); + assertEquals(headers, unmodifiableHeaders2); + assertEquals(headers.hashCode(), unmodifiableHeaders2.hashCode()); + assertEquals(headers.get("Foo"), unmodifiableHeaders2.get("Foo")); } - @DataProvider - public Object[][] headers() { + public static Stream headers() { var headers = new Headers(); headers.add("Foo", "Bar"); var exchange = new TestHttpExchange(headers); - return new Object[][] { - { exchange.getRequestHeaders() }, - { Headers.of("Foo", "Bar") }, - { Headers.of(Map.of("Foo", List.of("Bar"))) }, - }; + return Stream.of(exchange.getRequestHeaders(), + Headers.of("Foo", "Bar"), + Headers.of(Map.of("Foo", List.of("Bar")))); } - @Test(dataProvider = "headers") - public static void testUnmodifiableHeaders(Headers headers) { + @ParameterizedTest + @MethodSource("headers") + public void testUnmodifiableHeaders(Headers headers) { assertUnsupportedOperation(headers); assertUnmodifiableCollection(headers); assertUnmodifiableList(headers); } - @DataProvider - public Object[][] toStringHeaders() { + public static Stream toStringHeaders() { final Headers headers = new Headers(); headers.add("hello", "World"); - return new Object[][] { - { headers }, - { Headers.of("abc", "XYZ") }, - { Headers.of(Map.of("foo", List.of("Bar"))) }, - { Headers.of(Map.of("Hello", List.of())) }, - { Headers.of(Map.of("one", List.of("two", "THREE"))) }, - }; + return Stream.of( + headers, + Headers.of("abc", "XYZ"), + Headers.of(Map.of("foo", List.of("Bar"))), + Headers.of(Map.of("Hello", List.of())), + Headers.of(Map.of("one", List.of("two", "THREE"))) + ); } /* * Verify that the String returned by Headers.toString() contains the expected * key/value(s) */ - @Test(dataProvider = "toStringHeaders") + @ParameterizedTest + @MethodSource("toStringHeaders") public void testToString(final Headers headers) { final Headers copy = Headers.of(headers); assertNotNull(copy, "Headers.of() returned null"); diff --git a/test/jdk/com/sun/net/httpserver/bugs/BasicAuthenticatorExceptionCheck.java b/test/jdk/com/sun/net/httpserver/bugs/BasicAuthenticatorExceptionCheck.java index a07386be746..b4a4dfda041 100644 --- a/test/jdk/com/sun/net/httpserver/bugs/BasicAuthenticatorExceptionCheck.java +++ b/test/jdk/com/sun/net/httpserver/bugs/BasicAuthenticatorExceptionCheck.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,18 +27,20 @@ * @library /test/lib * @summary Ensure that correct exceptions are being thrown in * BasicAuthenticator constructor - * @run testng BasicAuthenticatorExceptionCheck + * @run junit BasicAuthenticatorExceptionCheck */ import java.nio.charset.Charset; import com.sun.net.httpserver.BasicAuthenticator; -import org.testng.annotations.Test; -import static org.testng.Assert.expectThrows; -import static org.testng.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; + import static java.nio.charset.StandardCharsets.UTF_8; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + public class BasicAuthenticatorExceptionCheck { static final Class NPE = NullPointerException.class; @@ -62,42 +64,42 @@ public class BasicAuthenticatorExceptionCheck { @Test public void testAuthenticationException() { - Throwable ex = expectThrows(NPE, () -> + Throwable ex = Assertions.assertThrows(NPE, () -> createBasicAuthenticator("/test", null)); System.out.println("Valid realm and Null charset provided - " + "NullPointerException thrown as expected: " + ex); - ex = expectThrows(NPE, () -> + ex = Assertions.assertThrows(NPE, () -> createBasicAuthenticator(null, UTF_8)); System.out.println("Null realm and valid charset provided - " + "NullPointerException thrown as expected: " + ex); - ex = expectThrows(IAE, () -> + ex = Assertions.assertThrows(IAE, () -> createBasicAuthenticator("", UTF_8)); - assertEquals(ex.getMessage(), "realm must not be empty"); + assertEquals("realm must not be empty", ex.getMessage()); System.out.println("Empty string for realm and valid charset provided - " + "IllegalArgumentException thrown as expected: " + ex); - ex = expectThrows(NPE, () -> + ex = Assertions.assertThrows(NPE, () -> createBasicAuthenticator(null)); System.out.println("Null realm provided - " + "NullPointerException thrown as expected: " + ex); - ex = expectThrows(IAE, () -> + ex = Assertions.assertThrows(IAE, () -> createBasicAuthenticator("")); - assertEquals(ex.getMessage(), "realm must not be empty"); + assertEquals("realm must not be empty", ex.getMessage()); System.out.println("Empty string for realm provided - " + "IllegalArgumentException thrown as expected: " + ex); - ex = expectThrows(IAE, () -> + ex = Assertions.assertThrows(IAE, () -> createBasicAuthenticator("\"/test\"")); - assertEquals(ex.getMessage(), "realm invalid: \"/test\""); + assertEquals("realm invalid: \"/test\"", ex.getMessage()); System.out.println("Invalid string for realm provided - " + "IllegalArgumentException thrown as expected: " + ex); - ex = expectThrows(IAE, () -> + ex = Assertions.assertThrows(IAE, () -> createBasicAuthenticator("\"")); - assertEquals(ex.getMessage(), "realm invalid: \""); + assertEquals("realm invalid: \"", ex.getMessage()); System.out.println("Invalid string for realm provided - " + "IllegalArgumentException thrown as expected: " + ex); diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/CommandLineNegativeTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/CommandLineNegativeTest.java index a82b0bf5a6f..818469d00fc 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/CommandLineNegativeTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/CommandLineNegativeTest.java @@ -26,7 +26,7 @@ * @summary Negative tests for java -m jdk.httpserver command * @library /test/lib * @modules jdk.httpserver - * @run testng/othervm CommandLineNegativeTest + * @run junit/othervm CommandLineNegativeTest */ import java.io.IOException; @@ -37,13 +37,14 @@ import jdk.test.lib.Platform; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.util.FileUtils; -import org.testng.SkipException; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import static java.lang.System.out; -import static org.testng.Assert.assertFalse; + +import org.junit.jupiter.api.AfterAll; +import static org.junit.jupiter.api.Assertions.assertFalse; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class CommandLineNegativeTest { @@ -55,8 +56,8 @@ public class CommandLineNegativeTest { static final Path TEST_FILE = TEST_DIR.resolve("file.txt"); static final String LOOPBACK_ADDR = InetAddress.getLoopbackAddress().getHostAddress(); - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } @@ -64,15 +65,15 @@ public class CommandLineNegativeTest { Files.createFile(TEST_FILE); } - @DataProvider - public Object[][] unknownOption() { + public static Object[][] unknownOption() { return new Object[][] { {"--unknownOption"}, {"null"} }; } - @Test(dataProvider = "unknownOption") + @ParameterizedTest + @MethodSource("unknownOption") public void testBadOption(String opt) throws Throwable { out.println("\n--- testUnknownOption, opt=\"%s\" ".formatted(opt)); simpleserver(JAVA, LOCALE_OPT, "-m", "jdk.httpserver", opt) @@ -80,8 +81,7 @@ public class CommandLineNegativeTest { .shouldContain("Error: unknown option: " + opt); } - @DataProvider - public Object[][] tooManyOptionArgs() { + public static Object[][] tooManyOptionArgs() { return new Object[][] { {"-b", "localhost"}, {"-d", "/some/path"}, @@ -95,7 +95,8 @@ public class CommandLineNegativeTest { }; } - @Test(dataProvider = "tooManyOptionArgs") + @ParameterizedTest + @MethodSource("tooManyOptionArgs") public void testTooManyOptionArgs(String opt, String arg) throws Throwable { out.println("\n--- testTooManyOptionArgs, opt=\"%s\" ".formatted(opt)); simpleserver(JAVA, LOCALE_OPT, "-m", "jdk.httpserver", opt, arg, arg) @@ -103,8 +104,7 @@ public class CommandLineNegativeTest { .shouldContain("Error: unknown option: " + arg); } - @DataProvider - public Object[][] noArg() { + public static Object[][] noArg() { return new Object[][] { {"-b", """ -b, --bind-address - Address to bind to. Default: %s (loopback). @@ -122,7 +122,8 @@ public class CommandLineNegativeTest { }; } - @Test(dataProvider = "noArg") + @ParameterizedTest + @MethodSource("noArg") public void testNoArg(String opt, String msg) throws Throwable { out.println("\n--- testNoArg, opt=\"%s\" ".formatted(opt)); simpleserver(JAVA, LOCALE_OPT, "-m", "jdk.httpserver", opt) @@ -131,8 +132,7 @@ public class CommandLineNegativeTest { .shouldContain(msg); } - @DataProvider - public Object[][] invalidValue() { + public static Object[][] invalidValue() { return new Object[][] { {"-b", "[127.0.0.1]"}, {"-b", "badhost"}, @@ -146,7 +146,8 @@ public class CommandLineNegativeTest { }; } - @Test(dataProvider = "invalidValue") + @ParameterizedTest + @MethodSource("invalidValue") public void testInvalidValue(String opt, String val) throws Throwable { out.println("\n--- testInvalidValue, opt=\"%s\" ".formatted(opt)); simpleserver(JAVA, LOCALE_OPT, "-m", "jdk.httpserver", opt, val) @@ -154,10 +155,10 @@ public class CommandLineNegativeTest { .shouldContain("Error: invalid value given for " + opt + ": " + val); } - @DataProvider - public Object[][] portOptions() { return new Object[][] {{"-p"}, {"--port"}}; } + public static Object[][] portOptions() { return new Object[][] {{"-p"}, {"--port"}}; } - @Test(dataProvider = "portOptions") + @ParameterizedTest + @MethodSource("portOptions") public void testPortOutOfRange(String opt) throws Throwable { out.println("\n--- testPortOutOfRange, opt=\"%s\" ".formatted(opt)); simpleserver(JAVA, LOCALE_OPT, "-m", "jdk.httpserver", opt, "65536") // range 0 to 65535 @@ -165,10 +166,10 @@ public class CommandLineNegativeTest { .shouldContain("Error: server config failed: " + "port out of range:65536"); } - @DataProvider - public Object[][] directoryOptions() { return new Object[][] {{"-d"}, {"--directory"}}; } + public static Object[][] directoryOptions() { return new Object[][] {{"-d"}, {"--directory"}}; } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testRootNotADirectory(String opt) throws Throwable { out.println("\n--- testRootNotADirectory, opt=\"%s\" ".formatted(opt)); var file = TEST_FILE.toString(); @@ -178,7 +179,8 @@ public class CommandLineNegativeTest { .shouldContain("Error: server config failed: " + "Path is not a directory: " + file); } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testRootDoesNotExist(String opt) throws Throwable { out.println("\n--- testRootDoesNotExist, opt=\"%s\" ".formatted(opt)); Path root = TEST_DIR.resolve("not/existent/dir"); @@ -188,14 +190,12 @@ public class CommandLineNegativeTest { .shouldContain("Error: server config failed: " + "Path does not exist: " + root.toString()); } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testRootNotReadable(String opt) throws Throwable { out.println("\n--- testRootNotReadable, opt=\"%s\" ".formatted(opt)); - if (Platform.isWindows()) { - // Not applicable to Windows. Reason: cannot revoke an owner's read - // access to a directory that was created by that owner - throw new SkipException("cannot run on Windows"); - } + Assumptions.assumeFalse(Platform.isWindows(), "cannot run on Windows"); // Not applicable to Windows. Reason: cannot revoke an owner's read + // access to a directory that was created by that owner Path root = Files.createDirectories(TEST_DIR.resolve("not/readable/dir")); try { root.toFile().setReadable(false, false); @@ -208,8 +208,8 @@ public class CommandLineNegativeTest { } } - @AfterTest - public void teardown() throws IOException { + @AfterAll + public static void teardown() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/CommandLinePortNotSpecifiedTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/CommandLinePortNotSpecifiedTest.java index 61a872a8655..c665f37abe7 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/CommandLinePortNotSpecifiedTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/CommandLinePortNotSpecifiedTest.java @@ -27,7 +27,7 @@ * @summary Tests the java -m jdk.httpserver command with port not specified * @modules jdk.httpserver * @library /test/lib - * @run testng/othervm/manual CommandLinePortNotSpecifiedTest + * @run junit/othervm/manual CommandLinePortNotSpecifiedTest */ import java.io.IOException; @@ -39,11 +39,12 @@ import jdk.test.lib.Platform; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.util.FileUtils; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; import static java.lang.System.out; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + public class CommandLinePortNotSpecifiedTest { static final Path JAVA_HOME = Path.of(System.getProperty("java.home")); @@ -55,8 +56,8 @@ public class CommandLinePortNotSpecifiedTest { static final String TEST_DIR_STR = TEST_DIR.toString(); static final String LOOPBACK_ADDR = InetAddress.getLoopbackAddress().getHostAddress(); - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } @@ -92,8 +93,8 @@ public class CommandLinePortNotSpecifiedTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @AfterTest - public void teardown() throws IOException { + @AfterAll + public static void teardown() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/CommandLinePositiveTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/CommandLinePositiveTest.java index 16d0ff67ee9..3c3ac0c215d 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/CommandLinePositiveTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/CommandLinePositiveTest.java @@ -27,7 +27,7 @@ * @library /test/lib * @build jdk.test.lib.net.IPSupport * @modules jdk.httpserver - * @run testng/othervm CommandLinePositiveTest + * @run junit/othervm CommandLinePositiveTest */ import java.io.IOException; @@ -41,12 +41,13 @@ import jdk.test.lib.net.IPSupport; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.util.FileUtils; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import static java.lang.System.out; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + public class CommandLinePositiveTest { static final String JAVA_VERSION = System.getProperty("java.version"); @@ -84,8 +85,8 @@ public class CommandLinePositiveTest { static final String LOOPBACK_ADDR = InetAddress.getLoopbackAddress().getHostAddress(); - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (Files.exists(ROOT_DIR)) { FileUtils.deleteFileTreeWithRetry(ROOT_DIR); } @@ -105,16 +106,17 @@ public class CommandLinePositiveTest { } } - @DataProvider - public Object[][] directoryOptions() { return new Object[][] {{"-d"}, {"--directory"}}; } + public static Object[][] directoryOptions() { return new Object[][] {{"-d"}, {"--directory"}}; } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testAbsDirectory(String opt) throws Throwable { out.printf("\n--- testAbsDirectory, opt=\"%s\"%n", opt); testDirectory(opt, ROOT_DIR_STR); } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testRelDirectory(String opt) throws Throwable { out.printf("\n--- testRelDirectory, opt=\"%s\"%n", opt); Path rootRelDir = CWD.relativize(ROOT_DIR); @@ -129,10 +131,10 @@ public class CommandLinePositiveTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @DataProvider - public Object[][] portOptions() { return new Object[][] {{"-p"}, {"--port"}}; } + public static Object[][] portOptions() { return new Object[][] {{"-p"}, {"--port"}}; } - @Test(dataProvider = "portOptions") + @ParameterizedTest + @MethodSource("portOptions") public void testPort(String opt) throws Throwable { out.println("\n--- testPort, opt=\"%s\" ".formatted(opt)); simpleserver(JAVA, LOCALE_OPT, "-m", "jdk.httpserver", opt, "0") @@ -142,8 +144,7 @@ public class CommandLinePositiveTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @DataProvider - public Object[][] helpOptions() { return new Object[][] {{"-h"}, {"-?"}, {"--help"}}; } + public static Object[][] helpOptions() { return new Object[][] {{"-h"}, {"-?"}, {"--help"}}; } static final String USAGE_TEXT = """ Usage: java -m jdk.httpserver [-b bind address] [-p port] [-d directory] @@ -161,7 +162,8 @@ public class CommandLinePositiveTest { -version, --version - Prints version information and exits. To stop the server, press Ctrl + C.""".formatted(LOOPBACK_ADDR); - @Test(dataProvider = "helpOptions") + @ParameterizedTest + @MethodSource("helpOptions") public void testHelp(String opt) throws Throwable { out.println("\n--- testHelp, opt=\"%s\" ".formatted(opt)); simpleserver(WaitForLine.HELP_STARTUP_LINE, @@ -172,10 +174,10 @@ public class CommandLinePositiveTest { .shouldContain(OPTIONS_TEXT); } - @DataProvider - public Object[][] versionOptions() { return new Object[][] {{"-version"}, {"--version"}}; } + public static Object[][] versionOptions() { return new Object[][] {{"-version"}, {"--version"}}; } - @Test(dataProvider = "versionOptions") + @ParameterizedTest + @MethodSource("versionOptions") public void testVersion(String opt) throws Throwable { out.println("\n--- testVersion, opt=\"%s\" ".formatted(opt)); simpleserver(WaitForLine.VERSION_STARTUP_LINE, @@ -184,10 +186,10 @@ public class CommandLinePositiveTest { .shouldHaveExitValue(0); } - @DataProvider - public Object[][] bindOptions() { return new Object[][] {{"-b"}, {"--bind-address"}}; } + public static Object[][] bindOptions() { return new Object[][] {{"-b"}, {"--bind-address"}}; } - @Test(dataProvider = "bindOptions") + @ParameterizedTest + @MethodSource("bindOptions") public void testBindAllInterfaces(String opt) throws Throwable { out.println("\n--- testBindAllInterfaces, opt=\"%s\" ".formatted(opt)); simpleserver(JAVA, LOCALE_OPT, "-m", "jdk.httpserver", "-p", "0", opt, "0.0.0.0") @@ -202,7 +204,8 @@ public class CommandLinePositiveTest { } } - @Test(dataProvider = "bindOptions") + @ParameterizedTest + @MethodSource("bindOptions") public void testLastOneWinsBindAddress(String opt) throws Throwable { out.println("\n--- testLastOneWinsBindAddress, opt=\"%s\" ".formatted(opt)); simpleserver(JAVA, LOCALE_OPT, "-m", "jdk.httpserver", "-p", "0", opt, "123.4.5.6", opt, LOOPBACK_ADDR) @@ -212,7 +215,8 @@ public class CommandLinePositiveTest { } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testLastOneWinsDirectory(String opt) throws Throwable { out.println("\n--- testLastOneWinsDirectory, opt=\"%s\" ".formatted(opt)); simpleserver(JAVA, LOCALE_OPT, "-m", "jdk.httpserver", "-p", "0", opt, ROOT_DIR_STR, opt, ROOT_DIR_STR) @@ -222,10 +226,10 @@ public class CommandLinePositiveTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @DataProvider - public Object[][] outputOptions() { return new Object[][] {{"-o"}, {"--output"}}; } + public static Object[][] outputOptions() { return new Object[][] {{"-o"}, {"--output"}}; } - @Test(dataProvider = "outputOptions") + @ParameterizedTest + @MethodSource("outputOptions") public void testLastOneWinsOutput(String opt) throws Throwable { out.println("\n--- testLastOneWinsOutput, opt=\"%s\" ".formatted(opt)); simpleserver(JAVA, LOCALE_OPT, "-m", "jdk.httpserver", "-p", "0", opt, "none", opt, "verbose") @@ -235,7 +239,8 @@ public class CommandLinePositiveTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @Test(dataProvider = "portOptions") + @ParameterizedTest + @MethodSource("portOptions") public void testLastOneWinsPort(String opt) throws Throwable { out.println("\n--- testLastOneWinsPort, opt=\"%s\" ".formatted(opt)); simpleserver(JAVA, LOCALE_OPT, "-m", "jdk.httpserver", opt, "-999", opt, "0") @@ -245,8 +250,8 @@ public class CommandLinePositiveTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @AfterTest - public void teardown() throws IOException { + @AfterAll + public static void teardown() throws IOException { if (Files.exists(ROOT_DIR)) { FileUtils.deleteFileTreeWithRetry(ROOT_DIR); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/CustomFileSystemTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/CustomFileSystemTest.java index fa6be58113e..c0858475ea4 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/CustomFileSystemTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/CustomFileSystemTest.java @@ -27,7 +27,7 @@ * file system * @library /test/lib * @build jdk.test.lib.Platform jdk.test.lib.net.URIBuilder - * @run testng/othervm CustomFileSystemTest + * @run junit/othervm CustomFileSystemTest */ import java.io.IOException; @@ -71,16 +71,18 @@ import com.sun.net.httpserver.SimpleFileServer; import com.sun.net.httpserver.SimpleFileServer.OutputLevel; import jdk.test.lib.Platform; import jdk.test.lib.net.URIBuilder; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; -import org.testng.SkipException; import static java.net.http.HttpClient.Builder.NO_PROXY; import static java.nio.charset.StandardCharsets.UTF_8; import static java.nio.file.StandardOpenOption.CREATE; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertTrue; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class CustomFileSystemTest { static final InetSocketAddress LOOPBACK_ADDR = new InetSocketAddress(InetAddress.getLoopbackAddress(), 0); @@ -88,8 +90,8 @@ public class CustomFileSystemTest { static final boolean ENABLE_LOGGING = true; static final Logger LOGGER = Logger.getLogger("com.sun.net.httpserver"); - @BeforeTest - public void setup() throws Exception { + @BeforeAll + public static void setup() throws Exception { if (ENABLE_LOGGING) { ConsoleHandler ch = new ConsoleHandler(); LOGGER.setLevel(Level.ALL); @@ -111,11 +113,11 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "aFile.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), "some text"); - assertEquals(response.headers().firstValue("content-type").get(), "text/plain"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); + assertEquals(200, response.statusCode()); + assertEquals("some text", response.body()); + assertEquals("text/plain", response.headers().firstValue("content-type").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); } finally { server.stop(0); } @@ -140,11 +142,11 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), "text/html; charset=UTF-8"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); - assertEquals(response.body(), expectedBody); + assertEquals(200, response.statusCode()); + assertEquals("text/html; charset=UTF-8", response.headers().firstValue("content-type").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } @@ -164,11 +166,11 @@ public class CustomFileSystemTest { var request = HttpRequest.newBuilder(uri(server, "aFile.txt")) .method("HEAD", HttpRequest.BodyPublishers.noBody()).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), "text/plain"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); - assertEquals(response.body(), ""); + assertEquals(200, response.statusCode()); + assertEquals("text/plain", response.headers().firstValue("content-type").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); + assertEquals("", response.body()); } finally { server.stop(0); } @@ -194,18 +196,17 @@ public class CustomFileSystemTest { var request = HttpRequest.newBuilder(uri(server, "")) .method("HEAD", HttpRequest.BodyPublishers.noBody()).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), "text/html; charset=UTF-8"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); - assertEquals(response.body(), ""); + assertEquals(200, response.statusCode()); + assertEquals("text/html; charset=UTF-8", response.headers().firstValue("content-type").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); + assertEquals("", response.body()); } finally { server.stop(0); } } - @DataProvider - public Object[][] indexFiles() { + public static Object[][] indexFiles() { var fileContent = openHTML + """

This is an index file

""" + closeHTML; @@ -221,7 +222,8 @@ public class CustomFileSystemTest { }; } - @Test(dataProvider = "indexFiles") + @ParameterizedTest + @MethodSource("indexFiles") public void testDirectoryWithIndexGET(String id, String filename, String contentType, @@ -241,11 +243,11 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), contentType); - assertEquals(response.headers().firstValue("content-length").get(), contentLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); - assertEquals(response.body(), expectedBody); + assertEquals(200, response.statusCode()); + assertEquals(contentType, response.headers().firstValue("content-type").get()); + assertEquals(contentLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); if (serveIndexFile) { @@ -256,9 +258,7 @@ public class CustomFileSystemTest { @Test public void testNotReadableFileGET() throws Exception { - if (Platform.isWindows()) { - throw new SkipException("Not applicable on Windows"); - } + Assumptions.assumeFalse(Platform.isWindows(), "Not applicable on Windows"); var expectedBody = openHTML + """

File not found

/aFile.txt

@@ -276,9 +276,9 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "aFile.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); file.toFile().setReadable(true, false); @@ -287,9 +287,7 @@ public class CustomFileSystemTest { @Test public void testNotReadableSegmentGET() throws Exception { - if (Platform.isWindows()) { - throw new SkipException("Not applicable on Windows"); - } + Assumptions.assumeFalse(Platform.isWindows(), "Not applicable on Windows"); var expectedBody = openHTML + """

File not found

/dir/aFile.txt

@@ -309,9 +307,9 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "dir/aFile.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); dir.toFile().setReadable(true, false); @@ -333,9 +331,9 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "aFile?#.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } @@ -356,9 +354,9 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "doesNotExist.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } @@ -380,9 +378,9 @@ public class CustomFileSystemTest { var request = HttpRequest.newBuilder(uri(server, "doesNotExist.txt")) .method("HEAD", HttpRequest.BodyPublishers.noBody()).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), ""); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals("", response.body()); } finally { server.stop(0); } @@ -406,9 +404,9 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "symlink")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } @@ -433,21 +431,21 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "symlink/aFile.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } } - private void createSymLink(Path symlink, Path target) { + private static void createSymLink(Path symlink, Path target) { try { Files.createSymbolicLink(symlink, target); } catch (UnsupportedOperationException uoe) { - throw new SkipException("sym link creation not supported", uoe); + Assumptions.abort("sym link creation not supported"); } catch (IOException ioe) { - throw new SkipException("probably insufficient privileges to create sym links (Windows)", ioe); + Assumptions.abort("probably insufficient privileges to create sym links (Windows)"); } } @@ -470,9 +468,9 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, fileName)).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } @@ -494,15 +492,15 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, ".hiddenDirectory/aFile.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } } - private Path createHiddenFile(Path root) throws IOException { + private static Path createHiddenFile(Path root) throws IOException { Path file; if (Platform.isWindows()) { file = Files.createFile(root.resolve("aFile.txt")); @@ -514,7 +512,7 @@ public class CustomFileSystemTest { return file; } - private Path createFileInHiddenDirectory(Path root) throws IOException { + private static Path createFileInHiddenDirectory(Path root) throws IOException { Path dir; Path file; if (Platform.isWindows()) { @@ -549,17 +547,17 @@ public class CustomFileSystemTest { var uri = uri(server, "aDirectory"); var request = HttpRequest.newBuilder(uri).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 301); - assertEquals(response.headers().firstValue("content-length").get(), "0"); - assertEquals(response.headers().firstValue("location").get(), "/aDirectory/"); + assertEquals(301, response.statusCode()); + assertEquals("0", response.headers().firstValue("content-length").get()); + assertEquals("/aDirectory/", response.headers().firstValue("location").get()); // tests that query component is preserved during redirect var uri2 = uri(server, "aDirectory", "query"); var req2 = HttpRequest.newBuilder(uri2).build(); var res2 = client.send(req2, BodyHandlers.ofString()); - assertEquals(res2.statusCode(), 301); - assertEquals(res2.headers().firstValue("content-length").get(), "0"); - assertEquals(res2.headers().firstValue("location").get(), "/aDirectory/?query"); + assertEquals(301, res2.statusCode()); + assertEquals("0", res2.headers().firstValue("content-length").get()); + assertEquals("/aDirectory/?query", res2.headers().firstValue("location").get()); } { // tests that redirect to returned relative URI works @@ -568,10 +566,10 @@ public class CustomFileSystemTest { var uri = uri(server, "aDirectory"); var request = HttpRequest.newBuilder(uri).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), expectedBody); - assertEquals(response.headers().firstValue("content-type").get(), "text/html; charset=UTF-8"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); + assertEquals(200, response.statusCode()); + assertEquals(expectedBody, response.body()); + assertEquals("text/html; charset=UTF-8", response.headers().firstValue("content-type").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); } } finally { server.stop(0); @@ -588,7 +586,7 @@ public class CustomFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "beginDelim%3C%3EEndDelim")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); + assertEquals(404, response.statusCode()); assertTrue(response.body().contains("beginDelim%3C%3EEndDelim")); assertTrue(response.body().contains("File not found")); } finally { diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/FileServerHandlerTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/FileServerHandlerTest.java index a5179b03f16..85bad215375 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/FileServerHandlerTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/FileServerHandlerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,7 @@ /* * @test * @summary Tests for FileServerHandler - * @run testng FileServerHandlerTest + * @run junit FileServerHandlerTest */ import java.io.ByteArrayInputStream; @@ -44,42 +44,44 @@ import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpPrincipal; import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.SimpleFileServer; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; -import static org.testng.Assert.*; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class FileServerHandlerTest { static final Path CWD = Path.of(".").toAbsolutePath(); static final Class RE = RuntimeException.class; - @DataProvider - public Object[][] notAllowedMethods() { + public static Object[][] notAllowedMethods() { var l = List.of("POST", "PUT", "DELETE", "TRACE", "OPTIONS"); return l.stream().map(s -> new Object[] { s }).toArray(Object[][]::new); } - @Test(dataProvider = "notAllowedMethods") + @ParameterizedTest + @MethodSource("notAllowedMethods") public void testNotAllowedRequestMethod(String requestMethod) throws Exception { var handler = SimpleFileServer.createFileHandler(CWD); var exchange = new MethodHttpExchange(requestMethod); handler.handle(exchange); - assertEquals(exchange.rCode, 405); - assertEquals(exchange.getResponseHeaders().getFirst("allow"), "HEAD, GET"); + assertEquals(405, exchange.rCode); + assertEquals("HEAD, GET", exchange.getResponseHeaders().getFirst("allow")); } - @DataProvider - public Object[][] notImplementedMethods() { + public static Object[][] notImplementedMethods() { var l = List.of("GARBAGE", "RUBBISH", "TRASH", "FOO", "BAR"); return l.stream().map(s -> new Object[] { s }).toArray(Object[][]::new); } - @Test(dataProvider = "notImplementedMethods") + @ParameterizedTest + @MethodSource("notImplementedMethods") public void testNotImplementedRequestMethod(String requestMethod) throws Exception { var handler = SimpleFileServer.createFileHandler(CWD); var exchange = new MethodHttpExchange(requestMethod); handler.handle(exchange); - assertEquals(exchange.rCode, 501); + assertEquals(501, exchange.rCode); } // 301 and 404 response codes tested in SimpleFileServerTest @@ -93,8 +95,8 @@ public class FileServerHandlerTest { throw new RuntimeException("getRequestBody"); } }; - var t = expectThrows(RE, () -> h.handle(exchange)); - assertEquals(t.getMessage(), "getRequestBody"); + var t = assertThrows(RE, () -> h.handle(exchange)); + assertEquals("getRequestBody", t.getMessage()); } { var exchange = new ThrowingHttpExchange("GET") { @@ -102,8 +104,8 @@ public class FileServerHandlerTest { throw new RuntimeException("getResponseHeaders"); } }; - var t = expectThrows(RE, () -> h.handle(exchange)); - assertEquals(t.getMessage(), "getResponseHeaders"); + var t = assertThrows(RE, () -> h.handle(exchange)); + assertEquals("getResponseHeaders", t.getMessage()); } { var exchange = new ThrowingHttpExchange("GET") { @@ -111,8 +113,8 @@ public class FileServerHandlerTest { throw new RuntimeException("sendResponseHeaders"); } }; - var t = expectThrows(RE, () -> h.handle(exchange)); - assertEquals(t.getMessage(), "sendResponseHeaders"); + var t = assertThrows(RE, () -> h.handle(exchange)); + assertEquals("sendResponseHeaders", t.getMessage()); } { var exchange = new ThrowingHttpExchange("GET") { @@ -120,8 +122,8 @@ public class FileServerHandlerTest { throw new RuntimeException("getResponseBody"); } }; - var t = expectThrows(RE, () -> h.handle(exchange)); - assertEquals(t.getMessage(), "getResponseBody"); + var t = assertThrows(RE, () -> h.handle(exchange)); + assertEquals("getResponseBody", t.getMessage()); } { var exchange = new ThrowingHttpExchange("GET") { @@ -129,8 +131,8 @@ public class FileServerHandlerTest { throw new RuntimeException("close"); } }; - var t = expectThrows(RE, () -> h.handle(exchange)); - assertEquals(t.getMessage(), "close"); + var t = assertThrows(RE, () -> h.handle(exchange)); + assertEquals("close", t.getMessage()); } } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/HttpHandlersTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/HttpHandlersTest.java index 85d271e44fa..46c7085ae14 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/HttpHandlersTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/HttpHandlersTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,7 @@ * @summary Tests for HttpHandlers * @library /test/lib * @build jdk.test.lib.net.URIBuilder - * @run testng/othervm HttpHandlersTest + * @run junit/othervm HttpHandlersTest */ import java.io.IOException; @@ -44,12 +44,14 @@ import java.util.logging.Level; import java.util.logging.Logger; import jdk.test.lib.net.URIBuilder; import com.sun.net.httpserver.*; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import static java.net.http.HttpClient.Builder.NO_PROXY; import static java.nio.charset.StandardCharsets.UTF_8; -import static org.testng.Assert.*; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class HttpHandlersTest { @@ -61,8 +63,8 @@ public class HttpHandlersTest { static final boolean ENABLE_LOGGING = true; static final Logger LOGGER = Logger.getLogger("com.sun.net.httpserver"); - @BeforeTest - public void setup() { + @BeforeAll + public static void setup() { if (ENABLE_LOGGING) { ConsoleHandler ch = new ConsoleHandler(); LOGGER.setLevel(Level.ALL); @@ -103,11 +105,11 @@ public class HttpHandlersTest { var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, BodyHandlers.ofString()); assertTrue(response.headers().map().containsKey("date")); - assertEquals(response.headers().firstValue("foo").get(), "bar"); - assertEquals(response.headers().firstValue("content-length").get(), "0"); - assertEquals(response.headers().map().size(), 3); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), ""); + assertEquals("bar", response.headers().firstValue("foo").get()); + assertEquals("0", response.headers().firstValue("content-length").get()); + assertEquals(3, response.headers().map().size()); + assertEquals(200, response.statusCode()); + assertEquals("", response.body()); } finally { server.stop(0); } @@ -125,11 +127,11 @@ public class HttpHandlersTest { var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, BodyHandlers.ofString()); assertTrue(response.headers().map().containsKey("date")); - assertEquals(response.headers().firstValue("foo").get(), "bar"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().map().size(), 3); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), "hello world"); + assertEquals("bar", response.headers().firstValue("foo").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(3, response.headers().map().size()); + assertEquals(200, response.statusCode()); + assertEquals("hello world", response.body()); } finally { server.stop(0); } @@ -148,9 +150,9 @@ public class HttpHandlersTest { .method("HEAD", BodyPublishers.noBody()).build(); var response = client.send(request, BodyHandlers.ofString()); assertTrue(response.headers().map().containsKey("date")); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().map().size(), 2); - assertEquals(response.statusCode(), 200); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(2, response.headers().map().size()); + assertEquals(200, response.statusCode()); } finally { server.stop(0); } @@ -168,22 +170,22 @@ public class HttpHandlersTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertNotEquals(response.headers().firstValue("date").get(), "12345"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().map().size(), 2); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), "hello world"); + assertNotEquals("12345", response.headers().firstValue("date").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(2, response.headers().map().size()); + assertEquals(200, response.statusCode()); + assertEquals("hello world", response.body()); } finally { server.stop(0); } } - @DataProvider - public Object[][] responseBodies() { + public static Object[][] responseBodies() { return new Object[][] { {"hello world"}, {""} }; } - @Test(dataProvider = "responseBodies") + @ParameterizedTest + @MethodSource("responseBodies") public void testOfThrowingExchange(String body) { var h = HttpHandlers.of(200, Headers.of(), body); { @@ -192,8 +194,8 @@ public class HttpHandlersTest { throw new RuntimeException("getRequestBody"); } }; - var t = expectThrows(RE, () -> h.handle(exchange)); - assertEquals(t.getMessage(), "getRequestBody"); + var t = assertThrows(RE, () -> h.handle(exchange)); + assertEquals("getRequestBody", t.getMessage()); } { var exchange = new ThrowingHttpExchange() { @@ -201,8 +203,8 @@ public class HttpHandlersTest { throw new RuntimeException("getResponseHeaders"); } }; - var t = expectThrows(RE, () -> h.handle(exchange)); - assertEquals(t.getMessage(), "getResponseHeaders"); + var t = assertThrows(RE, () -> h.handle(exchange)); + assertEquals("getResponseHeaders", t.getMessage()); } { var exchange = new ThrowingHttpExchange() { @@ -210,8 +212,8 @@ public class HttpHandlersTest { throw new RuntimeException("sendResponseHeaders"); } }; - var t = expectThrows(RE, () -> h.handle(exchange)); - assertEquals(t.getMessage(), "sendResponseHeaders"); + var t = assertThrows(RE, () -> h.handle(exchange)); + assertEquals("sendResponseHeaders", t.getMessage()); } { var exchange = new ThrowingHttpExchange() { @@ -220,8 +222,8 @@ public class HttpHandlersTest { } }; if (!body.isEmpty()) { // getResponseBody not called if no responseBody - var t = expectThrows(RE, () -> h.handle(exchange)); - assertEquals(t.getMessage(), "getResponseBody"); + var t = assertThrows(RE, () -> h.handle(exchange)); + assertEquals("getResponseBody", t.getMessage()); } } { @@ -230,8 +232,8 @@ public class HttpHandlersTest { throw new RuntimeException("close"); } }; - var t = expectThrows(RE, () -> h.handle(exchange)); - assertEquals(t.getMessage(), "close"); + var t = assertThrows(RE, () -> h.handle(exchange)); + assertEquals("close", t.getMessage()); } } @@ -247,8 +249,8 @@ public class HttpHandlersTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), "TestHandler-1"); + assertEquals(200, response.statusCode()); + assertEquals("TestHandler-1", response.body()); } finally { server.stop(0); } @@ -266,8 +268,8 @@ public class HttpHandlersTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), "TestHandler-2"); + assertEquals(200, response.statusCode()); + assertEquals("TestHandler-2", response.body()); } finally { server.stop(0); } @@ -287,8 +289,8 @@ public class HttpHandlersTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), "TestHandler-2"); + assertEquals(200, response.statusCode()); + assertEquals("TestHandler-2", response.body()); } finally { server.stop(0); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/HttpsServerAlertTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/HttpsServerAlertTest.java index 07433bdbb2a..ba6812ffaa5 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/HttpsServerAlertTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/HttpsServerAlertTest.java @@ -27,15 +27,13 @@ * @summary Test if HttpsServer sends the TLS alerts produced * @library /test/lib * @build jdk.test.lib.net.SimpleSSLContext - * @run testng/othervm HttpsServerAlertTest + * @run junit/othervm HttpsServerAlertTest */ import com.sun.net.httpserver.HttpsConfigurator; import com.sun.net.httpserver.HttpsParameters; import com.sun.net.httpserver.HttpsServer; import jdk.test.lib.net.SimpleSSLContext; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLHandshakeException; @@ -50,7 +48,9 @@ import java.util.logging.ConsoleHandler; import java.util.logging.Level; import java.util.logging.Logger; -import static org.testng.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; public class HttpsServerAlertTest { @@ -65,8 +65,8 @@ public class HttpsServerAlertTest { SSLContext.setDefault(sslContext); } - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (ENABLE_LOGGING) { ConsoleHandler ch = new ConsoleHandler(); LOGGER.setLevel(Level.ALL); diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/HttpsServerTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/HttpsServerTest.java index 783f159f5c1..794067592df 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/HttpsServerTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/HttpsServerTest.java @@ -26,7 +26,7 @@ * @summary Test for HttpsServer::create * @library /test/lib * @build jdk.test.lib.Platform jdk.test.lib.net.URIBuilder - * @run testng/othervm HttpsServerTest + * @run junit/othervm HttpsServerTest */ import java.io.IOException; @@ -51,12 +51,13 @@ import com.sun.net.httpserver.HttpsServer; import javax.net.ssl.SSLContext; import jdk.test.lib.net.SimpleSSLContext; import jdk.test.lib.net.URIBuilder; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; import static java.net.http.HttpClient.Builder.NO_PROXY; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.assertThrows; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; public class HttpsServerTest { @@ -72,8 +73,8 @@ public class HttpsServerTest { SSLContext.setDefault(sslContext); } - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (ENABLE_LOGGING) { ConsoleHandler ch = new ConsoleHandler(); LOGGER.setLevel(Level.ALL); @@ -97,12 +98,12 @@ public class HttpsServerTest { final var s1 = HttpsServer.create(null, 0); assertNull(s1.getAddress()); s1.bind((LOOPBACK_ADDR), 0); - assertEquals(s1.getAddress().getAddress(), LOOPBACK_ADDR.getAddress()); + assertEquals(LOOPBACK_ADDR.getAddress(), s1.getAddress().getAddress()); final var s2 = HttpsServer.create(null, 0, "/foo/", new Handler()); assertNull(s2.getAddress()); s2.bind(LOOPBACK_ADDR, 0); - assertEquals(s2.getAddress().getAddress(), LOOPBACK_ADDR.getAddress()); + assertEquals(LOOPBACK_ADDR.getAddress(), s2.getAddress().getAddress()); s2.removeContext("/foo/"); // throws if context doesn't exist } @@ -119,11 +120,10 @@ public class HttpsServerTest { .build(); var request = HttpRequest.newBuilder(uri(server, "/test")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), "hello world"); - assertEquals(response.headers().firstValue("content-length").get(), - Integer.toString("hello world".length())); - assertEquals(response.statusCode(), filter.responseCode.get().intValue()); + assertEquals(200, response.statusCode()); + assertEquals("hello world", response.body()); + assertEquals( Integer.toString("hello world".length()), response.headers().firstValue("content-length").get()); + assertEquals(filter.responseCode.get().intValue(), response.statusCode()); } finally { server.stop(0); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/IdempotencyAndCommutativityTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/IdempotencyAndCommutativityTest.java index d98944077dc..2fde02efe70 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/IdempotencyAndCommutativityTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/IdempotencyAndCommutativityTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,14 +37,15 @@ import java.util.logging.Logger; import jdk.test.lib.net.URIBuilder; import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.SimpleFileServer; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import static java.net.http.HttpClient.Builder.NO_PROXY; import static java.nio.file.StandardOpenOption.CREATE; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; + +import org.junit.jupiter.api.AfterAll; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; /* * @test @@ -52,7 +53,7 @@ import static org.testng.Assert.assertTrue; * set of binary request sequences * @library /test/lib * @build jdk.test.lib.net.URIBuilder - * @run testng/othervm IdempotencyAndCommutativityTest + * @run junit/othervm IdempotencyAndCommutativityTest */ public class IdempotencyAndCommutativityTest { @@ -69,8 +70,8 @@ public class IdempotencyAndCommutativityTest { static final boolean ENABLE_LOGGING = true; static final Logger LOGGER = Logger.getLogger("com.sun.net.httpserver"); - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (ENABLE_LOGGING) { ConsoleHandler ch = new ConsoleHandler(); LOGGER.setLevel(Level.ALL); @@ -89,8 +90,7 @@ public class IdempotencyAndCommutativityTest { record ExchangeValues(String method, String resource, int respCode, String contentType) {} // Creates an exhaustive set of binary exchange sequences - @DataProvider - public Object[][] allBinarySequences() { + public static Object[][] allBinarySequences() { final List sequences = List.of( new ExchangeValues("GET", FILE_NAME, 200, "text/plain"), new ExchangeValues("GET", DIR_NAME, 200, "text/html; charset=UTF-8"), @@ -108,7 +108,8 @@ public class IdempotencyAndCommutativityTest { .toArray(Object[][]::new); } - @Test(dataProvider = "allBinarySequences") + @ParameterizedTest + @MethodSource("allBinarySequences") public void testBinarySequences(ExchangeValues e1, ExchangeValues e2) throws Exception { System.out.println("---"); System.out.println(e1); @@ -122,15 +123,15 @@ public class IdempotencyAndCommutativityTest { .method(e.method(), HttpRequest.BodyPublishers.noBody()) .build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), e.respCode()); + assertEquals(e.respCode(), response.statusCode()); if (e.contentType != null) { - assertEquals(response.headers().firstValue("content-type").get(), e.contentType()); + assertEquals(e.contentType(), response.headers().firstValue("content-type").get()); } else { assertTrue(response.headers().firstValue("content-type").isEmpty()); } } - @AfterTest + @AfterAll public static void teardown() { server.stop(0); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/MapToPathTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/MapToPathTest.java index aa8f37acc1b..38f0b610741 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/MapToPathTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/MapToPathTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,7 +27,7 @@ * system path * @library /test/lib * @build jdk.test.lib.Platform jdk.test.lib.net.URIBuilder - * @run testng/othervm MapToPathTest + * @run junit/othervm MapToPathTest */ import java.io.IOException; @@ -55,13 +55,14 @@ import com.sun.net.httpserver.SimpleFileServer; import com.sun.net.httpserver.SimpleFileServer.OutputLevel; import jdk.test.lib.net.URIBuilder; import jdk.test.lib.util.FileUtils; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; import static java.lang.System.out; import static java.net.http.HttpClient.Builder.NO_PROXY; import static java.nio.file.StandardOpenOption.CREATE; -import static org.testng.Assert.assertEquals; + +import org.junit.jupiter.api.AfterAll; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; public class MapToPathTest { @@ -74,8 +75,8 @@ public class MapToPathTest { static final boolean ENABLE_LOGGING = true; static final Logger LOGGER = Logger.getLogger("com.sun.net.httpserver"); - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (ENABLE_LOGGING) { ConsoleHandler ch = new ConsoleHandler(); LOGGER.setLevel(Level.ALL); @@ -88,7 +89,7 @@ public class MapToPathTest { createDirectories(TEST_DIR); } - private void createDirectories(Path testDir) throws IOException { + private static void createDirectories(Path testDir) throws IOException { // Create directory tree: // // |-- TEST_DIR @@ -124,40 +125,40 @@ public class MapToPathTest { try { var req1 = HttpRequest.newBuilder(uri(server, "/")).build(); var res1 = client.send(req1, BodyHandlers.ofString()); - assertEquals(res1.statusCode(), 200); - assertEquals(res1.headers().firstValue("content-type").get(), "text/html; charset=UTF-8"); - assertEquals(res1.headers().firstValue("content-length").get(), Long.toString(257L)); - assertEquals(res1.headers().firstValue("last-modified").get(), getLastModified(TEST_DIR)); + assertEquals(200, res1.statusCode()); + assertEquals("text/html; charset=UTF-8", res1.headers().firstValue("content-type").get()); + assertEquals(Long.toString(257L), res1.headers().firstValue("content-length").get()); + assertEquals(getLastModified(TEST_DIR), res1.headers().firstValue("last-modified").get()); var req2 = HttpRequest.newBuilder(uri(server, "/../")).build(); var res2 = client.send(req2, BodyHandlers.ofString()); - assertEquals(res2.statusCode(), 404); // cannot escape root + assertEquals(404, res2.statusCode()); // cannot escape root var req3 = HttpRequest.newBuilder(uri(server, "/foo/bar/baz/c://")).build(); var res3 = client.send(req3, BodyHandlers.ofString()); - assertEquals(res3.statusCode(), 404); // not found + assertEquals(404, res3.statusCode()); // not found var req4 = HttpRequest.newBuilder(uri(server, "/foo/bar/baz/c:.//")).build(); var res4 = client.send(req4, BodyHandlers.ofString()); - assertEquals(res4.statusCode(), 404); // not found + assertEquals(404, res4.statusCode()); // not found var req5 = HttpRequest.newBuilder(uri(server, "/foo/bar/baz/c:..//")).build(); var res5 = client.send(req5, BodyHandlers.ofString()); - assertEquals(res5.statusCode(), 404); // not found + assertEquals(404, res5.statusCode()); // not found var req6 = HttpRequest.newBuilder(uri(server, "/foo/file:" + TEST_DIR.getParent())).build(); var res6 = client.send(req6, BodyHandlers.ofString()); - assertEquals(res6.statusCode(), 404); // not found + assertEquals(404, res6.statusCode()); // not found var req7 = HttpRequest.newBuilder(uri(server, "/foo/bar/\\..\\../")).build(); var res7 = client.send(req7, BodyHandlers.ofString()); - assertEquals(res7.statusCode(), 404); // not found + assertEquals(404, res7.statusCode()); // not found var req8 = HttpRequest.newBuilder(uri(server, "/foo")).build(); var res8 = client.send(req8, BodyHandlers.ofString()); - assertEquals(res8.statusCode(), 301); // redirect - assertEquals(res8.headers().firstValue("content-length").get(), "0"); - assertEquals(res8.headers().firstValue("location").get(), "/foo/"); + assertEquals(301, res8.statusCode()); // redirect + assertEquals("0", res8.headers().firstValue("content-length").get()); + assertEquals("/foo/", res8.headers().firstValue("location").get()); } finally { server.stop(0); } @@ -169,15 +170,15 @@ public class MapToPathTest { try { var req1 = HttpRequest.newBuilder(uri(server, "/browse/file.txt")).build(); var res1 = client.send(req1, BodyHandlers.ofString()); - assertEquals(res1.statusCode(), 200); - assertEquals(res1.body(), "testdir"); - assertEquals(res1.headers().firstValue("content-type").get(), "text/plain"); - assertEquals(res1.headers().firstValue("content-length").get(), Long.toString(7L)); - assertEquals(res1.headers().firstValue("last-modified").get(), getLastModified(TEST_DIR.resolve("file.txt"))); + assertEquals(200, res1.statusCode()); + assertEquals("testdir", res1.body()); + assertEquals("text/plain", res1.headers().firstValue("content-type").get()); + assertEquals(Long.toString(7L), res1.headers().firstValue("content-length").get()); + assertEquals(getLastModified(TEST_DIR.resolve("file.txt")), res1.headers().firstValue("last-modified").get()); var req2 = HttpRequest.newBuilder(uri(server, "/store/file.txt")).build(); var res2 = client.send(req2, BodyHandlers.ofString()); - assertEquals(res2.statusCode(), 404); // no context found + assertEquals(404, res2.statusCode()); // no context found } finally { server.stop(0); } @@ -190,29 +191,29 @@ public class MapToPathTest { try { var req1 = HttpRequest.newBuilder(uri(server, "/foo/file.txt")).build(); var res1 = client.send(req1, BodyHandlers.ofString()); - assertEquals(res1.statusCode(), 200); - assertEquals(res1.body(), "foo"); - assertEquals(res1.headers().firstValue("content-type").get(), "text/plain"); - assertEquals(res1.headers().firstValue("content-length").get(), Long.toString(3L)); - assertEquals(res1.headers().firstValue("last-modified").get(), getLastModified(TEST_DIR.resolve("foo").resolve("file.txt"))); + assertEquals(200, res1.statusCode()); + assertEquals("foo", res1.body()); + assertEquals("text/plain", res1.headers().firstValue("content-type").get()); + assertEquals(Long.toString(3L), res1.headers().firstValue("content-length").get()); + assertEquals(getLastModified(TEST_DIR.resolve("foo").resolve("file.txt")), res1.headers().firstValue("last-modified").get()); var req2 = HttpRequest.newBuilder(uri(server, "/foobar/file.txt")).build(); var res2 = client.send(req2, BodyHandlers.ofString()); - assertEquals(res2.statusCode(), 404); // no context found + assertEquals(404, res2.statusCode()); // no context found var req3 = HttpRequest.newBuilder(uri(server, "/foo/../foobar/file.txt")).build(); var res3 = client.send(req3, BodyHandlers.ofString()); - assertEquals(res3.statusCode(), 404); // cannot escape context + assertEquals(404, res3.statusCode()); // cannot escape context var req4 = HttpRequest.newBuilder(uri(server, "/foo/../..")).build(); var res4 = client.send(req4, BodyHandlers.ofString()); - assertEquals(res4.statusCode(), 404); // cannot escape root + assertEquals(404, res4.statusCode()); // cannot escape root var req5 = HttpRequest.newBuilder(uri(server, "/foo/bar")).build(); var res5 = client.send(req5, BodyHandlers.ofString()); - assertEquals(res5.statusCode(), 301); // redirect - assertEquals(res5.headers().firstValue("content-length").get(), "0"); - assertEquals(res5.headers().firstValue("location").get(), "/foo/bar/"); + assertEquals(301, res5.statusCode()); // redirect + assertEquals("0", res5.headers().firstValue("content-length").get()); + assertEquals("/foo/bar/", res5.headers().firstValue("location").get()); } finally { server.stop(0); } @@ -225,35 +226,35 @@ public class MapToPathTest { try { var req1 = HttpRequest.newBuilder(uri(server, "/foo/file.txt")).build(); var res1 = client.send(req1, BodyHandlers.ofString()); - assertEquals(res1.statusCode(), 200); - assertEquals(res1.body(), "foo"); - assertEquals(res1.headers().firstValue("content-type").get(), "text/plain"); - assertEquals(res1.headers().firstValue("content-length").get(), Long.toString(3L)); - assertEquals(res1.headers().firstValue("last-modified").get(), getLastModified(TEST_DIR.resolve("foo").resolve("file.txt"))); + assertEquals(200, res1.statusCode()); + assertEquals("foo", res1.body()); + assertEquals("text/plain", res1.headers().firstValue("content-type").get()); + assertEquals(Long.toString(3L), res1.headers().firstValue("content-length").get()); + assertEquals(getLastModified(TEST_DIR.resolve("foo").resolve("file.txt")), res1.headers().firstValue("last-modified").get()); var req2 = HttpRequest.newBuilder(uri(server, "/foobar/")).build(); var res2 = client.send(req2, BodyHandlers.ofString()); - assertEquals(res2.statusCode(), 404); // handler prevents mapping to /foo/bar + assertEquals(404, res2.statusCode()); // handler prevents mapping to /foo/bar var req3 = HttpRequest.newBuilder(uri(server, "/foobar/file.txt")).build(); var res3 = client.send(req3, BodyHandlers.ofString()); - assertEquals(res3.statusCode(), 404); // handler prevents mapping to /foo/bar/file.txt + assertEquals(404, res3.statusCode()); // handler prevents mapping to /foo/bar/file.txt var req4 = HttpRequest.newBuilder(uri(server, "/file.txt")).build(); var res4 = client.send(req4, BodyHandlers.ofString()); - assertEquals(res4.statusCode(), 404); + assertEquals(404, res4.statusCode()); var req5 = HttpRequest.newBuilder(uri(server, "/foo/bar")).build(); var res5 = client.send(req5, BodyHandlers.ofString()); - assertEquals(res5.statusCode(), 301); // redirect - assertEquals(res5.headers().firstValue("content-length").get(), "0"); - assertEquals(res5.headers().firstValue("location").get(), "/foo/bar/"); + assertEquals(301, res5.statusCode()); // redirect + assertEquals("0", res5.headers().firstValue("content-length").get()); + assertEquals("/foo/bar/", res5.headers().firstValue("location").get()); var req6 = HttpRequest.newBuilder(uri(server, "/foo")).build(); var res6 = client.send(req6, BodyHandlers.ofString()); - assertEquals(res6.statusCode(), 301); // redirect - assertEquals(res6.headers().firstValue("content-length").get(), "0"); - assertEquals(res6.headers().firstValue("location").get(), "/foo/"); + assertEquals(301, res6.statusCode()); // redirect + assertEquals("0", res6.headers().firstValue("content-length").get()); + assertEquals("/foo/", res6.headers().firstValue("location").get()); } finally { server.stop(0); } @@ -276,7 +277,7 @@ public class MapToPathTest { try { var req1 = HttpRequest.newBuilder(uri(server, "/foo/bar/c:/baz/")).build(); var res1 = client.send(req1, BodyHandlers.ofString()); - assertEquals(res1.statusCode(), 404); // not found + assertEquals(404, res1.statusCode()); // not found } finally { server.stop(0); } @@ -303,32 +304,32 @@ public class MapToPathTest { out.println("uri.Path=" + uriPath); var req1 = HttpRequest.newBuilder(uri(server, uriPath)).build(); var res1 = client.send(req1, BodyHandlers.ofString()); - assertEquals(res1.statusCode(), 200); - assertEquals(res1.body(), "root response body"); + assertEquals(200, res1.statusCode()); + assertEquals("root response body", res1.body()); } { var req1 = HttpRequest.newBuilder(uri(server, "/foo/file.txt")).build(); var res1 = client.send(req1, BodyHandlers.ofString()); - assertEquals(res1.statusCode(), 200); - assertEquals(res1.body(), "foo"); + assertEquals(200, res1.statusCode()); + assertEquals("foo", res1.body()); var req2 = HttpRequest.newBuilder(uri(server, "/foo/bar/baz/file.txt")).build(); var res2 = client.send(req2, BodyHandlers.ofString()); - assertEquals(res2.statusCode(), 200); - assertEquals(res2.body(), "foo/bar/baz"); + assertEquals(200, res2.statusCode()); + assertEquals("foo/bar/baz", res2.body()); } { var req1 = HttpRequest.newBuilder(uri(server, "/foobar/file.txt")).build(); var res1 = client.send(req1, BodyHandlers.ofString()); - assertEquals(res1.statusCode(), 200); - assertEquals(res1.body(), "foobar"); + assertEquals(200, res1.statusCode()); + assertEquals("foobar", res1.body()); } for (String uriPath : List.of("/bar/", "/bar/t", "/bar/t/z", "/bar/index.html") ) { out.println("uri.Path=" + uriPath); var req1 = HttpRequest.newBuilder(uri(server, uriPath)).build(); var res1 = client.send(req1, BodyHandlers.ofString()); - assertEquals(res1.statusCode(), 200); - assertEquals(res1.body(), "bar response body"); + assertEquals(200, res1.statusCode()); + assertEquals("bar response body", res1.body()); } } finally { server.stop(0); @@ -347,18 +348,18 @@ public class MapToPathTest { out.println("uri.Query=" + query); var req = HttpRequest.newBuilder(uri(server, "", query)).build(); var res = client.send(req, BodyHandlers.ofString()); - assertEquals(res.statusCode(), 200); - assertEquals(res.headers().firstValue("content-type").get(), "text/html; charset=UTF-8"); - assertEquals(res.headers().firstValue("content-length").get(), Long.toString(257L)); - assertEquals(res.headers().firstValue("last-modified").get(), getLastModified(TEST_DIR)); + assertEquals(200, res.statusCode()); + assertEquals("text/html; charset=UTF-8", res.headers().firstValue("content-type").get()); + assertEquals(Long.toString(257L), res.headers().firstValue("content-length").get()); + assertEquals(getLastModified(TEST_DIR), res.headers().firstValue("last-modified").get()); } } finally { server.stop(0); } } - @AfterTest - public void teardown() throws IOException { + @AfterAll + public static void teardown() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/OutputFilterTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/OutputFilterTest.java index b7583ea901b..bed4b8e2f3d 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/OutputFilterTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/OutputFilterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,7 +27,7 @@ * @modules java.base/sun.net.www:+open * @library /test/lib * @build jdk.test.lib.net.URIBuilder - * @run testng/othervm -Djdk.httpclient.redirects.retrylimit=1 OutputFilterTest + * @run junit/othervm -Djdk.httpclient.redirects.retrylimit=1 OutputFilterTest */ import java.io.ByteArrayOutputStream; @@ -53,15 +53,17 @@ import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.SimpleFileServer; import com.sun.net.httpserver.SimpleFileServer.OutputLevel; import jdk.test.lib.net.URIBuilder; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import static java.net.http.HttpClient.Builder.NO_PROXY; import static java.nio.charset.StandardCharsets.*; import static com.sun.net.httpserver.SimpleFileServer.OutputLevel.*; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertThrows; -import static org.testng.Assert.assertTrue; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class OutputFilterTest { static final Class NPE = NullPointerException.class; @@ -74,8 +76,8 @@ public class OutputFilterTest { static final boolean ENABLE_LOGGING = true; static final Logger logger = Logger.getLogger("com.sun.net.httpserver"); - @BeforeTest - public void setup() { + @BeforeAll + public static void setup() { if (ENABLE_LOGGING) { ConsoleHandler ch = new ConsoleHandler(); logger.setLevel(Level.ALL); @@ -94,10 +96,10 @@ public class OutputFilterTest { @Test public void testDescription() { var filter = SimpleFileServer.createOutputFilter(OUT, VERBOSE); - assertEquals(filter.description(), "HttpExchange OutputFilter (outputLevel: VERBOSE)"); + assertEquals("HttpExchange OutputFilter (outputLevel: VERBOSE)", filter.description()); filter = SimpleFileServer.createOutputFilter(OUT, INFO); - assertEquals(filter.description(), "HttpExchange OutputFilter (outputLevel: INFO)"); + assertEquals("HttpExchange OutputFilter (outputLevel: INFO)", filter.description()); } @Test @@ -120,9 +122,9 @@ public class OutputFilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().map().size(), 3); - assertEquals(response.body(), "hello world"); + assertEquals(200, response.statusCode()); + assertEquals(3, response.headers().map().size()); + assertEquals("hello world", response.body()); } finally { server.stop(0); baos.flush(); @@ -172,9 +174,9 @@ public class OutputFilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().map().size(), 2); - assertEquals(response.body(), "hello world"); + assertEquals(200, response.statusCode()); + assertEquals(2, response.headers().map().size()); + assertEquals("hello world", response.body()); } finally { server.stop(0); baos.flush(); @@ -207,8 +209,7 @@ public class OutputFilterTest { } } - @DataProvider - public Object[][] throwingHandler() { + public static Object[][] throwingHandler() { return new Object[][] { {VERBOSE, "Error: server exchange handling failed: IOE ThrowingHandler" + System.lineSeparator()}, {INFO, "Error: server exchange handling failed: IOE ThrowingHandler" + System.lineSeparator()}, @@ -223,7 +224,8 @@ public class OutputFilterTest { * prevent retries on the client side, which would result in more than one * error message. */ - @Test(dataProvider = "throwingHandler") + @ParameterizedTest + @MethodSource("throwingHandler") public void testExchangeThrowingHandler(OutputLevel level, String expectedOutput) throws Exception { var baos = new ByteArrayOutputStream(); @@ -243,7 +245,7 @@ public class OutputFilterTest { } finally { server.stop(0); baos.flush(); - assertEquals(baos.toString(UTF_8), expectedOutput); + assertEquals(expectedOutput, baos.toString(UTF_8)); } } @@ -264,8 +266,8 @@ public class OutputFilterTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "aFile\u0000.txt")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().map().size(), 3); + assertEquals(404, response.statusCode()); + assertEquals(3, response.headers().map().size()); } finally { server.stop(0); baos.flush(); diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/RequestTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/RequestTest.java index cb740f4dd2a..5e29d7a3ddf 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/RequestTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/RequestTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,7 @@ /* * @test * @summary Tests for Request - * @run testng RequestTest + * @run junit RequestTest */ import java.io.InputStream; @@ -35,9 +35,10 @@ import java.util.AbstractMap; import java.util.List; import java.util.Map; import com.sun.net.httpserver.*; -import org.testng.annotations.Test; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertThrows; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import org.junit.jupiter.api.Test; public class RequestTest { @@ -46,8 +47,8 @@ public class RequestTest { var headers = new Headers(); Request request = new TestHttpExchange(headers); request = request.with("Foo", List.of("Bar")); - assertEquals(request.getRequestHeaders().size(), 1); - assertEquals(request.getRequestHeaders().get("Foo"), List.of("Bar")); + assertEquals(1, request.getRequestHeaders().size()); + assertEquals(List.of("Bar"), request.getRequestHeaders().get("Foo")); assertReadOnly(request.getRequestHeaders()); } @@ -57,9 +58,9 @@ public class RequestTest { headers.add("Foo", "Bar"); Request request = new TestHttpExchange(headers); request = request.with("X-Foo", List.of("Bar")); - assertEquals(request.getRequestHeaders().size(), 2); - assertEquals(request.getRequestHeaders().get("Foo"), List.of("Bar")); - assertEquals(request.getRequestHeaders().get("X-Foo"), List.of("Bar")); + assertEquals(2, request.getRequestHeaders().size()); + assertEquals(List.of("Bar"), request.getRequestHeaders().get("Foo")); + assertEquals(List.of("Bar"), request.getRequestHeaders().get("X-Foo")); assertReadOnly(request.getRequestHeaders()); } @@ -70,8 +71,8 @@ public class RequestTest { headers.add(headerName, "Bar"); Request request = new TestHttpExchange(headers); request = request.with(headerName, List.of("blahblahblah")); - assertEquals(request.getRequestHeaders().size(), 1); - assertEquals(request.getRequestHeaders().get(headerName), List.of("Bar")); + assertEquals(1, request.getRequestHeaders().size()); + assertEquals(List.of("Bar"), request.getRequestHeaders().get(headerName)); assertReadOnly(request.getRequestHeaders()); } @@ -83,11 +84,11 @@ public class RequestTest { request = request.with("Larry", List.of("a")) .with("Curly", List.of("b")) .with("Moe", List.of("c")); - assertEquals(request.getRequestHeaders().size(), 4); - assertEquals(request.getRequestHeaders().getFirst("Foo"), "Bar"); - assertEquals(request.getRequestHeaders().getFirst("Larry"), "a"); - assertEquals(request.getRequestHeaders().getFirst("Curly"), "b"); - assertEquals(request.getRequestHeaders().getFirst("Moe" ), "c"); + assertEquals(4, request.getRequestHeaders().size()); + assertEquals("Bar", request.getRequestHeaders().getFirst("Foo")); + assertEquals("a", request.getRequestHeaders().getFirst("Larry")); + assertEquals("b", request.getRequestHeaders().getFirst("Curly")); + assertEquals("c", request.getRequestHeaders().getFirst("Moe" )); assertReadOnly(request.getRequestHeaders()); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/ServerMimeTypesResolutionTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/ServerMimeTypesResolutionTest.java index baa7d17b505..dff0eb8c1d1 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/ServerMimeTypesResolutionTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/ServerMimeTypesResolutionTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,14 +39,14 @@ import java.util.stream.Collectors; import jdk.test.lib.net.URIBuilder; import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.SimpleFileServer; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import sun.net.www.MimeTable; import static java.net.http.HttpClient.Builder.NO_PROXY; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; /* * @test @@ -54,7 +54,7 @@ import static org.testng.Assert.assertTrue; * @modules java.base/sun.net.www:+open * @library /test/lib * @build jdk.test.lib.net.URIBuilder - * @run testng/othervm ServerMimeTypesResolutionTest + * @run junit/othervm ServerMimeTypesResolutionTest */ public class ServerMimeTypesResolutionTest { @@ -70,8 +70,8 @@ public class ServerMimeTypesResolutionTest { static final boolean ENABLE_LOGGING = true; static final Logger LOGGER = Logger.getLogger("com.sun.net.httpserver"); - @BeforeTest - public void setup() throws Exception { + @BeforeAll + public static void setup() throws Exception { if (ENABLE_LOGGING) { ConsoleHandler ch = new ConsoleHandler(); LOGGER.setLevel(Level.ALL); @@ -139,7 +139,7 @@ public class ServerMimeTypesResolutionTest { } @Test - public static void testMimeTypeHeaders() throws Exception { + public void testMimeTypeHeaders() throws Exception { final var server = SimpleFileServer.createFileServer(LOOPBACK_ADDR, root, SimpleFileServer.OutputLevel.VERBOSE); server.start(); try { @@ -163,8 +163,8 @@ public class ServerMimeTypesResolutionTest { final var uri = uri(server, toFileName(extension)); final var request = HttpRequest.newBuilder(uri).build(); final var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(),expectedMimeType); + assertEquals(200, response.statusCode()); + assertEquals(expectedMimeType, response.headers().firstValue("content-type").get()); } static URI uri(HttpServer server, String path) { @@ -176,7 +176,6 @@ public class ServerMimeTypesResolutionTest { .buildUnchecked(); } - @DataProvider public static Object[][] commonExtensions() { Set extensions = Set.of(".aac", ".abw", ".arc", ".avi", ".azw", ".bin", ".bmp", ".bz", ".bz2", ".csh", ".css", ".csv", ".doc", ".docx",".eot", ".epub", ".gz", ".gif", ".htm", ".html", ".ico", diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/SimpleFileServerTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/SimpleFileServerTest.java index 167fcd3b5d3..104b4ea0cbe 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/SimpleFileServerTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/SimpleFileServerTest.java @@ -26,7 +26,7 @@ * @summary Tests for SimpleFileServer * @library /test/lib * @build jdk.test.lib.Platform jdk.test.lib.net.URIBuilder - * @run testng/othervm SimpleFileServerTest + * @run junit/othervm SimpleFileServerTest */ import java.io.IOException; @@ -52,15 +52,17 @@ import com.sun.net.httpserver.SimpleFileServer.OutputLevel; import jdk.test.lib.Platform; import jdk.test.lib.net.URIBuilder; import jdk.test.lib.util.FileUtils; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; -import org.testng.SkipException; import static java.net.http.HttpClient.Builder.NO_PROXY; import static java.nio.charset.StandardCharsets.UTF_8; import static java.nio.file.StandardOpenOption.CREATE; -import static org.testng.Assert.*; + +import org.junit.jupiter.api.AfterAll; +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class SimpleFileServerTest { @@ -78,8 +80,8 @@ public class SimpleFileServerTest { static final String EXPECTED_LAST_MODIFIED_OF_FAVICON = "Mon, 23 May 1995 11:11:11 GMT"; - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (ENABLE_LOGGING) { ConsoleHandler ch = new ConsoleHandler(); LOGGER.setLevel(Level.ALL); @@ -105,11 +107,11 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "aFile.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), "some text"); - assertEquals(response.headers().firstValue("content-type").get(), "text/plain"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); + assertEquals(200, response.statusCode()); + assertEquals("some text", response.body()); + assertEquals("text/plain", response.headers().firstValue("content-type").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); } finally { server.stop(0); } @@ -134,11 +136,11 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), "text/html; charset=UTF-8"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); - assertEquals(response.body(), expectedBody); + assertEquals(200, response.statusCode()); + assertEquals("text/html; charset=UTF-8", response.headers().firstValue("content-type").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } @@ -155,9 +157,9 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "favicon.ico")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), "image/x-icon"); - assertEquals(response.headers().firstValue("last-modified").get(), EXPECTED_LAST_MODIFIED_OF_FAVICON); + assertEquals(200, response.statusCode()); + assertEquals("image/x-icon", response.headers().firstValue("content-type").get()); + assertEquals(EXPECTED_LAST_MODIFIED_OF_FAVICON, response.headers().firstValue("last-modified").get()); // expect custom (and broken) icon var file = Files.writeString(root.resolve("favicon.ico"), "broken icon", CREATE); @@ -165,19 +167,19 @@ public class SimpleFileServerTest { var lastModified = getLastModified(file); var expectedLength = Long.toString(Files.size(file)); response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), "application/octet-stream"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); + assertEquals(200, response.statusCode()); + assertEquals("application/octet-stream", response.headers().firstValue("content-type").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); } finally { Files.delete(file); } // expect built-in icon response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), "image/x-icon"); - assertEquals(response.headers().firstValue("last-modified").get(), EXPECTED_LAST_MODIFIED_OF_FAVICON); + assertEquals(200, response.statusCode()); + assertEquals("image/x-icon", response.headers().firstValue("content-type").get()); + assertEquals(EXPECTED_LAST_MODIFIED_OF_FAVICON, response.headers().firstValue("last-modified").get()); } finally { server.stop(0); } @@ -194,10 +196,10 @@ public class SimpleFileServerTest { var request = HttpRequest.newBuilder(uri(server, "favicon.ico")) .method("HEAD", BodyPublishers.noBody()).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), "image/x-icon"); - assertEquals(response.headers().firstValue("last-modified").get(), EXPECTED_LAST_MODIFIED_OF_FAVICON); - assertEquals(response.body(), ""); + assertEquals(200, response.statusCode()); + assertEquals("image/x-icon", response.headers().firstValue("content-type").get()); + assertEquals(EXPECTED_LAST_MODIFIED_OF_FAVICON, response.headers().firstValue("last-modified").get()); + assertEquals("", response.body()); } finally { server.stop(0); } @@ -217,11 +219,11 @@ public class SimpleFileServerTest { var request = HttpRequest.newBuilder(uri(server, "aFile.txt")) .method("HEAD", BodyPublishers.noBody()).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), "text/plain"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); - assertEquals(response.body(), ""); + assertEquals(200, response.statusCode()); + assertEquals("text/plain", response.headers().firstValue("content-type").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); + assertEquals("", response.body()); } finally { server.stop(0); } @@ -247,18 +249,17 @@ public class SimpleFileServerTest { var request = HttpRequest.newBuilder(uri(server, "")) .method("HEAD", BodyPublishers.noBody()).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), "text/html; charset=UTF-8"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); - assertEquals(response.body(), ""); + assertEquals(200, response.statusCode()); + assertEquals("text/html; charset=UTF-8", response.headers().firstValue("content-type").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); + assertEquals("", response.body()); } finally { server.stop(0); } } - @DataProvider - public Object[][] indexFiles() { + public static Object[][] indexFiles() { var fileContent = openHTML + """

This is an index file

""" + closeHTML; @@ -274,7 +275,8 @@ public class SimpleFileServerTest { }; } - @Test(dataProvider = "indexFiles") + @ParameterizedTest + @MethodSource("indexFiles") public void testDirectoryWithIndexGET(String id, String filename, String contentType, @@ -294,11 +296,11 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), contentType); - assertEquals(response.headers().firstValue("content-length").get(), contentLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); - assertEquals(response.body(), expectedBody); + assertEquals(200, response.statusCode()); + assertEquals(contentType, response.headers().firstValue("content-type").get()); + assertEquals(contentLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); if (serveIndexFile) { @@ -309,9 +311,7 @@ public class SimpleFileServerTest { @Test public void testNotReadableFileGET() throws Exception { - if (Platform.isWindows()) { - throw new SkipException("Not applicable on Windows"); - } + Assumptions.assumeFalse(Platform.isWindows(), "Not applicable on Windows"); var expectedBody = openHTML + """

File not found

/aFile.txt

@@ -329,9 +329,9 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "aFile.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); file.toFile().setReadable(true, false); @@ -340,9 +340,7 @@ public class SimpleFileServerTest { @Test public void testNotReadableSegmentGET() throws Exception { - if (Platform.isWindows()) { - throw new SkipException("Not applicable on Windows"); - } + Assumptions.assumeFalse(Platform.isWindows(), "Not applicable on Windows"); var expectedBody = openHTML + """

File not found

/dir/aFile.txt

@@ -362,9 +360,9 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "dir/aFile.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); dir.toFile().setReadable(true, false); @@ -386,9 +384,9 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "aFile?#.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } @@ -409,9 +407,9 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "doesNotExist.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } @@ -433,9 +431,9 @@ public class SimpleFileServerTest { var request = HttpRequest.newBuilder(uri(server, "doesNotExist.txt")) .method("HEAD", BodyPublishers.noBody()).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), ""); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals("", response.body()); } finally { server.stop(0); } @@ -459,9 +457,9 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "symlink")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } @@ -486,21 +484,21 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "symlink/aFile.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } } - private void createSymLink(Path symlink, Path target) { + private static void createSymLink(Path symlink, Path target) { try { Files.createSymbolicLink(symlink, target); } catch (UnsupportedOperationException uoe) { - throw new SkipException("sym link creation not supported", uoe); + Assumptions.abort("sym link creation not supported"); } catch (IOException ioe) { - throw new SkipException("probably insufficient privileges to create sym links (Windows)", ioe); + Assumptions.abort("probably insufficient privileges to create sym links (Windows)"); } } @@ -523,9 +521,9 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, fileName)).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } @@ -547,15 +545,15 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, ".hiddenDirectory/aFile.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); } } - private Path createHiddenFile(Path root) throws IOException { + private static Path createHiddenFile(Path root) throws IOException { Path file; if (Platform.isWindows()) { file = Files.createFile(root.resolve("aFile.txt")); @@ -567,7 +565,7 @@ public class SimpleFileServerTest { return file; } - private Path createFileInHiddenDirectory(Path root) throws IOException { + private static Path createFileInHiddenDirectory(Path root) throws IOException { Path dir; Path file; if (Platform.isWindows()) { @@ -602,17 +600,17 @@ public class SimpleFileServerTest { var uri = uri(server, "aDirectory"); var request = HttpRequest.newBuilder(uri).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 301); - assertEquals(response.headers().firstValue("content-length").get(), "0"); - assertEquals(response.headers().firstValue("location").get(), "/aDirectory/"); + assertEquals(301, response.statusCode()); + assertEquals("0", response.headers().firstValue("content-length").get()); + assertEquals("/aDirectory/", response.headers().firstValue("location").get()); // tests that query component is preserved during redirect var uri2 = uri(server, "aDirectory", "query"); var req2 = HttpRequest.newBuilder(uri2).build(); var res2 = client.send(req2, BodyHandlers.ofString()); - assertEquals(res2.statusCode(), 301); - assertEquals(res2.headers().firstValue("content-length").get(), "0"); - assertEquals(res2.headers().firstValue("location").get(), "/aDirectory/?query"); + assertEquals(301, res2.statusCode()); + assertEquals("0", res2.headers().firstValue("content-length").get()); + assertEquals("/aDirectory/?query", res2.headers().firstValue("location").get()); } { // tests that redirect to returned relative URI works @@ -621,10 +619,10 @@ public class SimpleFileServerTest { var uri = uri(server, "aDirectory"); var request = HttpRequest.newBuilder(uri).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.body(), expectedBody); - assertEquals(response.headers().firstValue("content-type").get(), "text/html; charset=UTF-8"); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); + assertEquals(200, response.statusCode()); + assertEquals(expectedBody, response.body()); + assertEquals("text/html; charset=UTF-8", response.headers().firstValue("content-type").get()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); } } finally { server.stop(0); @@ -673,28 +671,26 @@ public class SimpleFileServerTest { { // not a directory Path p = Files.createFile(TEST_DIR.resolve("aFile")); assert !Files.isDirectory(p); - var iae = expectThrows(IAE, () -> SimpleFileServer.createFileServer(addr, p, OutputLevel.INFO)); + var iae = assertThrows(IAE, () -> SimpleFileServer.createFileServer(addr, p, OutputLevel.INFO)); assertTrue(iae.getMessage().contains("not a directory")); } { // does not exist Path p = TEST_DIR.resolve("doesNotExist"); assert !Files.exists(p); - var iae = expectThrows(IAE, () -> SimpleFileServer.createFileServer(addr, p, OutputLevel.INFO)); + var iae = assertThrows(IAE, () -> SimpleFileServer.createFileServer(addr, p, OutputLevel.INFO)); assertTrue(iae.getMessage().contains("does not exist")); } } @Test public void testNonReadablePath() throws Exception { - if (Platform.isWindows()) { - throw new SkipException("Not applicable on Windows"); - } + Assumptions.assumeFalse(Platform.isWindows(), "Not applicable on Windows"); var addr = LOOPBACK_ADDR; Path p = Files.createDirectory(TEST_DIR.resolve("aDir")); p.toFile().setReadable(false, false); assert !Files.isReadable(p); try { - var iae = expectThrows(IAE, () -> SimpleFileServer.createFileServer(addr, p, OutputLevel.INFO)); + var iae = assertThrows(IAE, () -> SimpleFileServer.createFileServer(addr, p, OutputLevel.INFO)); assertTrue(iae.getMessage().contains("not readable")); } finally { p.toFile().setReadable(true, false); @@ -718,7 +714,7 @@ public class SimpleFileServerTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "beginDelim%3C%3EEndDelim")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); + assertEquals(404, response.statusCode()); assertTrue(response.body().contains("beginDelim%3C%3EEndDelim")); assertTrue(response.body().contains("File not found")); } finally { @@ -726,8 +722,8 @@ public class SimpleFileServerTest { } } - @AfterTest - public void teardown() throws IOException { + @AfterAll + public static void teardown() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/StressDirListings.java b/test/jdk/com/sun/net/httpserver/simpleserver/StressDirListings.java index 18a1f060c48..23442ab6b20 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/StressDirListings.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/StressDirListings.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,7 +25,7 @@ * @test * @summary Test to stress directory listings * @library /test/lib - * @run testng/othervm/timeout=180 StressDirListings + * @run junit/othervm/timeout=180 StressDirListings */ import java.io.IOException; @@ -43,12 +43,13 @@ import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.SimpleFileServer; import com.sun.net.httpserver.SimpleFileServer.OutputLevel; import jdk.test.lib.net.URIBuilder; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; import static java.lang.System.out; import static java.net.http.HttpClient.Builder.NO_PROXY; -import static org.testng.Assert.assertEquals; + +import org.junit.jupiter.api.AfterAll; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; public class StressDirListings { @@ -66,10 +67,10 @@ public class StressDirListings { return String.format("[%d s, %d ms, %d ns] ", secs, mill, nan); } - HttpServer simpleFileServer; + static HttpServer simpleFileServer; - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { out.println(now() + " creating server"); if (ENABLE_LOGGING) { ConsoleHandler ch = new ConsoleHandler(); @@ -82,8 +83,8 @@ public class StressDirListings { out.println(now() + " server started"); } - @AfterTest - public void teardown() { + @AfterAll + public static void teardown() { out.println(now() + " stopping server"); simpleFileServer.stop(0); out.println(now() + " server stopped"); @@ -105,7 +106,7 @@ public class StressDirListings { var request = HttpRequest.newBuilder(uri(simpleFileServer)).build(); for (int i=0; iThis is an index file """ + closeHTML; @@ -212,7 +213,8 @@ public class ZipFileSystemTest { }; } - @Test(dataProvider = "indexFiles") + @ParameterizedTest + @MethodSource("indexFiles") public void testDirectoryWithIndexGET(String id, String filename, String contentType, @@ -232,11 +234,11 @@ public class ZipFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 200); - assertEquals(response.headers().firstValue("content-type").get(), contentType); - assertEquals(response.headers().firstValue("content-length").get(), contentLength); - assertEquals(response.headers().firstValue("last-modified").get(), lastModified); - assertEquals(response.body(), expectedBody); + assertEquals(200, response.statusCode()); + assertEquals(contentType, response.headers().firstValue("content-type").get()); + assertEquals(contentLength, response.headers().firstValue("content-length").get()); + assertEquals(lastModified, response.headers().firstValue("last-modified").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); if (serveIndexFile) { @@ -265,9 +267,9 @@ public class ZipFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "aFile?#.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); root.getFileSystem().close(); @@ -290,9 +292,9 @@ public class ZipFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "doesNotExist.txt")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), expectedBody); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals(expectedBody, response.body()); } finally { server.stop(0); root.getFileSystem().close(); @@ -317,9 +319,9 @@ public class ZipFileSystemTest { var request = HttpRequest.newBuilder(uri(server, "doesNotExist.txt")) .method("HEAD", BodyPublishers.noBody()).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); - assertEquals(response.headers().firstValue("content-length").get(), expectedLength); - assertEquals(response.body(), ""); + assertEquals(404, response.statusCode()); + assertEquals(expectedLength, response.headers().firstValue("content-length").get()); + assertEquals("", response.body()); } finally { server.stop(0); root.getFileSystem().close(); @@ -339,9 +341,9 @@ public class ZipFileSystemTest { var uri = uri(server, "aDirectory"); var request = HttpRequest.newBuilder(uri).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 301); - assertEquals(response.headers().firstValue("content-length").get(), "0"); - assertEquals(response.headers().firstValue("location").get(), "/aDirectory/"); + assertEquals(301, response.statusCode()); + assertEquals("0", response.headers().firstValue("content-length").get()); + assertEquals("/aDirectory/", response.headers().firstValue("location").get()); } finally { server.stop(0); root.getFileSystem().close(); @@ -366,7 +368,7 @@ public class ZipFileSystemTest { var client = HttpClient.newBuilder().proxy(NO_PROXY).build(); var request = HttpRequest.newBuilder(uri(server, "beginDelim%3C%3EEndDelim")).build(); var response = client.send(request, BodyHandlers.ofString()); - assertEquals(response.statusCode(), 404); + assertEquals(404, response.statusCode()); assertTrue(response.body().contains("beginDelim%3C%3EEndDelim")); assertTrue(response.body().contains("File not found")); } finally { @@ -376,8 +378,8 @@ public class ZipFileSystemTest { } } - @AfterTest - public void teardown() throws IOException { + @AfterAll + public static void teardown() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLineNegativeTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLineNegativeTest.java index da01b1542d8..22812ae0117 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLineNegativeTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLineNegativeTest.java @@ -26,7 +26,7 @@ * @summary Negative tests for the jwebserver command-line tool * @library /test/lib * @modules jdk.httpserver - * @run testng/othervm CommandLineNegativeTest + * @run junit/othervm CommandLineNegativeTest */ import java.io.IOException; @@ -37,13 +37,14 @@ import jdk.test.lib.Platform; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.util.FileUtils; -import org.testng.SkipException; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import static java.lang.System.out; -import static org.testng.Assert.assertFalse; + +import org.junit.jupiter.api.AfterAll; +import static org.junit.jupiter.api.Assertions.assertFalse; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class CommandLineNegativeTest { @@ -55,8 +56,8 @@ public class CommandLineNegativeTest { static final Path TEST_FILE = TEST_DIR.resolve("file.txt"); static final String LOOPBACK_ADDR = InetAddress.getLoopbackAddress().getHostAddress(); - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } @@ -64,15 +65,15 @@ public class CommandLineNegativeTest { Files.createFile(TEST_FILE); } - @DataProvider - public Object[][] unknownOption() { + public static Object[][] unknownOption() { return new Object[][] { {"--unknownOption"}, {"null"} }; } - @Test(dataProvider = "unknownOption") + @ParameterizedTest + @MethodSource("unknownOption") public void testBadOption(String opt) throws Throwable { out.println("\n--- testUnknownOption, opt=\"%s\" ".formatted(opt)); simpleserver(JWEBSERVER, LOCALE_OPT, opt) @@ -80,8 +81,7 @@ public class CommandLineNegativeTest { .shouldContain("Error: unknown option: " + opt); } - @DataProvider - public Object[][] tooManyOptionArgs() { + public static Object[][] tooManyOptionArgs() { return new Object[][] { {"-b", "localhost"}, {"-d", "/some/path"}, @@ -95,7 +95,8 @@ public class CommandLineNegativeTest { }; } - @Test(dataProvider = "tooManyOptionArgs") + @ParameterizedTest + @MethodSource("tooManyOptionArgs") public void testTooManyOptionArgs(String opt, String arg) throws Throwable { out.println("\n--- testTooManyOptionArgs, opt=\"%s\" ".formatted(opt)); simpleserver(JWEBSERVER, LOCALE_OPT, opt, arg, arg) @@ -103,8 +104,7 @@ public class CommandLineNegativeTest { .shouldContain("Error: unknown option: " + arg); } - @DataProvider - public Object[][] noArg() { + public static Object[][] noArg() { return new Object[][] { {"-b", """ -b, --bind-address - Address to bind to. Default: %s (loopback). @@ -122,7 +122,8 @@ public class CommandLineNegativeTest { }; } - @Test(dataProvider = "noArg") + @ParameterizedTest + @MethodSource("noArg") public void testNoArg(String opt, String msg) throws Throwable { out.println("\n--- testNoArg, opt=\"%s\" ".formatted(opt)); simpleserver(JWEBSERVER, LOCALE_OPT, opt) @@ -131,8 +132,7 @@ public class CommandLineNegativeTest { .shouldContain(msg); } - @DataProvider - public Object[][] invalidValue() { + public static Object[][] invalidValue() { return new Object[][] { {"-b", "[127.0.0.1]"}, {"-b", "badhost"}, @@ -146,7 +146,8 @@ public class CommandLineNegativeTest { }; } - @Test(dataProvider = "invalidValue") + @ParameterizedTest + @MethodSource("invalidValue") public void testInvalidValue(String opt, String val) throws Throwable { out.println("\n--- testInvalidValue, opt=\"%s\" ".formatted(opt)); simpleserver(JWEBSERVER, LOCALE_OPT, opt, val) @@ -154,10 +155,10 @@ public class CommandLineNegativeTest { .shouldContain("Error: invalid value given for " + opt + ": " + val); } - @DataProvider - public Object[][] portOptions() { return new Object[][] {{"-p"}, {"--port"}}; } + public static Object[][] portOptions() { return new Object[][] {{"-p"}, {"--port"}}; } - @Test(dataProvider = "portOptions") + @ParameterizedTest + @MethodSource("portOptions") public void testPortOutOfRange(String opt) throws Throwable { out.println("\n--- testPortOutOfRange, opt=\"%s\" ".formatted(opt)); simpleserver(JWEBSERVER, LOCALE_OPT, opt, "65536") // range 0 to 65535 @@ -165,10 +166,10 @@ public class CommandLineNegativeTest { .shouldContain("Error: server config failed: " + "port out of range:65536"); } - @DataProvider - public Object[][] directoryOptions() { return new Object[][] {{"-d"}, {"--directory"}}; } + public static Object[][] directoryOptions() { return new Object[][] {{"-d"}, {"--directory"}}; } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testRootNotADirectory(String opt) throws Throwable { out.println("\n--- testRootNotADirectory, opt=\"%s\" ".formatted(opt)); var file = TEST_FILE.toString(); @@ -178,7 +179,8 @@ public class CommandLineNegativeTest { .shouldContain("Error: server config failed: " + "Path is not a directory: " + file); } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testRootDoesNotExist(String opt) throws Throwable { out.println("\n--- testRootDoesNotExist, opt=\"%s\" ".formatted(opt)); Path root = TEST_DIR.resolve("not/existent/dir"); @@ -188,14 +190,12 @@ public class CommandLineNegativeTest { .shouldContain("Error: server config failed: " + "Path does not exist: " + root.toString()); } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testRootNotReadable(String opt) throws Throwable { out.println("\n--- testRootNotReadable, opt=\"%s\" ".formatted(opt)); - if (Platform.isWindows()) { - // Not applicable to Windows. Reason: cannot revoke an owner's read - // access to a directory that was created by that owner - throw new SkipException("cannot run on Windows"); - } + Assumptions.assumeFalse(Platform.isWindows(), "cannot run on Windows"); // Not applicable to Windows. Reason: cannot revoke an owner's read + // access to a directory that was created by that owner Path root = Files.createDirectories(TEST_DIR.resolve("not/readable/dir")); try { root.toFile().setReadable(false, false); @@ -208,8 +208,8 @@ public class CommandLineNegativeTest { } } - @AfterTest - public void teardown() throws IOException { + @AfterAll + public static void teardown() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLinePortNotSpecifiedTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLinePortNotSpecifiedTest.java index cd2ccbeded4..f6250d63908 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLinePortNotSpecifiedTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLinePortNotSpecifiedTest.java @@ -27,7 +27,7 @@ * @summary Tests the jwebserver tool with port not specified * @modules jdk.httpserver * @library /test/lib - * @run testng/othervm/manual CommandLinePortNotSpecifiedTest + * @run junit/othervm/manual CommandLinePortNotSpecifiedTest */ import java.io.IOException; @@ -39,11 +39,12 @@ import jdk.test.lib.Platform; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.util.FileUtils; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; import static java.lang.System.out; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + public class CommandLinePortNotSpecifiedTest { static final Path JAVA_HOME = Path.of(System.getProperty("java.home")); @@ -55,8 +56,8 @@ public class CommandLinePortNotSpecifiedTest { static final String TEST_DIR_STR = TEST_DIR.toString(); static final String LOOPBACK_ADDR = InetAddress.getLoopbackAddress().getHostAddress(); - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } @@ -92,8 +93,8 @@ public class CommandLinePortNotSpecifiedTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @AfterTest - public void teardown() throws IOException { + @AfterAll + public static void teardown() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLinePositiveTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLinePositiveTest.java index c0b0b4bc768..8110f5d9b10 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLinePositiveTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/CommandLinePositiveTest.java @@ -27,7 +27,7 @@ * @library /test/lib * @build jdk.test.lib.net.IPSupport * @modules jdk.httpserver - * @run testng/othervm CommandLinePositiveTest + * @run junit/othervm CommandLinePositiveTest */ import java.io.IOException; @@ -41,12 +41,13 @@ import jdk.test.lib.net.IPSupport; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.util.FileUtils; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import static java.lang.System.out; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + public class CommandLinePositiveTest { static final String JAVA_VERSION = System.getProperty("java.version"); @@ -84,8 +85,8 @@ public class CommandLinePositiveTest { static final String LOOPBACK_ADDR = InetAddress.getLoopbackAddress().getHostAddress(); - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (Files.exists(ROOT_DIR)) { FileUtils.deleteFileTreeWithRetry(ROOT_DIR); } @@ -105,16 +106,17 @@ public class CommandLinePositiveTest { } } - @DataProvider - public Object[][] directoryOptions() { return new Object[][] {{"-d"}, {"--directory"}}; } + public static Object[][] directoryOptions() { return new Object[][] {{"-d"}, {"--directory"}}; } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testAbsDirectory(String opt) throws Throwable { out.printf("\n--- testAbsDirectory, opt=\"%s\"%n", opt); testDirectory(opt, ROOT_DIR_STR); } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testRelDirectory(String opt) throws Throwable { out.printf("\n--- testRelDirectory, opt=\"%s\"%n", opt); Path rootRelDir = CWD.relativize(ROOT_DIR); @@ -129,10 +131,10 @@ public class CommandLinePositiveTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @DataProvider - public Object[][] portOptions() { return new Object[][] {{"-p"}, {"--port"}}; } + public static Object[][] portOptions() { return new Object[][] {{"-p"}, {"--port"}}; } - @Test(dataProvider = "portOptions") + @ParameterizedTest + @MethodSource("portOptions") public void testPort(String opt) throws Throwable { out.println("\n--- testPort, opt=\"%s\" ".formatted(opt)); simpleserver(JWEBSERVER, LOCALE_OPT, opt, "0") @@ -142,8 +144,7 @@ public class CommandLinePositiveTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @DataProvider - public Object[][] helpOptions() { return new Object[][] {{"-h"}, {"-?"}, {"--help"}}; } + public static Object[][] helpOptions() { return new Object[][] {{"-h"}, {"-?"}, {"--help"}}; } static final String USAGE_TEXT = """ Usage: jwebserver [-b bind address] [-p port] [-d directory] @@ -161,7 +162,8 @@ public class CommandLinePositiveTest { -version, --version - Prints version information and exits. To stop the server, press Ctrl + C.""".formatted(LOOPBACK_ADDR); - @Test(dataProvider = "helpOptions") + @ParameterizedTest + @MethodSource("helpOptions") public void testHelp(String opt) throws Throwable { out.println("\n--- testHelp, opt=\"%s\" ".formatted(opt)); simpleserver(WaitForLine.HELP_STARTUP_LINE, @@ -172,10 +174,10 @@ public class CommandLinePositiveTest { .shouldContain(OPTIONS_TEXT); } - @DataProvider - public Object[][] versionOptions() { return new Object[][] {{"-version"}, {"--version"}}; } + public static Object[][] versionOptions() { return new Object[][] {{"-version"}, {"--version"}}; } - @Test(dataProvider = "versionOptions") + @ParameterizedTest + @MethodSource("versionOptions") public void testVersion(String opt) throws Throwable { out.println("\n--- testVersion, opt=\"%s\" ".formatted(opt)); simpleserver(WaitForLine.VERSION_STARTUP_LINE, @@ -184,10 +186,10 @@ public class CommandLinePositiveTest { .shouldHaveExitValue(0); } - @DataProvider - public Object[][] bindOptions() { return new Object[][] {{"-b"}, {"--bind-address"}}; } + public static Object[][] bindOptions() { return new Object[][] {{"-b"}, {"--bind-address"}}; } - @Test(dataProvider = "bindOptions") + @ParameterizedTest + @MethodSource("bindOptions") public void testBindAllInterfaces(String opt) throws Throwable { out.println("\n--- testBindAllInterfaces, opt=\"%s\" ".formatted(opt)); simpleserver(JWEBSERVER, LOCALE_OPT, "-p", "0", opt, "0.0.0.0") @@ -202,7 +204,8 @@ public class CommandLinePositiveTest { } } - @Test(dataProvider = "bindOptions") + @ParameterizedTest + @MethodSource("bindOptions") public void testLastOneWinsBindAddress(String opt) throws Throwable { out.println("\n--- testLastOneWinsBindAddress, opt=\"%s\" ".formatted(opt)); simpleserver(JWEBSERVER, LOCALE_OPT, "-p", "0", opt, "123.4.5.6", opt, LOOPBACK_ADDR) @@ -212,7 +215,8 @@ public class CommandLinePositiveTest { } - @Test(dataProvider = "directoryOptions") + @ParameterizedTest + @MethodSource("directoryOptions") public void testLastOneWinsDirectory(String opt) throws Throwable { out.println("\n--- testLastOneWinsDirectory, opt=\"%s\" ".formatted(opt)); simpleserver(JWEBSERVER, LOCALE_OPT, "-p", "0", opt, CWD_STR, opt, CWD_STR) @@ -222,10 +226,10 @@ public class CommandLinePositiveTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @DataProvider - public Object[][] outputOptions() { return new Object[][] {{"-o"}, {"--output"}}; } + public static Object[][] outputOptions() { return new Object[][] {{"-o"}, {"--output"}}; } - @Test(dataProvider = "outputOptions") + @ParameterizedTest + @MethodSource("outputOptions") public void testLastOneWinsOutput(String opt) throws Throwable { out.println("\n--- testLastOneWinsOutput, opt=\"%s\" ".formatted(opt)); simpleserver(JWEBSERVER, LOCALE_OPT, "-p", "0", opt, "none", opt, "verbose") @@ -235,7 +239,8 @@ public class CommandLinePositiveTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @Test(dataProvider = "portOptions") + @ParameterizedTest + @MethodSource("portOptions") public void testLastOneWinsPort(String opt) throws Throwable { out.println("\n--- testLastOneWinsPort, opt=\"%s\" ".formatted(opt)); simpleserver(JWEBSERVER, LOCALE_OPT, opt, "-999", opt, "0") @@ -245,8 +250,8 @@ public class CommandLinePositiveTest { .shouldContain("URL http://" + LOOPBACK_ADDR); } - @AfterTest - public void teardown() throws IOException { + @AfterAll + public static void teardown() throws IOException { if (Files.exists(ROOT_DIR)) { FileUtils.deleteFileTreeWithRetry(ROOT_DIR); } diff --git a/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/MaxRequestTimeTest.java b/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/MaxRequestTimeTest.java index 695843de8b0..c19ca632bf3 100644 --- a/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/MaxRequestTimeTest.java +++ b/test/jdk/com/sun/net/httpserver/simpleserver/jwebserver/MaxRequestTimeTest.java @@ -27,7 +27,7 @@ * @summary Tests the jwebserver's maximum request time * @modules jdk.httpserver * @library /test/lib - * @run testng/othervm MaxRequestTimeTest + * @run junit/othervm MaxRequestTimeTest */ import java.io.IOException; @@ -47,12 +47,13 @@ import jdk.test.lib.net.SimpleSSLContext; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; import jdk.test.lib.util.FileUtils; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; -import org.testng.annotations.Test; import static java.lang.System.out; import static java.net.http.HttpClient.Builder.NO_PROXY; -import static org.testng.Assert.*; + +import org.junit.jupiter.api.AfterAll; +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; /** * This test confirms that the jwebserver does not wait indefinitely for @@ -80,8 +81,8 @@ public class MaxRequestTimeTest { private static final SSLContext sslContext = SimpleSSLContext.findSSLContext(); - @BeforeTest - public void setup() throws IOException { + @BeforeAll + public static void setup() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); } @@ -118,17 +119,17 @@ public class MaxRequestTimeTest { """; - void sendHTTPRequest() throws IOException, InterruptedException { + static void sendHTTPRequest() throws IOException, InterruptedException { out.println("\n--- sendHTTPRequest"); var client = HttpClient.newBuilder() .proxy(NO_PROXY) .build(); var request = HttpRequest.newBuilder(URI.create("http://localhost:" + PORT.get() + "/")).build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - assertEquals(response.body(), expectedBody); + assertEquals(expectedBody, response.body()); } - void sendHTTPSRequest() throws IOException, InterruptedException { + static void sendHTTPSRequest() throws IOException, InterruptedException { out.println("\n--- sendHTTPSRequest"); var client = HttpClient.newBuilder() .sslContext(sslContext) @@ -143,8 +144,8 @@ public class MaxRequestTimeTest { } } - @AfterTest - public void teardown() throws IOException { + @AfterAll + public static void teardown() throws IOException { if (Files.exists(TEST_DIR)) { FileUtils.deleteFileTreeWithRetry(TEST_DIR); }