Commit 1623fa88 authored by Geoff Simmons's avatar Geoff Simmons

add a test for adding dynamic backends to directors at runtime, and

for deleting backends that have been added to directors
parent 394dcc71
varnishtest "add and remove backends from directors at runtime"
server s1 {} -start
server s2 {
rxreq
txresp
} -start
varnish v1 -vcl {
import backend_dyn from "${vmod_topbuild}/src/.libs/libvmod_backend_dyn.so";
import ${vmod_directors};
backend dummy { .host="${bad_ip}"; }
sub vcl_init {
if (!backend_dyn.create(name="be", host="${s1_addr}",
port="${s1_port}")) {
return(fail);
}
new rr = directors.round_robin();
rr.add_backend(backend_dyn.by_name("be"));
}
sub vcl_recv {
if (req.method == "DELETE") {
if (backend_dyn.delete(backend_dyn.by_name("be"))) {
return(synth(204));
}
else {
return(synth(500));
}
}
if (req.method == "PUT") {
if (!backend_dyn.create(name="s2", host="${s2_addr}",
port="${s2_port}")) {
return(synth(500));
}
rr.add_backend(backend_dyn.by_name("s2"));
return(synth(204));
}
set req.backend_hint = rr.backend();
return(pass);
}
sub vcl_backend_response {
set beresp.http.X-Backend = beresp.backend.name;
}
} -start
client c1 {
txreq -req "PUT"
rxresp
expect resp.status == 204
txreq -req "DELETE"
rxresp
expect resp.status == 204
txreq
rxresp
expect resp.status == 200
expect resp.http.X-Backend == "s2"
} -run
server s2 -start
varnish v1 -stop
varnish v1 -start
client c1 {
txreq -req "DELETE"
rxresp
expect resp.status == 204
txreq
rxresp
expect resp.status == 503
txreq -req "PUT"
rxresp
expect resp.status == 204
txreq
rxresp
expect resp.status == 200
expect resp.http.X-Backend == "s2"
} -run
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment