Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ipv6 tests still fail on Aix machines #2516

Open
Haroon-Khel opened this issue Mar 28, 2022 · 14 comments
Open

Ipv6 tests still fail on Aix machines #2516

Haroon-Khel opened this issue Mar 28, 2022 · 14 comments

Comments

@Haroon-Khel
Copy link
Contributor

Haroon-Khel commented Mar 28, 2022

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
Copy link
Contributor Author

Ping @aixtools

@aixtools
Copy link
Contributor

  • Most of the issues above are multicast related.
  • One (or two) may be related to buffering.
  • I'll make a few manual changes on adopt07 and adopt08 - for the buffering. There are 10 failures listed now - maybe that will bring it down to 9 or 8.

@aixtools
Copy link
Contributor

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

@aixtools
Copy link
Contributor

aixtools commented Apr 2, 2022

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

@aixtools
Copy link
Contributor

aixtools commented Apr 2, 2022

  • I've been reviewing the code - and it seems the core Implementation, by default, switches - read decides, to use IPv6 by default, if it is available. And the default setup does not permit IPv6 as a default for IPv4 multi-casting.
  • Note also: the link above is a duplicate. The active link is: JDK-8272476. I'll be replying there as well.
  • UPDATE: As I don't have AUTHOR status (yet) with bugs.openjdk.java.net - active participation is slowed.

@aixtools
Copy link
Contributor

aixtools commented Apr 3, 2022

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
Copy link
Contributor

aixtools commented Apr 3, 2022

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).

  • update: looks like I am needing to learn a LOT of java programming. Sigh, Taking time...

@aixtools
Copy link
Contributor

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.

  • My assumption is that the test assumptions are not correct for AIX. Will re-run base to get 'failed-only' test report back.
  • iirc I tried to save one of the grinder results so it would not be deleted (asap), but I do not recall finding the option to save the grinder results.

@aixtools
Copy link
Contributor

aixtools commented Apr 16, 2022

@aixtools
Copy link
Contributor

aixtools commented Apr 22, 2022

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
Copy link
Contributor

aixtools commented Apr 29, 2022

@sxa sxa added this to the 2023-06 (June) milestone Jun 6, 2023
@sxa sxa modified the milestones: 2023-06 (June), 2023-07 (July) Jul 7, 2023
@aixtools
Copy link
Contributor

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

@aixtools
Copy link
Contributor

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
Copy link
Contributor

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 prefix fe00:). 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Todo
Development

No branches or pull requests

3 participants