RFR: 8278961: Enable debug logging in java/net/DatagramSocket/SendDatagramToBadAddress.java

Daniel Jeliński duke at openjdk.java.net
Fri Dec 17 16:39:23 UTC 2021


On Fri, 17 Dec 2021 14:52:53 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:

> Can I please get a review for this test only change which proposes to enable debug logs from the test that failed intermittently? This change addresses https://bugs.openjdk.java.net/browse/JDK-8278961.
> 
> The change passes the (test specific) `-d` option to enable logs from that test by default. While I was at it, I even added a few more debug logs hoping it might provide some hints if/when it fails next.
> 
> For reference, a (successful) run of this test will now print something like:
> 
> 
> ----------System.out:(18/930)----------
> running on OS that supports ICMP port unreachable
> Testing with class java.net.DatagramSocket
> tests will be run against destination address localhost/127.0.0.1 port 52682
> Checking send to connected address ...
> socket is locally bound to address /127.0.0.1 port 52681
> received data from address /127.0.0.1 port 52681
> received data from address /127.0.0.1 port 52681
> received data from address /127.0.0.1 port 52681
> received data from address /127.0.0.1 port 52681
> received data from address /127.0.0.1 port 52681
> Checking send to non-connected address ...
> received data from address /127.0.0.1 port 52681
> Checking send to invalid address ...
> Got expected exception: java.net.PortUnreachableException
> Got expected exception: java.net.PortUnreachableException
> Got expected exception: java.net.PortUnreachableException
> Got expected exception: java.net.PortUnreachableException
> Got expected exception: java.net.PortUnreachableException

Does the `OSsupportsFeature` method still make sense? It mentions Windows 2000; I'm pretty sure every Windows version supports this today.

Also, I took a peek at JDK-8278858. The logs mention
> elapsed time (seconds): 20.069 

which is consistent with 5 (tries) *4seconds (timeout), which suggests that either the host firewalls ICMP "destination unreachable" packets, or our `serversock.close ();` call is somehow broken on that machine.

test/jdk/java/net/DatagramSocket/SendDatagramToBadAddress.java line 178:

> 176:                 p = new DatagramPacket(buf, buf.length, addr, port);
> 177:                 sock.receive (p);
> 178:                 print("(unexpectedly) received data from address " + p.getAddress()

We should immediately fail the test here

test/jdk/java/net/DatagramSocket/SendDatagramToBadAddress.java line 182:

> 180:             } catch (InterruptedIOException ex) {
> 181:                 print ("socket timeout");
> 182:             } catch (Exception ex) {

Can we catch `PortUnreachableException` here instead?

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

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


More information about the net-dev mailing list