From f2ff3dbacbd699c4e19309d7f56384e393172766 Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Mon, 14 Aug 2023 11:10:06 +0200 Subject: [PATCH] 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. --- reg-tests/connection/reverse_connect_full.vtc | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 reg-tests/connection/reverse_connect_full.vtc diff --git a/reg-tests/connection/reverse_connect_full.vtc b/reg-tests/connection/reverse_connect_full.vtc new file mode 100644 index 000000000..e8b051ba5 --- /dev/null +++ b/reg-tests/connection/reverse_connect_full.vtc @@ -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