IPV6 literal string handling in tests
Daniel Fuchs
daniel.fuchs at oracle.com
Fri Jul 17 09:47:00 UTC 2020
Hi Mat,
On 16/07/2020 22:31, Mat Carter wrote:
> Hello net-dev
>
> I have been investigating an intermittent error with the following tests in jdk11u and
> identified fixes that could be back-ported:
>
> tests/jdk/sun/net/www/protocal/httponly.java
> tests/jdk/sun/net/www/protocal/nocache.java
>
> The error was a malformed string being passed to the URI/URL constructor
> (that parses the given string) in the format "http://0:0:0:0:1%1:65500/path",
> the root cause being that InetAddress.getHostAddress in some cases returns
> an IPV6 literal string (e.g. "0:0:0:0:1%1"), this specific constructor
> expects IPV6 literals to be enclosed in brackets e.g. "http://[0:0:0:0:1%1]:65500/path
>
> The issue has been addressed in tip with following change
> https://hg.openjdk.java.net/jdk/jdk/rev/5302477c8285 in response
> to https://bugs.openjdk.java.net/browse/JDK-8224761
>
> Has there been discussion about back-porting the fix to the tests to jdk11u?
You would have to ask that on the jdk-updates-dev at openjdk.java.net
list. I personally would only ask to backport a test fix if the test
makes sufficient noise in the CI to justify the effort of
backporting it.
[...]
> However these two changes achieve the same results using two different solutions;
> the fix for B5045306.java and 12 other tests in tip use the following code pattern when
> using the URI/URL constructor that takes a string to parse:
>
> String hostAddr = InetAddress.getLocalHost().getHostAddress();
> if (hostAddr.indexof(':') > -1) hostAddr = "[" + hostAddr + "]";
Yes that's basically what the URIBuilder does under the hood,
by calling java.net.URI.
> Whereas the fix for httponly.java and nocache.java use the test utility class
> test/lib/jdk/tests/lib/net/URIBuilder.java, which essentially boils down to using
> the URI/URL constructor that constructs a hierarchical URI from the given components
>
> Regardless of whether the fixes are back-ported to jdk11u, is there a shared view in
> this mailing list that we pick one pattern on tip for consistency, I'm happy to make
> the changes if there is agreement
Usually I would recommend using URIBuilder. I might plead guilty for
not always using it consistently - and probably some of these places
could be updated to use it.
However there may be situations where using the simple two lines above
can make more sense: if for instance, the test is building up an URL
by concatenating strings that already contain some encoding - e.g.
the path or query have some %xx - or using an URI at that point
is impractical and would require restructuring the test (unlikely?).
best regards,
-- daniel
>
> Thanks in advance
> Mat Carter
> Microsoft
>
More information about the net-dev
mailing list