From 8c74239144dd5220bb091b87b510b227f9d8c700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Volkan=20Yaz=C4=B1c=C4=B1?= Date: Mon, 3 Feb 2025 11:22:41 +0100 Subject: [PATCH 1/4] Verify `copy()` in `HttpRequestBuilderTest` --- .../httpclient/HttpRequestBuilderTest.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java b/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java index 1bb26def17d88..b219765b4e2f5 100644 --- a/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java +++ b/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java @@ -25,6 +25,8 @@ import java.net.http.HttpClient; import java.time.Duration; import java.util.Arrays; +import java.util.List; +import java.util.Map; import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Supplier; @@ -269,6 +271,9 @@ public static void main(String[] args) throws Exception { if (defaultHeadReq.bodyPublisher().isEmpty()) { throw new AssertionError("failed: missing bodyPublisher on HEAD request"); } + + verifyCopy(); + } private static boolean shouldFail(Class ...exceptions) { @@ -378,6 +383,38 @@ public static R test2(String name, R receiver, BiFunction } } + private static void verifyCopy() { + + // Create the request builder + HttpRequest.Builder requestBuilder = HttpRequest + .newBuilder(TEST_URI) + .header("X-Foo", "1") + .method("GET", noBody()) + .expectContinue(true) + .timeout(Duration.ofSeconds(0xBEEF)) + .version(HttpClient.Version.HTTP_2); + + // Create the original and the _copy_ requests + HttpRequest request = requestBuilder.build(); + HttpRequest copiedRequest = requestBuilder + .copy() + .header("X-Foo", "2") + .header("X-Bar", "3") + .build(); + + // Verify copied _references_ + assert request.uri().equals(copiedRequest.uri()); + assert request.method().equals(copiedRequest.method()); + assert request.expectContinue() == copiedRequest.expectContinue(); + assert request.timeout().equals(copiedRequest.timeout()); + assert request.version().equals(copiedRequest.version()); + + // Verify headers + assert request.headers().map().equals(Map.of("X-Foo", List.of("1"))); + assert copiedRequest.headers().map().equals(Map.of("X-Foo", List.of("1", "2"), "X-Bar", List.of("3"))); + + } + // doesn't override the default HEAD() method private static final class NotOverriddenHEADImpl implements HttpRequest.Builder { private final HttpRequest.Builder underlying = HttpRequest.newBuilder(); From 9606b4ee6ec9ea0b7beedb367fd57ffb9f767dcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Volkan=20Yaz=C4=B1c=C4=B1?= Date: Mon, 3 Feb 2025 12:00:45 +0100 Subject: [PATCH 2/4] Update copyright year --- test/jdk/java/net/httpclient/HttpRequestBuilderTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java b/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java index b219765b4e2f5..39a21cb0291da 100644 --- a/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java +++ b/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 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 @@ -36,11 +36,12 @@ import static java.net.http.HttpRequest.BodyPublishers.ofString; import static java.net.http.HttpRequest.BodyPublishers.noBody; -/** +/* * @test * @bug 8170064 8276559 - * @summary HttpRequest[.Builder] API and behaviour checks + * @summary HttpRequest[.Builder] API and behaviour checks */ + public class HttpRequestBuilderTest { static final URI TEST_URI = URI.create("http://www.foo.com/"); From 5eddbf7d4477cf997111b4dae8b3cb112216fadc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Volkan=20Yaz=C4=B1c=C4=B1?= Date: Tue, 4 Feb 2025 12:02:52 +0100 Subject: [PATCH 3/4] Replace `assert`s with explicit checks throwing `AssertionError`s --- .../httpclient/HttpRequestBuilderTest.java | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java b/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java index 39a21cb0291da..b54900f5cd0eb 100644 --- a/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java +++ b/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java @@ -27,6 +27,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Supplier; @@ -265,13 +266,8 @@ public static void main(String[] args) throws Exception { // verify that the default HEAD() method implementation in HttpRequest.Builder // interface works as expected HttpRequest defaultHeadReq = new NotOverriddenHEADImpl().HEAD().uri(TEST_URI).build(); - String actualMethod = defaultHeadReq.method(); - if (!actualMethod.equals("HEAD")) { - throw new AssertionError("failed: expected HEAD method but got method: " + actualMethod); - } - if (defaultHeadReq.bodyPublisher().isEmpty()) { - throw new AssertionError("failed: missing bodyPublisher on HEAD request"); - } + assertEquals("HEAD", defaultHeadReq.method(), "Method"); + assertEquals(defaultHeadReq.bodyPublisher().isEmpty(), false, "Body publisher absence"); verifyCopy(); @@ -301,13 +297,7 @@ static void method(String name, throw new AssertionError("failed: " + name + ". Unexpected body processor for GET: " + request.bodyPublisher().get()); - - if (expectedMethod.equals(method)) { - System.out.println("success: " + name); - } else { - throw new AssertionError("failed: " + name - + ". Expected " + expectedMethod + ", got " + method); - } + assertEquals(method, expectedMethod, "Method"); } static void test0(String name, @@ -404,16 +394,23 @@ private static void verifyCopy() { .build(); // Verify copied _references_ - assert request.uri().equals(copiedRequest.uri()); - assert request.method().equals(copiedRequest.method()); - assert request.expectContinue() == copiedRequest.expectContinue(); - assert request.timeout().equals(copiedRequest.timeout()); - assert request.version().equals(copiedRequest.version()); + assertEquals(request.uri(), copiedRequest.uri(), "URI"); + assertEquals(request.method(), copiedRequest.method(), "Method"); + assertEquals(request.expectContinue(), copiedRequest.expectContinue(), "Expect continue setting"); + assertEquals(request.timeout(), copiedRequest.timeout(), "Timeout"); + assertEquals(request.version(), copiedRequest.version(), "Version"); // Verify headers - assert request.headers().map().equals(Map.of("X-Foo", List.of("1"))); - assert copiedRequest.headers().map().equals(Map.of("X-Foo", List.of("1", "2"), "X-Bar", List.of("3"))); + assertEquals(request.headers().map(), Map.of("X-Foo", List.of("1")), "Request headers"); + assertEquals(copiedRequest.headers().map(), Map.of("X-Foo", List.of("1", "2"), "X-Bar", List.of("3")), "Copied request headers"); + + } + private static void assertEquals(Object expected, Object actual, Object name) { + if (!Objects.equals(expected, actual)) { + String message = String.format("%s mismatch!%nExpected: %s%nActual: %s", name, expected, actual); + throw new AssertionError(message); + } } // doesn't override the default HEAD() method From 9f7b054b0e96244aea374dbf2555f2a03f61cab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Volkan=20Yaz=C4=B1c=C4=B1?= Date: Tue, 4 Feb 2025 13:18:55 +0100 Subject: [PATCH 4/4] Fix `assertEquals()` argument order --- test/jdk/java/net/httpclient/HttpRequestBuilderTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java b/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java index b54900f5cd0eb..9401c10cdf21f 100644 --- a/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java +++ b/test/jdk/java/net/httpclient/HttpRequestBuilderTest.java @@ -267,7 +267,7 @@ public static void main(String[] args) throws Exception { // interface works as expected HttpRequest defaultHeadReq = new NotOverriddenHEADImpl().HEAD().uri(TEST_URI).build(); assertEquals("HEAD", defaultHeadReq.method(), "Method"); - assertEquals(defaultHeadReq.bodyPublisher().isEmpty(), false, "Body publisher absence"); + assertEquals(false, defaultHeadReq.bodyPublisher().isEmpty(), "Body publisher absence"); verifyCopy(); @@ -297,7 +297,7 @@ static void method(String name, throw new AssertionError("failed: " + name + ". Unexpected body processor for GET: " + request.bodyPublisher().get()); - assertEquals(method, expectedMethod, "Method"); + assertEquals(expectedMethod, method, "Method"); } static void test0(String name,