On Wed, 2 Apr 2025 11:08:38 GMT, Jaikiran Pai <j...@openjdk.org> wrote:
>> Volkan Yazici has updated the pull request incrementally with one additional >> commit since the last revision: >> >> Apply review suggestions > > src/java.net.http/share/classes/jdk/internal/net/http/HttpConnection.java > line 114: > >> 112: >> 113: private static String nextLabel() { >> 114: return "" + LABEL_COUNTER.getAndIncrement(); > > The first label that this will generate will be `0`. It might be OK, but I > think it would be better if we start it as `1`. So maybe consider using > `LABEL_COUNTER.incrementAndGet()` instead? Implemented in d64a901cf508ed7feeb0290733c61628d2ef9837. > test/jdk/java/net/httpclient/HttpResponseConnectionLabelTest.java line 68: > >> 66: import static org.junit.jupiter.api.Assertions.assertTrue; >> 67: >> 68: @SuppressWarnings("OptionalGetWithoutIsPresent") > > I haven't seen this `OptionalGetWithoutIsPresent` warning before and looking > into the JDK repo I don't see it being used or recognized any place else. Is > this meant for some specific IDEs? Removed in bcf106b27063e886167a29ecc92a3073a4334c55. > test/jdk/java/net/httpclient/HttpResponseConnectionLabelTest.java line 83: > >> 81: >> 82: // Start with a fresh client having no connections in the pool >> 83: @AutoClose > > I hadn't come across this JUnit Jupiter annotation before. Reading through > https://junit.org/junit5/docs/current/user-guide/#writing-tests-built-in-extensions-AutoClose > it appears to be a convenience mechanism for managing closing of the > resources at the "right time". That doc states: > >> Specifically, if the test class is configured with >> @TestInstance(Lifecycle.PER_METHOD) semantics, a non-static @AutoClose field >> will be closed after the execution of each test method, test factory method, >> or test template method. However, if the test class is configured with >> @TestInstance(Lifecycle.PER_CLASS) semantics, a non-static @AutoClose field >> will not be closed until the current test class instance is no longer needed > > Do you know what test class lifecycle is configured for test classes like > this one when launched through jtreg? > > Typically, we just use very basic JUnit constructs in the tests in the JDK > repo to make it simpler to follow these tests, even if it means a bit more > verbose code like having a method annotated with `@BeforeEach`/`@AfterEach` > to do construction/clean up like this. Replaced with `@AfterEach` in e32a48409478764ff5ab921c61be49f8ecffcff6. > test/jdk/java/net/httpclient/HttpResponseConnectionLabelTest.java line 156: > >> 154: "Server[%s] is waiting for the >> latch... (connectionKey=%s, responseBody=%s)", >> 155: serverId, connectionKey, >> responseBody); >> 156: >> assertTrue(serverResponseLatchRef[0].await(2, TimeUnit.SECONDS)); > > We should avoid using any kind of timeouts here and in other places where we > call this `await(...)` in this test. Given how varied the test execution > environments are and our past experience with such timeouts, there's no right > timeout to choose from. Instead, we should just do a `await()` without the > timeout, so that if for whatever reason the latch isn't counted down, then > the jtreg test execution timeout (which is controlled and configured > externally to the test) will kick in and jtreg will do the necessary work of > failing the test and also gathering detailed diagnostics through any failure > handlers that are configured in that test execution environment. Removed timeouts in 5b418fd7a9f4cfc3da940611ae3ba9d43e57aa91. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24154#discussion_r2028746855 PR Review Comment: https://git.openjdk.org/jdk/pull/24154#discussion_r2028746699 PR Review Comment: https://git.openjdk.org/jdk/pull/24154#discussion_r2028746544 PR Review Comment: https://git.openjdk.org/jdk/pull/24154#discussion_r2028746361