From: Christopher Faulet Date: Fri, 5 Jun 2026 09:10:18 +0000 (+0200) Subject: REGTESTS: checks: Add script for external healthchecks X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=HEAD;p=thirdparty%2Fhaproxy.git REGTESTS: checks: Add script for external healthchecks This script is quite basic but it should validate the external healthchecks are working well. --- diff --git a/reg-tests/checks/extcheck.vtc b/reg-tests/checks/extcheck.vtc new file mode 100644 index 000000000..619b6ac8d --- /dev/null +++ b/reg-tests/checks/extcheck.vtc @@ -0,0 +1,77 @@ +varnishtest "Health-checks: some external check tests" +feature ignore_unknown_macro +#REGTEST_TYPE=slow + +server s1 { + rxreq + expect req.method == GET + expect req.url == /health + expect req.proto == HTTP/1.1 + txresp +} -start + +syslog S1 -level notice { + recv + expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded, reason: External check passed, code: 0" + recv + expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded, reason: External check passed, code: 0" +} -start + +syslog S2 -level notice { + recv + expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded.*code: 200" +} -start + +haproxy h1 -conf { + global + .if feature(THREAD) + thread-groups 1 + .endif + external-check + insecure-fork-wanted + + healthcheck http-health + type httpchk + http-check send meth GET uri /health ver HTTP/1.1 + + defaults + mode http + timeout client "${HAPROXY_TEST_TIMEOUT-5s}" + timeout server "${HAPROXY_TEST_TIMEOUT-5s}" + timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" + option log-health-checks + + backend be1 + log ${S1_addr}:${S1_port} len 2048 local0 + option external-check + external-check command /bin/true + server srv ${h1_li1_addr}:${h1_li1_port} check inter 100ms rise 1 fall 1 + + defaults + mode http + timeout client "${HAPROXY_TEST_TIMEOUT-5s}" + timeout server "${HAPROXY_TEST_TIMEOUT-5s}" + timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" + option external-check + external-check command /bin/true + option log-health-checks + + backend be2 + log ${S1_addr}:${S1_port} len 2048 local0 + server srv ${h1_li1_addr}:${h1_li1_port} check inter 100ms rise 1 fall 1 + + backend be3 + log ${S2_addr}:${S2_port} len 2048 local0 + option external-check + external-check command /bin/true + server srv ${s1_addr}:${s1_port} check inter 100ms rise 1 fall 1 healthcheck http-health + + listen li1 + mode http + bind "fd@${li1}" + http-request return status 200 + +} -start + +syslog S1 -wait +syslog S2 -wait