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
