adoptium / infrastructure

This repo contains all information about machine maintenance.
Apache License 2.0
87 stars 102 forks source link

Ipv6 tests still fail on Aix machines #2516

Open Haroon-Khel opened 2 years ago

Haroon-Khel commented 2 years ago

Some ipv6 tests continue to fail on all of our aix machines. The tests being:

java/net/DatagramSocket/DatagramSocketExample.java.DatagramSocketExample java/net/DatagramSocket/DatagramSocketMulticasting.java.DatagramSocketMulticasting java/net/MulticastSocket/SetOutgoingIf.java.SetOutgoingIf java/net/MulticastSocket/JoinLeave.java.JoinLeave java/net/MulticastSocket/Promiscuous.java.Promiscuous java/nio/channels/DatagramChannel/AdaptorMulticasting.java.AdaptorMulticasting

Fail with

19:47:42  STDOUT:
19:47:42  Test family=INET, multicast group=/225.4.5.6, interface=en1
19:47:42  STDERR:
19:47:42  java.lang.IllegalArgumentException: IPv6 socket cannot join IPv4 multicast group
19:47:42    at java.base/sun.nio.ch.DatagramChannelImpl.innerJoin(DatagramChannelImpl.java:1473)

It is known upstream that these tests will fail if ipv6 is not correctly configured https://bugs.openjdk.java.net/browse/JDK-8278122

These tests belong to the jdk_net test target. Most recent failure was during the jdk18+36 release https://ci.adoptopenjdk.net/job/Test_openjdk18_hs_extended.openjdk_ppc64_aix_testList_0/24/testReport/

Haroon-Khel commented 2 years ago

Ping @aixtools

aixtools commented 2 years ago
aixtools commented 2 years ago

Trying to get the failing tests narrowed down, trying TARGET: jdk_net now (jdk_net_0 didn't seem to do anything).

aixtools commented 2 years ago

This is the failed test URL - FOR RESTARTS! Change the JDK version for the different tests : from Grinder #4245

aixtools commented 2 years ago
aixtools commented 2 years ago

For the moment: to look for delta/regression

Test Result (20 failures / +20) java/net/DatagramSocket/DatagramSocketExample.java.DatagramSocketExample java/net/DatagramSocket/DatagramSocketExample.java.DatagramSocketExample java/net/DatagramSocket/DatagramSocketMulticasting.java.DatagramSocketMulticasting java/net/DatagramSocket/DatagramSocketMulticasting.java.DatagramSocketMulticasting java/net/DatagramSocket/SendReceiveMaxSize.java.SendReceiveMaxSize java/net/DatagramSocket/SendReceiveMaxSize.java.SendReceiveMaxSize java/net/MulticastSocket/B6427403.java.B6427403 java/net/MulticastSocket/B6427403.java.B6427403 java/net/MulticastSocket/JoinLeave.java.JoinLeave java/net/MulticastSocket/JoinLeave.java.JoinLeave java/net/MulticastSocket/MulticastAddresses.java.MulticastAddresses java/net/MulticastSocket/MulticastAddresses.java.MulticastAddresses java/net/MulticastSocket/NoLoopbackPackets.java.NoLoopbackPackets java/net/MulticastSocket/NoLoopbackPackets.java.NoLoopbackPackets java/net/MulticastSocket/Promiscuous.java.Promiscuous java/net/MulticastSocket/Promiscuous.java.Promiscuous java/net/MulticastSocket/SetOutgoingIf.java.SetOutgoingIf java/net/MulticastSocket/SetOutgoingIf.java.SetOutgoingIf java/net/MulticastSocket/Test.java.Test java/net/MulticastSocket/Test.java.Test

aixtools commented 2 years ago

I'll need some assistance with setting up a way to test changes in openjdk itself, e.g., a change in java.base/sun.nio.ch.DatagramChannelImpl.innerJoin(DatagramChannelImpl.java (that is not part of the aqu-tests).

aixtools commented 2 years ago

Sigh: Thought I had saved the parambuild URL - but sadly not.

From testing on the java8: when two interfaces are defined - it fails on the interface with no (default) route. When that interface is detached, the 'JoinLeave' test succeeds.

aixtools commented 2 years ago
aixtools commented 2 years ago

OK. Reran once again - and this is the list with dual interfaces defined: (adopt08) Test Result (16 failures / +15) com/sun/net/httpserver/simpleserver/StressDirListings.java.StressDirListings com/sun/net/httpserver/simpleserver/StressDirListings.java.StressDirListings java/net/DatagramSocket/DatagramSocketExample.java.DatagramSocketExample java/net/DatagramSocket/DatagramSocketExample.java.DatagramSocketExample java/net/DatagramSocket/DatagramSocketMulticasting.java.DatagramSocketMulticasting java/net/DatagramSocket/DatagramSocketMulticasting.java.DatagramSocketMulticasting java/net/MulticastSocket/JoinLeave.java.JoinLeave java/net/MulticastSocket/JoinLeave.java.JoinLeave java/net/MulticastSocket/MulticastAddresses.java.MulticastAddresses java/net/MulticastSocket/MulticastAddresses.java.MulticastAddresses java/net/MulticastSocket/Promiscuous.java.Promiscuous java/net/MulticastSocket/Promiscuous.java.Promiscuous java/net/MulticastSocket/SetOutgoingIf.java.SetOutgoingIf java/net/MulticastSocket/SetOutgoingIf.java.SetOutgoingIf java/net/MulticastSocket/Test.java.Test java/net/MulticastSocket/Test.java.Test

aixtools commented 2 years ago

Tried a lot of different settings on AIX but still get nearly the same test failures. Have to check if the errors themselves are the same though. (19 now, rather than 16). Test Result (19 failures / +13)

java/net/MulticastSocket/JoinLeave.java.JoinLeave java/net/MulticastSocket/JoinLeave.java.JoinLeave java/net/MulticastSocket/MulticastAddresses.java.MulticastAddresses java/net/MulticastSocket/MulticastAddresses.java.MulticastAddresses java/net/MulticastSocket/Promiscuous.java.Promiscuous java/net/MulticastSocket/Promiscuous.java.Promiscuous java/net/MulticastSocket/SetOutgoingIf.java.SetOutgoingIf java/net/MulticastSocket/SetOutgoingIf.java.SetOutgoingIf java/net/MulticastSocket/Test.java.Test java/net/MulticastSocket/Test.java.Test java/net/Socket/asyncClose/Race.java.Race com/sun/net/httpserver/simpleserver/StressDirListings.java.StressDirListings com/sun/net/httpserver/simpleserver/StressDirListings.java.StressDirListings java/net/DatagramSocket/DatagramSocketExample.java.DatagramSocketExample java/net/DatagramSocket/DatagramSocketExample.java.DatagramSocketExample java/net/DatagramSocket/DatagramSocketMulticasting.java.DatagramSocketMulticasting java/net/DatagramSocket/DatagramSocketMulticasting.java.DatagramSocketMulticasting java/net/DatagramSocket/SendReceiveMaxSize.java.SendReceiveMaxSize java/net/DatagramSocket/SendReceiveMaxSize.java.SendReceiveMaxSize

aixtools commented 1 year ago

@Haroon-Khel : can you initiate this test again. I have forgotten how to regenerate from the data above.

aixtools commented 1 year ago

fyi: this test fails for two reasons:

a) the test incorrectly believes AIX is running an active world IPv6 address. By default the IPv6 stack is active - for lo0 and address ::1 b) even for ::1 (and 127.0.0.1) AIX acts differently than Linux and others. c) when there is an active IPv6 (WAN) - the address is on en1 - and the test doesn't seem to find it.

My recommendation is to put this test on the 'skip' list - as it will take forever if upstream is fast. Never is the more likely stream for getting this fixed upstream.

aixtools commented 1 year ago

Again, the tests - as written, do not account for the way that AIX reacts to NULL (rather than empty string ""); and, they assume a full IPv6 stack active when ::1 is available - which is not the case.

Since 1999 (when AIX 4.3 came out - if not earlier (AIX 4.2 might have already had it) - lo0 has had IPv6 address ::1 active by default - while the physical and later virtual NIC do not have any IPv6 address (the so-called local IPv6 with prefixfe00:). Neither has AIX IPv6 made (much, if any) use of the%` syntax for multiple addresses with a common base address. Rather, each interface (en0. en1) has it's own unique address.

Further, at OSUOSL the only other interface to have an IPv6 address, if there is one, is en1 - while the tests (again) presume it is ent0 and en0.

imho: until behavior is studied in detail - skip the tests failing. iirc, the failure comes from a common routine in all the tests that fails before any actual new test component gets tried. Been 18+ months since I studied this. Responses from upstream were just too slow to get anything finished. Too many layers protecting their forums from spam posters. Or something like that.