mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-16 16:34:42 +00:00
79c52ec6b4
Create a regtest for the 'track' keyword support by dynamic servers. First checks are executed to ensure that tracking cannot be activated on non-check server or dynamic servers. Then, 3 scenarii are written to ensure that the deletion of a dynamic server with track is properly handled and other servers in the track chain are properly maintained.
243 lines
6.4 KiB
Plaintext
243 lines
6.4 KiB
Plaintext
varnishtest "Add/Delete server via cli with track support"
|
|
|
|
feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev0)'"
|
|
feature cmd "$HAPROXY_PROGRAM -cc 'feature(OPENSSL)'"
|
|
feature ignore_unknown_macro
|
|
|
|
|
|
# just use to provide s1_{addr,port} macros
|
|
server s1 {
|
|
}
|
|
|
|
|
|
# scenario 1
|
|
# -> 3 dynamic servers, delete the first one
|
|
syslog S1 {
|
|
recv notice
|
|
expect ~ "Server be1/s1 is UP/READY"
|
|
recv notice
|
|
expect ~ "Server be1/s2 is UP/READY"
|
|
recv notice
|
|
expect ~ "Server be1/s3 is UP/READY"
|
|
|
|
recv alert
|
|
expect ~ "Server be1/srv is going DOWN for maintenance."
|
|
recv alert
|
|
expect ~ "Server be1/s3 is going DOWN for maintenance."
|
|
recv alert
|
|
expect ~ "Server be1/s2 is going DOWN for maintenance."
|
|
recv alert
|
|
expect ~ "Server be1/s1 is going DOWN for maintenance."
|
|
|
|
recv notice
|
|
expect ~ "Server be1/srv is UP/READY"
|
|
recv notice
|
|
expect ~ "Server be1/s3 is UP/READY"
|
|
recv notice
|
|
expect ~ "Server be1/s2 is UP/READY"
|
|
} -start
|
|
|
|
# scenario 2
|
|
# -> 3 dynamic servers, delete the middle one
|
|
syslog S2 {
|
|
recv notice
|
|
expect ~ "Server be2/s1 is UP/READY"
|
|
recv notice
|
|
expect ~ "Server be2/s2 is UP/READY"
|
|
recv notice
|
|
expect ~ "Server be2/s3 is UP/READY"
|
|
|
|
recv alert
|
|
expect ~ "Server be2/srv is going DOWN for maintenance."
|
|
recv alert
|
|
expect ~ "Server be2/s3 is going DOWN for maintenance."
|
|
recv alert
|
|
expect ~ "Server be2/s2 is going DOWN for maintenance."
|
|
recv alert
|
|
expect ~ "Server be2/s1 is going DOWN for maintenance."
|
|
|
|
recv notice
|
|
expect ~ "Server be2/srv is UP/READY"
|
|
recv notice
|
|
expect ~ "Server be2/s3 is UP/READY"
|
|
recv notice
|
|
expect ~ "Server be2/s1 is UP/READY"
|
|
} -start
|
|
|
|
# scenario 3
|
|
# -> 3 dynamic servers, delete all of them
|
|
syslog S3 {
|
|
recv notice
|
|
expect ~ "Server be3/s1 is UP/READY"
|
|
recv notice
|
|
expect ~ "Server be3/s2 is UP/READY"
|
|
recv notice
|
|
expect ~ "Server be3/s3 is UP/READY"
|
|
|
|
recv alert
|
|
expect ~ "Server be3/s1 is going DOWN for maintenance."
|
|
recv alert
|
|
expect ~ "Server be3/s3 is going DOWN for maintenance."
|
|
recv alert
|
|
expect ~ "Server be3/s2 is going DOWN for maintenance."
|
|
|
|
recv alert
|
|
expect ~ "Server be3/srv is going DOWN for maintenance."
|
|
|
|
recv notice
|
|
expect ~ "Server be3/srv is UP/READY"
|
|
} -start
|
|
|
|
|
|
haproxy h1 -conf {
|
|
global
|
|
stats socket "${tmpdir}/h1/stats" level admin
|
|
|
|
backend be_check
|
|
server srv_check ${s1_addr}:${s1_port} check
|
|
server srv_no_check ${s1_addr}:${s1_port}
|
|
|
|
backend be1
|
|
log ${S1_addr}:${S1_port} daemon
|
|
server srv ${s1_addr}:${s1_port} check
|
|
|
|
backend be2
|
|
log ${S2_addr}:${S2_port} daemon
|
|
server srv ${s1_addr}:${s1_port} check
|
|
|
|
backend be3
|
|
log ${S3_addr}:${S3_port} daemon
|
|
server srv ${s1_addr}:${s1_port} check
|
|
} -start
|
|
|
|
|
|
###
|
|
# check the support of the 'track' keyword on 'add server' CLI command.
|
|
# rejection must happen if track on a non-checked or a dynamic server
|
|
###
|
|
haproxy h1 -cli {
|
|
# invalid command: track on a non-checked server
|
|
send "experimental-mode on; add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_no_check"
|
|
expect ~ "unable to use be_check/srv_no_check for tracking as it does not have any check nor agent enabled."
|
|
|
|
# valid track usage
|
|
send "experimental-mode on; add server be_check/s1 ${s1_addr}:${s1_port} track be_check/srv_check"
|
|
expect ~ "New server registered."
|
|
|
|
# invalid command: track on a dynamic server
|
|
send "experimental-mode on; add server be_check/s3 ${s1_addr}:${s1_port} track be_check/s1"
|
|
expect ~ "unable to use be_check/s1 for tracking as it is a dynamic server."
|
|
}
|
|
|
|
###
|
|
# scenario 1
|
|
#
|
|
# Add 3 dynamic servers with tracking on be1/srv
|
|
# Disable be1/srv, S1 should report all servers DOWN
|
|
# Delete the first dynamic server, enable be1/srv, S1 should report s1 and s3 UP
|
|
####
|
|
haproxy h1 -cli {
|
|
send "experimental-mode on; add server be1/s1 ${s1_addr}:${s1_port} track be1/srv"
|
|
expect ~ "New server registered."
|
|
send "enable server be1/s1"
|
|
expect ~ ".*"
|
|
|
|
send "experimental-mode on; add server be1/s2 ${s1_addr}:${s1_port} track be1/srv"
|
|
expect ~ "New server registered."
|
|
send "enable server be1/s2"
|
|
expect ~ ".*"
|
|
|
|
send "experimental-mode on; add server be1/s3 ${s1_addr}:${s1_port} track be1/srv"
|
|
expect ~ "New server registered."
|
|
send "enable server be1/s3"
|
|
expect ~ ".*"
|
|
|
|
send "disable server be1/srv"
|
|
expect ~ ".*"
|
|
|
|
send "experimental-mode on; del server be1/s1"
|
|
expect ~ "Server deleted."
|
|
|
|
send "enable server be1/srv"
|
|
expect ~ ".*"
|
|
}
|
|
|
|
###
|
|
# scenario 2
|
|
#
|
|
# Add 3 dynamic servers with tracking on be2/srv
|
|
# Disable be2/srv, S3 should report all servers DOWN
|
|
# Delete the second dynamic server, enable be2/srv, S2 should report s2 and s3 UP
|
|
####
|
|
haproxy h1 -cli {
|
|
send "experimental-mode on; add server be2/s1 ${s1_addr}:${s1_port} track be2/srv"
|
|
expect ~ "New server registered."
|
|
send "enable server be2/s1"
|
|
expect ~ ".*"
|
|
|
|
send "experimental-mode on; add server be2/s2 ${s1_addr}:${s1_port} track be2/srv"
|
|
expect ~ "New server registered."
|
|
send "enable server be2/s2"
|
|
expect ~ ".*"
|
|
|
|
send "experimental-mode on; add server be2/s3 ${s1_addr}:${s1_port} track be2/srv"
|
|
expect ~ "New server registered."
|
|
send "enable server be2/s3"
|
|
expect ~ ".*"
|
|
|
|
send "disable server be2/srv"
|
|
expect ~ ".*"
|
|
|
|
send "experimental-mode on; del server be2/s2"
|
|
expect ~ "Server deleted."
|
|
|
|
send "enable server be2/srv"
|
|
expect ~ ".*"
|
|
}
|
|
|
|
###
|
|
# scenario 3
|
|
#
|
|
# Add 3 dynamic servers with tracking on be3/srv
|
|
# Delete all of them, disable/enable be3/srv, only be3/srv should be reported
|
|
# as DOWN/UP.
|
|
####
|
|
haproxy h1 -cli {
|
|
# create server 1, track on be3/srv
|
|
send "experimental-mode on; add server be3/s1 ${s1_addr}:${s1_port} track be3/srv"
|
|
expect ~ "New server registered."
|
|
send "enable server be3/s1"
|
|
expect ~ ".*"
|
|
|
|
# create server 2, track on be3/srv
|
|
send "experimental-mode on; add server be3/s2 ${s1_addr}:${s1_port} track be3/srv"
|
|
expect ~ "New server registered."
|
|
send "enable server be3/s2"
|
|
expect ~ ".*"
|
|
|
|
# create server 3, track on be3/srv
|
|
send "experimental-mode on; add server be3/s3 ${s1_addr}:${s1_port} track be3/srv"
|
|
expect ~ "New server registered."
|
|
send "enable server be3/s3"
|
|
expect ~ ".*"
|
|
|
|
# delete all dynamic servers
|
|
send "experimental-mode on; disable server be3/s1; del server be3/s1"
|
|
expect ~ "Server deleted."
|
|
send "experimental-mode on; disable server be3/s3; del server be3/s3"
|
|
expect ~ "Server deleted."
|
|
send "experimental-mode on; disable server be3/s2; del server be3/s2"
|
|
expect ~ "Server deleted."
|
|
|
|
# disable / enable the static server
|
|
send "disable server be3/srv"
|
|
expect ~ ".*"
|
|
send "enable server be3/srv"
|
|
expect ~ ".*"
|
|
}
|
|
|
|
|
|
syslog S1 -wait
|
|
syslog S2 -wait
|
|
syslog S3 -wait
|