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