REGTESTS: http: add a test to validate chunked responses delivery

I've had this test here never committed over the last 2.5 years, that
works fine and I didn't notice it was not part of the tree. It makes a
server return odd-sized chunked responses with short pauses between half
of thems and verifies they're not truncated on the client. It may detect
eventually state machine breakages, so better commit it.
This commit is contained in:
Willy Tarreau 2023-11-18 11:01:28 +01:00
parent 82f4bcafae
commit 42faad48f6

View File

@ -0,0 +1,101 @@
varnishtest "HTTP response size tests: H2->H1 (HTX and legacy mode)"
#REQUIRE_VERSION=1.9
feature ignore_unknown_macro
server s1 {
rxreq
txresp \
-status 200 \
-nolen \
-hdr "Transfer-encoding: chunked"
# -bodylen 16300
#chunkedlen 16300
#delay 0.05
chunkedlen 815
#delay 0.05
chunkedlen 815
delay 0.05
chunkedlen 815
#delay 0.05
chunkedlen 815
delay 0.05
chunkedlen 815
#delay 0.05
chunkedlen 815
delay 0.05
chunkedlen 815
#delay 0.05
chunkedlen 815
delay 0.05
chunkedlen 815
#delay 0.05
chunkedlen 815
delay 0.05
chunkedlen 815
#delay 0.05
chunkedlen 815
delay 0.05
chunkedlen 815
#delay 0.05
chunkedlen 815
delay 0.05
chunkedlen 815
#delay 0.05
chunkedlen 815
delay 0.05
chunkedlen 815
#delay 0.05
chunkedlen 815
delay 0.05
chunkedlen 815
#delay 0.05
chunkedlen 815
delay 0.05
} -repeat 2 -start
haproxy h1 -conf {
defaults
#log stdout format raw daemon
mode http
option http-buffer-request
timeout connect 1s
timeout client 1s
timeout server 1s
listen feh1
bind "fd@${feh1}"
bind "fd@${feh2}" proto h2
http-response add-header a b
#http-response del-header content-length
server s1 ${s1_addr}:${s1_port}
} -start
client c1h2 -connect ${h1_feh2_sock} {
txpri
stream 0 {
txsettings
rxsettings
txsettings -ack
rxsettings
expect settings.ack == true
} -run
# first request is valid
stream 1 {
txreq \
-req "GET" \
-scheme "https" \
-url "/test1.html"
rxhdrs
#delay 0.1
expect resp.status == 200
rxdata -all
expect resp.bodylen == 16300
#expext resp.chunkedlen == 16300
} -run
} -repeat 2 -run