Repository navigation
Conversation
IPv6 tests gate on engine().net().supports_ipv6() and skip with a log line when it is false. The probe behind it constructs a datagram channel on ::1 and swallows every exception, so anything that breaks IPv6 socket setup (since 731ac07 that includes the IPV6_RECVPKTINFO setsockopt in the channel constructor) makes every IPv6 test pass without running. Add tests/unit/ipv6_support.hh with ipv6_available_or_skip(): the same skip by default, a failure when SEASTAR_TEST_REQUIRE_IPV6 is set in the environment, for CI and containers that are known to have IPv6. Use it for the existing gates in ipv6_test and socket_test.
The test container has IPv6 on loopback, which is all the IPv6 unit tests use, so each of them can run in CI. Set SEASTAR_TEST_REQUIRE_IPV6 for the Test step so one that stops running fails the job instead of passing with a skip message.
This was referenced Sep 25, 2026
david-yu
added this pull request to stack #12
September 25, 2026 16:16
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part 1 of 10 of the IPv6 series, split out of #1 and rebased on current
scylladb/seastarmaster. Based onupstream-master(currentscylladb/seastarmaster), so the diff here is only this PR's 2 commits.Why
IPv6 tests skip when
engine().net().supports_ipv6()is false. That probe opens a datagram channel on::1and swallows every exception, so anything that breaks IPv6 socket setup turns the IPv6 tests into skips and the run stays green. A green run therefore says nothing about whether an IPv6 test ran. Every later PR in this stack adds IPv6 tests, so this one goes first.What
7ec32b2b1) —tests/unit/ipv6_support.hhwithipv6_available_or_skip(): skip by default, fail whenSEASTAR_TEST_REQUIRE_IPV6is set. Used by the gates master already has:ipv6_test, and the dual-stack gatesocket_testgained with731ac075f.5350eed5a) — sets the variable fortest.yaml's Test step.Does GHA run the IPv6 tests?
Yes. The Test job's
ubuntu:26.04container has IPv6 on loopback (supports_ipv6()binds::1), and loopback is all the IPv6 unit tests use. This PR's Test run setsSEASTAR_TEST_REQUIRE_IPV6and passes on every job that runs the unit tests (x86 and arm; GCC and Clang; debug, dev, release and sanitize; epoll, linux-aio and io_uring), so none of their IPv6 cases skipped. Every later PR in the stack passes the same way.Testing
On the core-aws VM (Ubuntu 24.04, GCC 14, C++23, RelWithDebInfo, GnuTLS and OpenSSL in one tree), this PR's head builds and passes
dns,ipv6,socket,rpc,httpd,httpd_openssl,tls,tls_openssl,network_interface,websocketandunix_domainwithSEASTAR_TEST_REQUIRE_IPV6=1, so none of their IPv6 cases skipped.Stack