Skip to content

Commit

Permalink
REGTESTS: write a full reverse regtest
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
a-denoyelle committed Aug 24, 2023
1 parent 08fffb7 commit f2ff3db
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions reg-tests/connection/reverse_connect_full.vtc
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit f2ff3db

Please sign in to comment.