Willy Tarreau 48d5ef363d REGTESTS: restrict execution to a single thread group
When threads are enabled and running on a machine with multiple CCX
or multiple nodes, thread groups are now enabled since 3.3-dev2, causing
load-balancing algorithms to randomly fail due to incoming connections
spreading over multiple groups and using different load balancing indexes.

Let's just force "thread-groups 1" into all configs when threads are
enabled to avoid this.
2025-06-30 18:54:35 +02:00

59 lines
1.9 KiB
Plaintext

# commit b4dd15b
# BUG/MINOR: unix: Make sure we can transfer abns sockets on seamless reload.
#
# When checking if a socket we got from the parent is suitable for a listener,
# we just checked that the path matched sockname.tmp, however this is
# unsuitable for abns sockets, where we don't have to create a temporary
# file and rename it later.
# To detect that, check that the first character of the sun_path is 0 for
# both, and if so, that &sun_path[1] is the same too.
#
# Note: there are some tricks here. One of them is that we must not bind the
# same abns address to multiple processes that may run in parallel. Since
# vtest cannot provide abns sockets, we're instead concatenating the number
# of the listening port that vtest allocated for another frontend to the abns
# path, which guarantees to make them unique in the system.
varnishtest "Seamless reload issue with abns sockets"
feature ignore_unknown_macro
feature cmd "command -v socat"
feature cmd "command -v grep"
# abns@ sockets are not available on freebsd
#EXCLUDE_TARGETS=freebsd,osx,generic
#REGTEST_TYPE=devel
haproxy h1 -Ws -S -conf {
global
.if feature(THREAD)
thread-groups 1
.endif
stats socket "${tmpdir}/h1/stats" level admin expose-fd listeners
defaults
mode http
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
listen testme
bind "fd@${testme}"
server test_abns_server abns@wpproc1_${h1_testme_port} send-proxy-v2
frontend test_abns
bind abns@wpproc1_${h1_testme_port} accept-proxy
http-request deny deny_status 200
} -start
shell {
sleep 0.1 ;# let the master process fully start and bind
echo "reload" | socat -t1000 TCP:${h1_mcli_addr}:${h1_mcli_port} - | grep 'Success=1'
}
client c1 -connect ${h1_testme_sock} {
txreq -url "/"
rxresp
} -repeat 50 -run