varnishtest "Add server via cli" feature ignore_unknown_macro #REQUIRE_VERSION=2.4 server s1 { rxreq txresp } -start haproxy h1 -conf { defaults mode http ${no-htx} option http-use-htx timeout connect 1s timeout client 1s timeout server 1s frontend fe bind "fd@${feS}" default_backend test backend test balance random backend other balance static-rr backend other2 balance random mode tcp } -start client c1 -connect ${h1_feS_sock} { txreq rxresp expect resp.status == 503 } -run haproxy h1 -cli { # experimental mode disabled send "add server foo/s1 ${s1_addr}:${s1_port}" expect ~ "This command is restricted to experimental mode only." # non existent backend send "experimental-mode on; add server foo/s1 ${s1_addr}:${s1_port}" expect ~ "No such backend." # missing address send "experimental-mode on; add server test/s1" expect ~ "'server' expects and \\[:\\] as arguments." # invalid load-balancing algo send "experimental-mode on; add server other/s1 ${s1_addr}:${s1_port}" expect ~ "Backend must use a consistent hashing method for load balancing to support dynamic servers." # invalid mux proto send "experimental-mode on; add server other2/s1 ${s1_addr}:${s1_port} proto h2" expect ~ "MUX protocol is not usable for server." # valid command send "experimental-mode on; add server test/s1 ${s1_addr}:${s1_port}" expect ~ "New server registered." # duplicate server send "experimental-mode on; add server test/s1 ${s1_addr}:${s1_port}" expect ~ "Already exists a server with the same name in backend." # valid command # specify the proto, it should be accepted for this backend send "experimental-mode on; add server test/s2 ${s1_addr}:${s1_port} proto h2" expect ~ "New server registered." } # dynamic servers are created on MAINT mode and should not be available at first client c2 -connect ${h1_feS_sock} { txreq rxresp expect resp.status == 503 } -run haproxy h1 -cli { send "enable server test/s1" expect ~ ".*" } client c3 -connect ${h1_feS_sock} { txreq rxresp expect resp.status == 200 } -run