RFR: 8278961: Enable debug logging in java/net/DatagramSocket/SendDatagramToBadAddress.java
Jaikiran Pai
jpai at openjdk.java.net
Sat Dec 18 02:40:23 UTC 2021
On Fri, 17 Dec 2021 16:21:12 GMT, Daniel Jeliński <duke at openjdk.java.net> 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
>
> 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?
Here too I didn't want to change the current behaviour/code of the test. It's not just this catch block but even the one a few lines above which catches `InterruptedIOException`. Neither the `send()` nor the `receive()` APIs of `DatagramSocket` specify that they throw this specific exception, but the test seems to catch it and consider it a socket timeout. So I'm guessing this test and the catch block was written with some specific context in mind and I didn't want to change that part as part of this PR which only aims to enable logging by default. Plus like Mark notes, the spec says `PortUnreachableException` "may" be thrown and isn't guaranteed.
-------------
PR: https://git.openjdk.java.net/jdk/pull/6883
More information about the net-dev
mailing list