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) ha
 s 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

-------------

Commit messages:
 - 8262195: Removed Hostfiles
 - 8262195: Harden tests that use the HostsFileNameService (jdk.net.hosts.file 
property)

Changes: https://git.openjdk.java.net/jdk/pull/2703/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2703&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8262195
  Stats: 59 lines in 10 files changed: 6 ins; 38 del; 15 mod
  Patch: https://git.openjdk.java.net/jdk/pull/2703.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/2703/head:pull/2703

PR: https://git.openjdk.java.net/jdk/pull/2703

Reply via email to