# This script is to test the proper behavior with dynamic servers insertion and # deletion, in particular with the load-balancing of requests. # 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 "${HAPROXY_TEST_TIMEOUT-5s}" timeout client "${HAPROXY_TEST_TIMEOUT-5s}" timeout server "${HAPROXY_TEST_TIMEOUT-5s}" 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." } # 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