varnishtest "Delete server via cli"

feature ignore_unknown_macro

#REQUIRE_VERSION=2.4

# static server
server s1 -repeat 3 {
	rxreq
	txresp \
	  -body "resp from s1"
} -start

# use as a dynamic server, added then deleted via CLI
server s2 -repeat 3 {
	rxreq
	txresp \
	  -body "resp from s2"
} -start

haproxy h1 -conf {
	defaults
		mode http
		timeout connect 1s
		timeout client  1s
		timeout server  1s

	frontend fe
		bind "fd@${feS}"
		default_backend test

	backend test
		server s1 ${s1_addr}:${s1_port}
} -start

# add a new dynamic server to be able to delete it then
haproxy h1 -cli {
	# add a dynamic server and enable it
	send "experimental-mode on; add server test/s2 ${s2_addr}:${s2_port}"
	expect ~ "New server registered."

	send "enable server test/s2"
	expect ~ ".*"
}

haproxy h1 -cli {
	# experimental mode disabled
	send "del server test/s1"
	expect ~ "This command is restricted to experimental mode only."

	# non existent backend
	send "experimental-mode on; del server foo/s1"
	expect ~ "No such backend."

	# non existent server
	send "experimental-mode on; del server test/other"
	expect ~ "No such server."

	# static server
	send "experimental-mode on; del server test/s1"
	expect ~ "Only servers added at runtime via <add server> CLI cmd can be deleted."
}

# first check that both servers are active
client c1 -connect ${h1_feS_sock} {
	txreq
	rxresp
	expect resp.body == "resp from s1"

	txreq
	rxresp
	expect resp.body == "resp from s2"
} -run

# delete the dynamic server
haproxy h1 -cli {
	# server not in maintenance mode
	send "experimental-mode on; del server test/s2"
	expect ~ "Only servers in maintenance mode can be deleted."

	send "disable server test/s2"
	expect ~ ".*"

	# valid command
	send "experimental-mode on; del server test/s2"
	expect ~ "Server deleted."
}

# now check that only the first server is used
client c2 -connect ${h1_feS_sock} {
	txreq
	rxresp
	expect resp.body == "resp from s1"

	txreq
	rxresp
	expect resp.body == "resp from s1"
} -run

