mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-26 14:42:21 +00:00
REGTEST: Add a first test for health-checks.
Signed-off-by: Frdric Lcaille <flecaille@haproxy.com>
This commit is contained in:
parent
d4f36e3eaa
commit
9be3489c22
207
reg-tests/checks/s00000.vtc
Normal file
207
reg-tests/checks/s00000.vtc
Normal file
@ -0,0 +1,207 @@
|
||||
varnishtest "Health-check test"
|
||||
feature ignore_unknown_macro
|
||||
|
||||
#REQUIRE_VERSION=1.8
|
||||
|
||||
# This script test health-checks for four backends with one server by backend.
|
||||
# A syslog server is attached to each backend to check the syslog messages
|
||||
# in the righ order.
|
||||
|
||||
# First, we check a health-check has passed for all the servers thanks to the syslog
|
||||
# messages. Then each server is disabled. The health-check status are checked.
|
||||
# Then each server is re-enabled. Finally health-check status
|
||||
# verifications for each server terminate the execution of this script.
|
||||
|
||||
# Note that the CLI is synchronized with the syslog servers so that
|
||||
# to be sure to receive the passed health-checks status messages before
|
||||
# disabling the servers. Same thing, when we check that the servers are down
|
||||
# before enabling the servers.
|
||||
|
||||
# Cyclic barrier to synchonize the CLI with the syslog servers
|
||||
barrier b1 sock 5 -cyclic
|
||||
|
||||
# These servers are there only for the health-check test.
|
||||
server s1 {
|
||||
} -start
|
||||
|
||||
server s2 {
|
||||
} -start
|
||||
|
||||
server s3 {
|
||||
} -start
|
||||
|
||||
server s4 {
|
||||
} -start
|
||||
|
||||
syslog S1 -level notice {
|
||||
recv
|
||||
expect ~ "Proxy be1 started"
|
||||
recv
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/srv1 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
|
||||
barrier b1 sync
|
||||
recv alert
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Server be1/srv1 is going DOWN for maintenance. 0 active and 0 backup servers left. [01] sessions active, 0 requeued, 0 remaining in queue."
|
||||
recv emerg
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: backend be1 has no server available!"
|
||||
barrier b1 sync
|
||||
recv
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: (Server be1/srv1 is UP/READY \\(leaving forced maintenance\\).|Health check for server be1/srv1 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP)"
|
||||
barrier b1 sync
|
||||
} -start
|
||||
|
||||
syslog S2 -level notice {
|
||||
recv
|
||||
expect ~ "Proxy be2 started"
|
||||
recv
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be2/srv2 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
|
||||
barrier b1 sync
|
||||
recv alert
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Server be2/srv2 is going DOWN for maintenance. 0 active and 0 backup servers left. [01] sessions active, 0 requeued, 0 remaining in queue."
|
||||
recv emerg
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: backend be2 has no server available!"
|
||||
barrier b1 sync
|
||||
recv
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: (Server be2/srv2 is UP/READY \\(leaving forced maintenance\\).|Health check for server be2/srv2 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP)"
|
||||
barrier b1 sync
|
||||
} -start
|
||||
|
||||
syslog S3 -level notice {
|
||||
recv
|
||||
expect ~ "Proxy be3 started"
|
||||
recv
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be3/srv3 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
|
||||
barrier b1 sync
|
||||
recv alert
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Server be3/srv3 is going DOWN for maintenance. 0 active and 0 backup servers left. [01] sessions active, 0 requeued, 0 remaining in queue."
|
||||
recv emerg
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: backend be3 has no server available!"
|
||||
barrier b1 sync
|
||||
recv
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: (Server be3/srv3 is UP/READY \\(leaving forced maintenance\\).|Health check for server be3/srv3 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP)"
|
||||
barrier b1 sync
|
||||
} -start
|
||||
|
||||
syslog S4 -level notice {
|
||||
recv
|
||||
expect ~ "Proxy be4 started"
|
||||
recv
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be4/srv4 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
|
||||
barrier b1 sync
|
||||
recv alert
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Server be4/srv4 is going DOWN for maintenance. 0 active and 0 backup servers left. [01] sessions active, 0 requeued, 0 remaining in queue."
|
||||
recv emerg
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: backend be4 has no server available!"
|
||||
barrier b1 sync
|
||||
recv
|
||||
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: (Server be4/srv4 is UP/READY \\(leaving forced maintenance\\).|Health check for server be4/srv4 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP)"
|
||||
barrier b1 sync
|
||||
} -start
|
||||
|
||||
|
||||
haproxy h1 -conf {
|
||||
defaults
|
||||
timeout client 1s
|
||||
timeout server 1s
|
||||
timeout connect 1s
|
||||
default-server check downinter 1s rise 1 fall 1
|
||||
|
||||
frontend fe1
|
||||
bind "fd@${fe1}"
|
||||
use_backend be1
|
||||
|
||||
frontend fe2
|
||||
bind "fd@${fe2}"
|
||||
use_backend be2
|
||||
|
||||
frontend fe3
|
||||
bind "fd@${fe3}"
|
||||
use_backend be3
|
||||
|
||||
frontend fe4
|
||||
bind "fd@${fe4}"
|
||||
use_backend be4
|
||||
|
||||
backend be1
|
||||
option log-health-checks
|
||||
log ${S1_addr}:${S1_port} daemon
|
||||
server srv1 ${s1_addr}:${s1_port}
|
||||
|
||||
backend be2
|
||||
option log-health-checks
|
||||
log ${S2_addr}:${S2_port} daemon
|
||||
server srv2 ${s2_addr}:${s2_port}
|
||||
|
||||
backend be3
|
||||
option log-health-checks
|
||||
log ${S3_addr}:${S3_port} daemon
|
||||
server srv3 ${s3_addr}:${s3_port}
|
||||
|
||||
backend be4
|
||||
option log-health-checks
|
||||
log ${S4_addr}:${S4_port} daemon
|
||||
server srv4 ${s4_addr}:${s4_port}
|
||||
} -start
|
||||
|
||||
haproxy h1 -cli {
|
||||
barrier b1 sync
|
||||
send "show servers state"
|
||||
expect ~ "# be_id be_name srv_id srv_name srv_addr srv_op_state srv_admin_state srv_uweight srv_iweight srv_time_since_last_change srv_check_status srv_check_result srv_check_health srv_check_state srv_agent_state bk_f_forced_id srv_f_forced_id srv_fqdn srv_port srvrecord\n6 be1 1 srv1 ${s1_addr} 2 0 1 1 [[:digit:]]+ 6 3 1 6 0 0 0 - ${s1_port} -\n7 be2 1 srv2 ${s2_addr} 2 0 1 1 [[:digit:]]+ 6 3 1 6 0 0 0 - ${s2_port} -\n8 be3 1 srv3 ${s3_addr} 2 0 1 1 [[:digit:]]+ 6 3 1 6 0 0 0 - ${s3_port} -\n9 be4 1 srv4 ${s4_addr} 2 0 1 1 [[:digit:]]+ 6 3 1 6 0 0 0 - ${s4_port} -"
|
||||
}
|
||||
|
||||
haproxy h1 -cli {
|
||||
send "disable server be1/srv1"
|
||||
expect ~ .*
|
||||
}
|
||||
|
||||
haproxy h1 -cli {
|
||||
send "disable server be2/srv2"
|
||||
expect ~ .*
|
||||
}
|
||||
|
||||
haproxy h1 -cli {
|
||||
send "disable server be3/srv3"
|
||||
expect ~ .*
|
||||
}
|
||||
|
||||
haproxy h1 -cli {
|
||||
send "disable server be4/srv4"
|
||||
expect ~ .*
|
||||
}
|
||||
|
||||
haproxy h1 -cli {
|
||||
barrier b1 sync
|
||||
send "show servers state"
|
||||
expect ~ "# be_id be_name srv_id srv_name srv_addr srv_op_state srv_admin_state srv_uweight srv_iweight srv_time_since_last_change srv_check_status srv_check_result srv_check_health srv_check_state srv_agent_state bk_f_forced_id srv_f_forced_id srv_fqdn srv_port srvrecord\n6 be1 1 srv1 ${s1_addr} 0 1 1 1 [[:digit:]]+ 6 3 [01] 14 0 0 0 - ${s1_port} -\n7 be2 1 srv2 ${s2_addr} 0 1 1 1 [[:digit:]]+ 6 3 [01] 14 0 0 0 - ${s2_port} -\n8 be3 1 srv3 ${s3_addr} 0 1 1 1 [[:digit:]]+ 6 3 [01] 14 0 0 0 - ${s3_port} -\n9 be4 1 srv4 ${s4_addr} 0 1 1 1 [[:digit:]]+ 6 3 [01] 14 0 0 0 - ${s4_port} -"
|
||||
}
|
||||
|
||||
haproxy h1 -cli {
|
||||
send "enable server be1/srv1"
|
||||
expect ~ .*
|
||||
}
|
||||
|
||||
haproxy h1 -cli {
|
||||
send "enable server be2/srv2"
|
||||
expect ~ .*
|
||||
}
|
||||
|
||||
haproxy h1 -cli {
|
||||
send "enable server be3/srv3"
|
||||
expect ~ .*
|
||||
}
|
||||
|
||||
haproxy h1 -cli {
|
||||
send "enable server be4/srv4"
|
||||
expect ~ .*
|
||||
}
|
||||
|
||||
haproxy h1 -cli {
|
||||
barrier b1 sync
|
||||
send "show servers state"
|
||||
expect ~ "# be_id be_name srv_id srv_name srv_addr srv_op_state srv_admin_state srv_uweight srv_iweight srv_time_since_last_change srv_check_status srv_check_result srv_check_health srv_check_state srv_agent_state bk_f_forced_id srv_f_forced_id srv_fqdn srv_port srvrecord\n6 be1 1 srv1 ${s1_addr} 2 0 1 1 [[:digit:]]+ 6 [03] 1 [67] 0 0 0 - ${s1_port} -\n7 be2 1 srv2 ${s2_addr} 2 0 1 1 [[:digit:]]+ 6 [03] 1 [67] 0 0 0 - ${s2_port} -\n8 be3 1 srv3 ${s3_addr} 2 0 1 1 [[:digit:]]+ 6 [03] 1 [67] 0 0 0 - ${s3_port} -\n9 be4 1 srv4 ${s4_addr} 2 0 1 1 [[:digit:]]+ 6 [03] 1 [67] 0 0 0 - ${s4_port} -"
|
||||
}
|
||||
|
||||
syslog S1 -wait
|
||||
syslog S2 -wait
|
||||
syslog S3 -wait
|
||||
syslog S4 -wait
|
||||
|
Loading…
Reference in New Issue
Block a user