1varnishtest "Test xkey vmod multiple objects purging multiple keys" 2 3server s1 { 4 rxreq 5 txresp -hdr "xkey: 1000 2000 3000" 6 rxreq 7 txresp -hdr "xkey: 4000 5000 6000" 8 rxreq 9 txresp -hdr "xkey: 7000 8000 9000" 10} -start 11 12varnish v1 -vcl+backend { 13 import xkey from "${vmod_builddir}/.libs/libvmod_xkey.so"; 14 15 sub vcl_recv { 16 if (req.http.xkey-purge) { 17 if (xkey.purge(req.http.xkey-purge) != 0) { 18 return (synth(200, "Purged")); 19 } else { 20 return (synth(404, "No key")); 21 } 22 } 23 } 24 25 sub vcl_backend_response { 26 set beresp.ttl = 60s; 27 set beresp.grace = 0s; 28 set beresp.keep = 0s; 29 } 30 31 sub vcl_synth { 32 set resp.http.reason = resp.reason; 33 } 34} -start 35 36client c1 { 37 txreq -url "/one" 38 rxresp 39 txreq -url "/two" 40 rxresp 41 txreq -url "/three" 42 rxresp 43} -run 44 45varnish v1 -expect n_object == 3 46 47client c1 { 48 txreq -hdr "xkey-purge: 1000 5000 9000" 49 rxresp 50 expect resp.status == 200 51 expect resp.http.reason == "Purged" 52} -run 53 54delay 1 55 56varnish v1 -expect n_object == 0 57