On 01/04/2020 18:42, Daniel Fuchs wrote:
Hi,
Please find below a fix for:
8241786: 3 DatagramChannel tests and 2 MulticastSocket tests
fail due to "SocketException: No buffer space available"
https://bugs.openjdk.java.net/browse/JDK-8241786
webrev:
http://cr.openjdk.java.net/~dfuchs/webrev_8241786/webrev.01/
The real fix is in these three files:
DefaultInterface.java (macOS): is modified to prefer interfaces
that have non link local addresses
NetworkConfiguration.java (test lib): is modified to skip
interfaces that have only link-local addresses (whether IPv4
or IPv6) for multicasting.
MulticastSocket/SetOutgoingIf.java: this test does its own thing,
and is modified similarly to NetworkConfiguration
Additional cleanup:
The other tests are just modified to add diagnostic and use
try-with-resources whenever possible, and also use /othervm to avoid
some undesirable side effects (like not seeing any trace):
MulticastSocket/SetLoopbackMode.java
MulticastSocket/SetLoopbackModeIPv4.java
DatagramChannel/AdaptorMulticasting.java
DatagramChannel/MulticastSendReceiveTests.java
DatagramChannel/Promiscuous.java
The change to java.net.DefaultInterface to workaround bad configurations
on macOS looks good. Hopefully existing usages of the 1-arg joinGroup
will migrate to the 2-arg variant and avoid needing the JDK to choose on
multi-homed systems.
DefaultInterface might be better in a test infra class (in java/net) to
avoid duplicate it in several tests.
The updates to the DatagramChannel tests look okay but I think we should
change the new trace messages added to AdaptorMulticasting to be
consistent with the existing trace, e.g. the test cycles through the
families and interfaces and prints output like this following before
each run:
Test family=INET, multicast group=/225.4.5.6, interface=en0
The changes in the patch duplicate a subset of this in a different
format. It might be simpler to just not duplicate it but print just
print the name of the sub-tests, whatever is easiest.
NetworkConfiguration looks okay although I could imagine the comment
added at L101-103 not being clearer for future maintainers. I think
we'll need to do a cleanup of this test class at some point.
-Alan