You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.9 KiB
157 lines
4.9 KiB
varnishtest "Health-checks: some http-check tests"
|
|
feature ignore_unknown_macro
|
|
#REQUIRE_VERSION=2.2
|
|
#REGTEST_TYPE=slow
|
|
# This script tests HTTP health-checks.
|
|
|
|
server s1 {
|
|
rxreq
|
|
expect req.method == OPTIONS
|
|
expect req.url == /
|
|
expect req.proto == HTTP/1.0
|
|
txresp
|
|
} -start
|
|
|
|
server s2 {
|
|
rxreq
|
|
expect req.method == GET
|
|
expect req.url == /status
|
|
expect req.proto == HTTP/1.1
|
|
txresp
|
|
} -start
|
|
|
|
server s3 {
|
|
rxreq
|
|
expect req.method == GET
|
|
expect req.url == /status
|
|
expect req.proto == HTTP/1.1
|
|
txresp
|
|
} -start
|
|
|
|
server s4 {
|
|
rxreq
|
|
expect req.method == GET
|
|
expect req.url == /req1
|
|
expect req.proto == HTTP/1.1
|
|
expect req.http.x-test == "server=srv"
|
|
expect req.http.x-haproxy-server-state ~ "UP.+name=be4/srv"
|
|
expect req.bodylen == 0
|
|
txresp
|
|
|
|
accept
|
|
rxreq
|
|
expect req.method == GET
|
|
expect req.url == /req2
|
|
expect req.proto == HTTP/1.1
|
|
expect req.http.x-test == "server="
|
|
expect req.http.x-haproxy-server-state ~ "UP.+name=be4/srv"
|
|
expect req.http.content-length == 17
|
|
expect req.bodylen == 17
|
|
expect req.body == "health-check body"
|
|
txresp
|
|
|
|
accept
|
|
rxreq
|
|
expect req.method == GET
|
|
expect req.url == /req3
|
|
expect req.proto == HTTP/1.0
|
|
expect req.http.x-test == <undef>
|
|
expect req.http.x-haproxy-server-state ~ "UP.+name=be4/srv"
|
|
expect req.bodylen == 0
|
|
txresp
|
|
|
|
accept
|
|
rxreq
|
|
expect req.method == GET
|
|
expect req.url == /
|
|
expect req.proto == HTTP/1.0
|
|
expect req.http.x-test == <undef>
|
|
expect req.http.x-haproxy-server-state ~ "UP.+name=be4/srv"
|
|
expect req.bodylen == 23
|
|
expect req.body == "health-check on be4-srv"
|
|
txresp
|
|
|
|
} -start
|
|
|
|
syslog S1 -level notice {
|
|
recv
|
|
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded.*code: 200"
|
|
recv
|
|
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded.*code: 200"
|
|
recv
|
|
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded.*code: 200"
|
|
recv
|
|
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded.*code: 200"
|
|
recv
|
|
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded.*code: 200"
|
|
recv
|
|
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be[0-9]/srv succeeded.*code: 200"
|
|
} -start
|
|
|
|
haproxy h1 -conf {
|
|
defaults
|
|
mode http
|
|
timeout client 1s
|
|
timeout server 1s
|
|
timeout connect 100ms
|
|
option log-health-checks
|
|
|
|
backend be1
|
|
log ${S1_addr}:${S1_port} len 2048 local0
|
|
option httpchk
|
|
server srv ${s1_addr}:${s1_port} check inter 100ms rise 1 fall 1
|
|
|
|
backend be2
|
|
log ${S1_addr}:${S1_port} len 2048 local0
|
|
option httpchk GET /status HTTP/1.1
|
|
server srv ${s2_addr}:${s2_port} check inter 100ms rise 1 fall 1
|
|
|
|
backend be3
|
|
log ${S1_addr}:${S1_port} len 2048 local0
|
|
option httpchk
|
|
http-check send meth GET uri /status ver HTTP/1.1
|
|
server srv ${s3_addr}:${s3_port} check inter 100ms rise 1 fall 1
|
|
|
|
backend be4
|
|
mode tcp
|
|
log ${S1_addr}:${S1_port} len 2048 local0
|
|
option httpchk
|
|
http-check send-state
|
|
http-check connect addr ${s4_addr}:${s4_port}
|
|
http-check set-var(check.server) "str(srv)"
|
|
http-check set-var(check.path) "str(/req1)"
|
|
http-check send meth GET uri-lf "%[var(check.path)]" ver HTTP/1.1 hdr x-test "server=%[var(check.server)]"
|
|
http-check expect status 200
|
|
http-check connect addr ${s4_addr} port ${s4_port}
|
|
http-check unset-var(check.server)
|
|
http-check set-var(check.path) "str(/req2)"
|
|
http-check send meth GET uri-lf "%[var(check.path)]" ver HTTP/1.1 hdr x-test "server=%[var(check.server)]" body "health-check body"
|
|
http-check expect rstatus "^2[0-9]{2}"
|
|
http-check connect addr ${s4_addr} port ${s4_port}
|
|
http-check set-var(check.path) "str(/req3)"
|
|
http-check send meth GET uri-lf "%[var(check.path)]"
|
|
http-check expect rstatus "^2[0-9]{2}"
|
|
http-check connect addr ${s4_addr} port ${s4_port}
|
|
http-check unset-var(check.path)
|
|
http-check send meth GET uri-lf "%[var(check.path)]" body-lf "health-check on %[be_name]-%[srv_name]"
|
|
## implicit expect rule
|
|
server srv ${s1_addr}:${s1_port} check inter 100ms rise 1 fall 1
|
|
|
|
backend be5
|
|
log ${S1_addr}:${S1_port} len 2048 local0
|
|
option httpchk
|
|
server srv ${h1_li1_addr}:${h1_li1_port} proto h2 check inter 100ms rise 1 fall 1
|
|
|
|
backend be6
|
|
log ${S1_addr}:${S1_port} len 2048 local0
|
|
option httpchk GET /status HTTP/1.1
|
|
server srv ${h1_li1_addr}:${h1_li1_port} check check-proto h2 inter 100ms rise 1 fall 1
|
|
|
|
listen li1
|
|
mode http
|
|
bind "fd@${li1}" proto h2
|
|
http-request return status 200
|
|
|
|
} -start
|
|
|
|
syslog S1 -wait
|
|
|