]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
REGTESTS: write a full reverse regtest
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 14 Aug 2023 09:10:06 +0000 (11:10 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 24 Aug 2023 15:03:08 +0000 (17:03 +0200)
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.

reg-tests/connection/reverse_connect_full.vtc [new file with mode: 0644]

diff --git a/reg-tests/connection/reverse_connect_full.vtc b/reg-tests/connection/reverse_connect_full.vtc
new file mode 100644 (file)
index 0000000..e8b051b
--- /dev/null
@@ -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