haproxy/reg-tests/server/cli_add_check_server.vtc
Willy Tarreau 3b2533fa1a REGTESTS: server: fix agent-check syntax and expectation
Since commit 8d6c6bd ("Leak-plugging on barriers") VTest has become
stricter in its expectations, making this one fail. The agent-check
test was expecting a close on the server, which normally does not
happen before the server responds. In addition, it was really sending
"hello" (with the quotes) due to the config file syntax, which explains
why test test log reported that '"hell' was received, and complained
that 0x6f ('o') was read instead of a shutdown. This has been fixed
as well by using single-quotes.

There is no need to backport this test as it's only in 2.5.
2021-08-20 11:28:15 +02:00

121 lines
2.8 KiB
Plaintext

varnishtest "Add/Delete server via cli with check support"
feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev3)'"
feature cmd "$HAPROXY_PROGRAM -cc 'feature(OPENSSL)'"
feature ignore_unknown_macro
barrier b1 cond 2 -cyclic
barrier b2 cond 2 -cyclic
server s1 {
rxreq
txresp
} -start
server s2 {
} -start
# used for agent checks
server s3 {
recv 5
send "ready up\n"
barrier b2 sync
} -start
syslog S1 -level notice {
recv
expect ~ ".*Server be1/s1 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/s1 succeeded.+reason: Layer7 check passed, code: 200, check duration: [[:digit:]]+ms.+status: 1/1 UP"
barrier b1 sync
recv
expect ~ ".*Server be1/s2 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/s2 failed.+reason: Layer7 timeout, check duration: [[:digit:]]+ms.+status: 0/1 DOWN"
barrier b1 sync
recv
expect ~ ".*Server be1/s2 was DOWN and now enters maintenance."
recv
expect ~ ".*Server be1/s3 is UP/READY \\(leaving forced maintenance\\)."
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Agent check for server be1/s3 succeeded.+reason: Layer7 check passed, code: 0, info: \"via agent : up\", check duration: [[:digit:]]+ms.+status: 1/1 UP"
barrier b1 sync
barrier b2 sync
} -start
haproxy h1 -conf {
global
stats socket "${tmpdir}/h1/stats" level admin
backend be1
option log-health-checks
option httpchk GET /
log ${S1_addr}:${S1_port} daemon
} -start
# check on a functional server
haproxy h1 -cli {
send "experimental-mode on; add server be1/s1 ${s1_addr}:${s1_port} check inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable server be1/s1"
expect ~ ".*"
send "enable health be1/s1"
expect ~ ".*"
barrier b1 sync
send "disable server be1/s1"
expect ~ ".*"
send "experimental-mode on; del server be1/s1"
expect ~ "Server deleted."
}
server s2 -break
# check on a disabled server
haproxy h1 -cli {
send "experimental-mode on; add server be1/s2 ${s2_addr}:${s2_port} check inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable server be1/s2"
expect ~ ".*"
send "enable health be1/s2"
expect ~ ".*"
barrier b1 sync
send "disable server be1/s2"
expect ~ ".*"
send "experimental-mode on; del server be1/s2"
expect ~ "Server deleted."
}
# agent check
haproxy h1 -cli {
send "experimental-mode on; add server be1/s3 ${s1_addr}:${s1_port} agent-check agent-addr ${s3_addr} agent-port ${s3_port} agent-send 'hello' agent-inter 200ms rise 1 fall 1"
expect ~ "New server registered."
send "enable agent be1/s3"
expect ~ ".*"
barrier b1 sync
send "disable agent be1/s3; disable server be1/s3"
expect ~ ".*"
send "experimental-mode on; del server be1/s3"
expect ~ "Server deleted."
}
syslog S1 -wait