On Thu, 25 Feb 2021 15:38:02 GMT, Conor Cleary <ccle...@openjdk.org> wrote:
>> A number of net tests use a >> **[HostsFileNameService](https://github.com/openjdk/jdk/blob/382e38dd246596ec94a1f1ce0e0f9e87f53366c7/src/java.base/share/classes/java/net/InetAddress.java#L955)** >> to verify either the functionality of this type of Name Service or as a >> complement to other tests (such as Caching, Address Format etc.). >> >> Intermittent failures of these tests can be caused by tools used during JVM >> start-up accessing/initialising classes sooner than may be expected which >> can cause unexpected behaviour. Most commonly, this unexpected behaviour >> takes the form of the >> **[PlatformNameService](https://github.com/openjdk/jdk/blob/382e38dd246596ec94a1f1ce0e0f9e87f53366c7/src/java.base/share/classes/java/net/InetAddress.java#L927)** >> being used despite a call to `System.setProperty("jdk.net.hosts.file", >> ...)` in the test file. Due to the fact that **InetAddress** initialises >> it's Implementation and Name Service fields in a static class initialiser >> ([see L1132 of >> InetAddress.java](https://github.com/openjdk/jdk/blob/382e38dd246596ec94a1f1ce0e0f9e87f53366c7/src/java.base/share/classes/java/net/InetAddress.java#L1132)) >> and that the default mode is to use the **Platform Name Service**, setting >> a system property in the main method to specify the use of >> **HostsFileNameService** (with the jdk.net.hosts.file property) has no affect if the class has been previously accessed during JVM start-up and **InetAddress** will default to the **PlatformNameService** which is unsuitable for this test. This explains the intermittent failures caused by the use of `System.setProperty("jdk.net.hosts.file", ...)`. >> >> This fix improves the robustness of this test by specifying the use of the >> **HostsFileNameService** in the `@run` tag for this test via the previously >> mentioned system property. This gives certainty that the property will be >> properly set in time for the actual run of this test after the JVM has >> booted. An example of one the fixes... >> * @run main/othervm -Djdk.net.hosts.file=TestToNumericFormatHosts >> textToNumericFormat > > Conor Cleary has updated the pull request incrementally with two additional > commits since the last revision: > > - 8262195: Copyrights & InternalNSTest Host File Delete > - 8262195: Added descriptive comments and filename Except for that remark, changes look fine. test/jdk/java/net/InetAddress/InternalNameServiceWithNoHostsFileTest.java line 32: > 30: * thrown > 31: * @run main/othervm -Djdk.net.hosts.file=TestHosts-II > -Dsun.net.inetaddr.ttl=0 > 32: * InternalNameServiceWithNoHostsFileTest shouldn't this be: @run main/othervm -Djdk.net.hosts.file=${test.src}/TestHosts-II -Dsun.net.inetaddr.ttl=0 ------------- PR: https://git.openjdk.java.net/jdk/pull/2703