test: disable tcp_reuseport test under qemu (#5005)

The test is multi-threaded and expects both threads to receive at least
some of the incoming connections but there isn't always true parallelism
under QEMU's user-mode emulator.

Single-core systems are also susceptible to that so also add a check
that we have at least two cores to run on.

As mentioned in the change for the udp_reuseport test from a few days
ago, the test is not perfect (there being > 1 core doesn't guarantee
we actually get to run on them) but it's better than nothing.

Fixes: https://github.com/libuv/libuv/issues/5003
This commit is contained in:
Ben Noordhuis 2026-01-23 11:07:15 +01:00 committed by GitHub
parent 0405e1224f
commit 4839e28d50
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -178,6 +178,17 @@ TEST_IMPL(tcp_reuseport) {
int r;
int i;
#if defined(__QEMU__)
/* QEMU's user-mode emulator sometimes runs threads in sequence
* instead of in parallel and that throws off the test.
* See https://github.com/libuv/libuv/issues/4777.
*/
RETURN_SKIP("Unreliable under QEMU");
#endif /* defined(__QEMU__) */
if (uv_available_parallelism() < 2)
RETURN_SKIP("Unreliable without thread parallelism");
r = uv_mutex_init(&mutex);
ASSERT_OK(r);