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

165 lines
3.5 KiB
Plaintext

varnishtest "cook sample fetch Test"
feature ignore_unknown_macro
# TEST - 1
# Cookie from request
server s1 {
rxreq
txresp
} -start
haproxy h1 -conf {
global
.if feature(THREAD)
thread-groups 1
.endif
defaults
timeout client 30s
timeout server 30s
timeout connect 30s
mode http
frontend fe
bind "fd@${fe}"
http-request set-var(txn.count) req.cook_cnt()
http-request set-var(txn.val) req.cook_val()
http-request set-var(txn.val_cook2) req.cook_val(cook2)
http-request set-var(txn.cook_names) req.cook_names
http-response set-header count %[var(txn.count)]
http-response set-header val %[var(txn.val)]
http-response set-header val_cook2 %[var(txn.val_cook2)]
http-response set-header cook_names %[var(txn.cook_names)]
default_backend be
backend be
server srv1 ${s1_addr}:${s1_port}
} -start
client c1 -connect ${h1_fe_sock} {
txreq -url "/" \
-hdr "cookie: cook1=0; cook2=123; cook3=22"
rxresp
expect resp.status == 200
expect resp.http.count == "3"
expect resp.http.val == "0"
expect resp.http.val_cook2 == "123"
expect resp.http.cook_names == "cook1,cook2,cook3"
} -run
# TEST - 2
# Set-Cookie from response
server s2 {
rxreq
txresp -hdr "Set-Cookie: cook1=0; cook2=123; cook3=22"
} -start
haproxy h2 -conf {
global
.if feature(THREAD)
thread-groups 1
.endif
defaults
timeout client 30s
timeout server 30s
timeout connect 30s
mode http
frontend fe
bind "fd@${fe}"
http-response set-var(txn.cook_names) res.cook_names
http-response set-header cook_names %[var(txn.cook_names)]
default_backend be
backend be
server srv2 ${s2_addr}:${s2_port}
} -start
client c2 -connect ${h2_fe_sock} {
txreq -url "/"
rxresp
expect resp.status == 200
expect resp.http.cook_names == "cook1"
} -run
# TEST - 3
# Multiple Cookie headers from request
server s3 {
rxreq
txresp
} -start
haproxy h3 -conf {
global
.if feature(THREAD)
thread-groups 1
.endif
defaults
timeout client 30s
timeout server 30s
timeout connect 30s
mode http
frontend fe
bind "fd@${fe}"
http-request set-var(txn.cook_names) req.cook_names
http-response set-header cook_names %[var(txn.cook_names)]
default_backend be
backend be
server srv3 ${s3_addr}:${s3_port}
} -start
client c3 -connect ${h3_fe_sock} {
txreq -url "/" \
-hdr "cookie: cook1=0; cook2=123; cook3=22" \
-hdr "cookie: cook4=1; cook5=2; cook6=3"
rxresp
expect resp.status == 200
expect resp.http.cook_names == "cook1,cook2,cook3,cook4,cook5,cook6"
} -run
# TEST - 4
# Multiple Set-Cookie headers from response
server s4 {
rxreq
txresp -hdr "Set-Cookie: cook1=0; cook2=123; cook3=22" \
-hdr "Set-Cookie: cook4=1; cook5=2; cook6=3"
} -start
haproxy h4 -conf {
global
.if feature(THREAD)
thread-groups 1
.endif
defaults
timeout client 30s
timeout server 30s
timeout connect 30s
mode http
frontend fe
bind "fd@${fe}"
http-response set-var(txn.cook_names) res.cook_names
http-response set-header cook_names %[var(txn.cook_names)]
default_backend be
backend be
server srv4 ${s4_addr}:${s4_port}
} -start
client c4 -connect ${h4_fe_sock} {
txreq -url "/"
rxresp
expect resp.status == 200
expect resp.http.cook_names == "cook1,cook4"
} -run