]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
REGTESTS: checks: Add script for external healthchecks master
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 5 Jun 2026 09:10:18 +0000 (11:10 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 5 Jun 2026 15:15:31 +0000 (17:15 +0200)
This script is quite basic but it should validate the external healthchecks
are working well.

reg-tests/checks/extcheck.vtc [new file with mode: 0644]

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