]> err.no Git - varnish/commitdiff
Add a test-case for dup purge elimination
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 20 Oct 2008 17:45:54 +0000 (17:45 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 20 Oct 2008 17:45:54 +0000 (17:45 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3330 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishtest/c00019.vtc [new file with mode: 0644]

diff --git a/varnish-cache/bin/varnishtest/c00019.vtc b/varnish-cache/bin/varnishtest/c00019.vtc
new file mode 100644 (file)
index 0000000..87c2bd6
--- /dev/null
@@ -0,0 +1,83 @@
+# $Id$
+
+test "Check purge counters and duplicate purge elimination"
+
+server s1 {
+       rxreq
+       txresp -hdr "foo: 1" -body "foo1"
+       rxreq
+       txresp -hdr "foo: 2" -body "foo2"
+       rxreq
+       txresp -hdr "foo: 3" -body "foo3"
+} -start
+
+varnish v1 -vcl+backend {} -start
+
+varnish v1 -cliok "purge.url FOO"
+
+# There is one "magic" purge from boot
+varnish v1 -expect n_purge_add == 2
+varnish v1 -cliok "purge.list"
+
+# Our fetch is not affected by the purge
+# as the FOO-purge was preexisting
+client c1 {
+       txreq -url /FOO
+       rxresp
+       expect resp.http.foo == 1
+} -run
+
+varnish v1 -cliok "purge.list"
+varnish v1 -expect n_purge_obj_test == 0
+varnish v1 -expect n_purge_re_test == 0
+
+# Add another purge
+varnish v1 -cliok "purge.url FOO"
+varnish v1 -expect n_purge_add == 3
+varnish v1 -cliok "purge.list"
+
+# The cached object will be purged, and a new
+# fetched from the backend
+client c1 {
+       txreq -url /FOO
+       rxresp
+       expect resp.http.foo == 2
+} -run
+
+varnish v1 -expect n_purge_obj_test == 1
+varnish v1 -expect n_purge_re_test == 1
+varnish v1 -cliok "purge.list"
+
+# Fetch the cached copy, just for grins
+client c1 {
+       txreq -url /FOO
+       rxresp
+       expect resp.http.foo == 2
+} -run
+
+
+# Now add another purge
+varnish v1 -cliok "purge.url FOO"
+varnish v1 -expect n_purge_add == 4
+
+# Enable dup removal of purges
+varnish v1 -cliok "param.set purge_dups on"
+
+# This should incapacitate the to previous FOO purges.
+varnish v1 -cliok "purge.url FOO"
+varnish v1 -expect n_purge_add == 5
+varnish v1 -expect n_purge_dups == 3
+varnish v1 -cliok "purge.list"
+
+# And we should get a fresh object from backend
+client c1 {
+       txreq -url /FOO
+       rxresp
+       expect resp.http.foo == 3
+} -run
+
+# With only two objects having ever been compared
+varnish v1 -expect n_purge_obj_test == 2
+varnish v1 -expect n_purge_re_test == 2
+varnish v1 -cliok "purge.list"
+