varnishtest "If-None-Match support" #REQUIRE_VERSION=2.3 feature ignore_unknown_macro server s1 { rxreq txresp -nolen -hdr "Transfer-Encoding: chunked" \ -hdr "ETag: \"etag\"" chunkedlen 1 chunkedlen 1 chunkedlen 2 chunkedlen 3 chunkedlen 5 chunkedlen 8 chunkedlen 13 chunkedlen 21 chunkedlen 34 chunkedlen 55 chunkedlen 89 chunkedlen 144 chunkedlen 233 chunkedlen 0 } -start haproxy h1 -conf { global # WT: limit false-positives causing "HTTP header incomplete" due to # idle server connections being randomly used and randomly expiring # under us. tune.idle-pool.shared off defaults mode http timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" timeout client "${HAPROXY_TEST_TIMEOUT-5s}" timeout server "${HAPROXY_TEST_TIMEOUT-5s}" frontend fe bind "fd@${fe}" default_backend test backend test http-request cache-use my_cache server www ${s1_addr}:${s1_port} http-response cache-store my_cache cache my_cache total-max-size 3 max-age 20 max-object-size 3072 } -start client c1 -connect ${h1_fe_sock} { txreq rxresp expect resp.status == 200 expect resp.bodylen == 609 txreq rxresp expect resp.status == 200 expect resp.bodylen == 609 txreq \ -hdr "if-none-match: *" rxresp expect resp.status == 304 txreq \ -hdr "if-none-match: \"etag\"" rxresp expect resp.status == 304 txreq \ -hdr "if-none-match: W/\"etag\"" rxresp expect resp.status == 304 } -run client c2 -connect ${h1_fe_sock} { txreq \ -hdr "if-none-match: \"wrong_etag\"" rxresp expect resp.status == 200 expect resp.bodylen == 609 txreq \ -hdr "if-none-match: W/\"wrong_etag\", W/\"etag\"" rxresp expect resp.status == 304 } -run