REGTESTS: write a full reverse regtest

This test instantiates two haproxy instances :
* first one uses a reverse server with two bind pub and priv
* second one uses a reverse bind to initiate connection to priv endpoint

On startup, only first haproxy instance is up. A client send a request
to pub endpoint and should receive a HTTP 503 as no connection are
available on the reverse server.

Second haproxy instance is started. A delay of 3 seconds is inserted to
wait for the connection between the two LBs. Then a client retry the
request and this time should receive a HTTP 200 reusing the bootstrapped
connection.
This commit is contained in:
Amaury Denoyelle 2023-08-14 11:10:06 +02:00
parent 5053e89142
commit 36d936dd15
1 changed files with 64 additions and 0 deletions

View File

@ -0,0 +1,64 @@
varnishtest "Reverse connect full test"
feature ignore_unknown_macro
#REQUIRE_VERSION=2.9
server s1 {
rxreq
txresp
} -start
haproxy h_edge -conf {
defaults
log global
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
mode http
frontend pub
bind "fd@${pub}"
use_backend be-reverse
backend be-reverse
server dev @reverse
frontend priv
bind "fd@${priv}" proto h2
tcp-request session attach-srv be-reverse/dev
} -start
haproxy h_dev -conf {
defaults
log global
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
mode http
frontend fe
bind "rev@be-pre-connect/srv" maxconn 1
use_backend be
backend be-pre-connect
server srv ${h_edge_priv_addr}:${h_edge_priv_port} proto h2
backend be
server srv ${s1_addr}:${s1_port}
}
client c1 -connect ${h_edge_pub_sock} {
txreq -url "/"
rxresp
expect resp.status == 503
} -run
haproxy h_dev -start
# TODO replace delay by a proper wait
delay 3
client c1 -connect ${h_edge_pub_sock} {
txreq -url "/"
rxresp
expect resp.status == 200
} -run