mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-10 16:00:08 +00:00
14c3c5c121
Relax the condition on "delete server" CLI handler to be able to remove all servers, even non dynamic, except if they are flagged as non purgeable. This change is necessary to extend the use cases for dynamic servers with reload. It's expected that each dynamic server created via the CLI is manually commited in the haproxy configuration by the user. Dynamic servers will be present on reload only if they are present in the configuration file. This means that non-dynamic servers must be allowed to be removable at runtime. The dynamic servers removal reg-test has been updated and renamed to reflect its purpose. A new test is present to check that non-purgeable servers cannot be removed.
99 lines
2.0 KiB
Plaintext
99 lines
2.0 KiB
Plaintext
# 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 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."
|
|
}
|
|
|
|
# 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
|
|
|