[master] af3657e Sticky fallback directors vtc
Guillaume Quintard
guillaume at varnish-software.com
Wed Feb 1 11:09:05 CET 2017
commit af3657e4ff95e05975780d9371d207a5ee0e6f89
Author: Guillaume Quintard <guillaume at varnish-software.com>
Date: Thu Jan 26 13:12:52 2017 +0100
Sticky fallback directors vtc
diff --git a/bin/varnishtest/tests/d00027.vtc b/bin/varnishtest/tests/d00027.vtc
new file mode 100644
index 0000000..476e85f
--- /dev/null
+++ b/bin/varnishtest/tests/d00027.vtc
@@ -0,0 +1,72 @@
+varnishtest "Sticky fallback director"
+
+server s1 {
+ rxreq
+ expect req.url == "/qux"
+ txresp
+} -start
+
+server s2 {
+ rxreq
+ expect req.url == "/foo"
+ txresp
+} -start
+
+server s3 {
+ rxreq
+ expect req.url == "/bar"
+ txresp
+
+ rxreq
+ expect req.url == "/baz"
+ txresp
+} -start
+
+varnish v1 -vcl+backend {
+ import directors;
+
+ sub vcl_init {
+ new vd = directors.fallback(sticky = true);
+ vd.add_backend(s1);
+ vd.add_backend(s2);
+ vd.add_backend(s3);
+ }
+
+ sub vcl_recv {
+ set req.backend_hint = vd.backend();
+ return(pass);
+ }
+
+} -start
+
+varnish v1 -cliok "backend.set_health s1 sick"
+
+client c1 {
+ txreq -url /foo
+ rxresp
+ expect resp.status == 200
+} -run
+
+varnish v1 -cliok "backend.set_health s2 sick"
+
+client c1 {
+ txreq -url /bar
+ rxresp
+ expect resp.status == 200
+} -run
+
+varnish v1 -cliok "backend.set_health s1 healthy"
+
+client c1 {
+ txreq -url /baz
+ rxresp
+ expect resp.status == 200
+} -run
+
+varnish v1 -cliok "backend.set_health s3 sick"
+
+client c1 {
+ txreq -url /qux
+ rxresp
+ expect resp.status == 200
+} -run
diff --git a/bin/varnishtest/tests/d00028.vtc b/bin/varnishtest/tests/d00028.vtc
new file mode 100644
index 0000000..07d188c
--- /dev/null
+++ b/bin/varnishtest/tests/d00028.vtc
@@ -0,0 +1,85 @@
+varnishtest "Sticky fallback director, removing backends"
+
+server s1 {
+ rxreq
+ expect req.url == "/foo"
+ txresp
+} -start
+
+server s2 {}
+
+server s3 {
+ rxreq
+ expect req.url == "/bar"
+ txresp
+
+ rxreq
+ expect req.url == "/baz"
+ txresp
+
+ rxreq
+ expect req.url == "/qux"
+ txresp
+} -start
+
+server s4 {}
+
+varnish v1 -vcl+backend {
+ import directors;
+
+ sub vcl_init {
+ new vd = directors.fallback(sticky = true);
+ vd.add_backend(s1);
+ vd.add_backend(s2);
+ vd.add_backend(s3);
+ vd.add_backend(s4);
+ }
+
+ sub vcl_recv {
+ set req.backend_hint = vd.backend();
+ return(pass);
+ }
+
+ sub vcl_deliver {
+ if (req.url == "/bar") {
+ vd.remove_backend(s2);
+ } else if (req.url == "/baz") {
+ vd.remove_backend(s4);
+ } else if (req.url == "/qux") {
+ vd.remove_backend(s3);
+ }
+ }
+} -start
+
+varnish v1 -cliok "backend.set_health s1 sick"
+varnish v1 -cliok "backend.set_health s2 sick"
+
+client c1 {
+ txreq -url /bar
+ rxresp
+ expect resp.status == 200
+} -run
+
+varnish v1 -cliok "backend.set_health s2 healthy"
+
+client c1 {
+ txreq -url /baz
+ rxresp
+ expect resp.status == 200
+
+ txreq -url /qux
+ rxresp
+ expect resp.status == 200
+
+ txreq
+ rxresp
+ expect resp.status == 503
+} -run
+
+varnish v1 -cliok "backend.set_health s1 healthy"
+
+client c1 {
+ txreq -url /foo
+ rxresp
+ expect resp.status == 200
+} -run
More information about the varnish-commit
mailing list