haproxy/reg-tests/http-rules/map_regm_with_backref.vtc
Willy Tarreau db522b542e REGTEST: increase some short timeouts to make tests more reliable
A few regtests continue to regularly fail in highly loaded VMs because
they have very short timeouts. Actually the goal of running with short
timeouts was to make sure we do not uselessly wait during tests designed
to trigger them, but these timeouts here are never supposed to fire at
all, so they don't need to be kept in the 15-20ms range. They do not
pose any issue on any regular machine, but VMs are often suffering from
huge time jumps and cannot always produce responses in that short of a
time.

Just like with commit ce6fc25b1 ("REGTEST: increase timeouts on the
seamless-reload test"), let's raise these short timeouts to 1 second.
A few other ones remain set to 150-200ms and do not seem to cause any
issue. Some are actually expected to trigger so let's not touch them
for now.
2020-09-02 07:30:34 +02:00

80 lines
2.2 KiB
Plaintext

#commit 271022150d7961b9aa39dbfd88e0c6a4bc48c3ee
# BUG/MINOR: map: fix map_regm with backref
#
# Due to a cascade of get_trash_chunk calls the sample is
# corrupted when we want to read it.
#
# The fix consist to use a temporary chunk to copy the sample
# value and use it.
varnishtest "map_regm get_trash_chunk test"
feature ignore_unknown_macro
#REQUIRE_VERSION=1.6
#REGTEST_TYPE=bug
syslog S1 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Proxy (fe|be)1 started."
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Proxy (fe|be)1 started."
recv info
# not expecting ${h1_pid} with master-worker
expect ~ "[^:\\[ ]\\[[[:digit:]]+\\]: .* fe1 be1/s1 [[:digit:]]+/[[:digit:]]+/[[:digit:]]+/[[:digit:]]+/[[:digit:]]+ 200 [[:digit:]]+ - - ---- .* \"GET / HTTP/(1|2)(\\.1)?\""
} -start
server s1 {
rxreq
expect req.method == "GET"
expect req.http.x-mapped-from-header == example_AND_org
expect req.http.x-mapped-from-var == example_AND_org
txresp
rxreq
expect req.method == "GET"
expect req.http.x-mapped-from-header == www.example_AND_org
expect req.http.x-mapped-from-var == www.example_AND_org
txresp
} -start
haproxy h1 -conf {
global
log ${S1_addr}:${S1_port} local0 debug err
defaults
mode http
${no-htx} option http-use-htx
log global
option httplog
timeout connect 1s
timeout client 1s
timeout server 1s
frontend fe1
bind "fd@${fe1}"
# Remove port from Host header
http-request replace-value Host '(.*):.*' '\1'
# Store host header in variable
http-request set-var(txn.host) req.hdr(Host)
# This works correctly
http-request set-header X-Mapped-From-Header %[req.hdr(Host),map_regm(${testdir}/map_regm_with_backref.map,"unknown")]
# This breaks before commit 271022150d7961b9aa39dbfd88e0c6a4bc48c3ee
http-request set-header X-Mapped-From-Var %[var(txn.host),map_regm(${testdir}/map_regm_with_backref.map,"unknown")]
default_backend be1
backend be1
server s1 ${s1_addr}:${s1_port}
} -start
client c1 -connect ${h1_fe1_sock} {
txreq -hdr "Host: example.org:8443"
rxresp
expect resp.status == 200
txreq -hdr "Host: www.example.org"
rxresp
expect resp.status == 200
} -run