From 34cffede3aeb6f687dfff81ccce9936ae457fd63 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 22 Feb 2023 16:12:43 +0100 Subject: [PATCH] REGTESTS: cache: Use rxresphdrs to only get headers for 304 responses 304 responses contains "Content-length" or "Transfer-encoding" headers. rxresp action expects to get a payload in this case, even if 304 reponses must not have any payload. A workaround was added to remove these headers from the 304 responses. However, a better solution is to only get the response headers from clients using rxresphdrs action. If a payload is erroneously added in these reponses, the scripts will fail the same way. So it is safe. --- reg-tests/cache/if-modified-since.vtc | 22 ++++++---------------- reg-tests/cache/if-none-match.vtc | 12 ++++-------- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/reg-tests/cache/if-modified-since.vtc b/reg-tests/cache/if-modified-since.vtc index a49e4732a..1fd9a931a 100644 --- a/reg-tests/cache/if-modified-since.vtc +++ b/reg-tests/cache/if-modified-since.vtc @@ -61,10 +61,6 @@ haproxy h1 -conf { server www ${s1_addr}:${s1_port} http-response cache-store my_cache - # Remove Transfer-Encoding header because of a vtest issue with - # 304-Not-Modified responses - http-after-response del-header transfer-encoding if { status eq 304 } - cache my_cache total-max-size 3 max-age 20 @@ -114,41 +110,35 @@ client c1 -connect ${h1_fe_sock} { # "Last-Modified" version txreq -url "/last_modified" \ -hdr "If-Modified-Since: Thu, 15 Oct 2020 22:23:24 GMT" - rxresp + rxresphdrs expect resp.status == 304 - expect resp.bodylen == 0 # "Date" version txreq -url "/date" \ -hdr "If-Modified-Since: Thu, 22 Oct 2020 16:51:12 GMT" - rxresp + rxresphdrs expect resp.status == 304 - expect resp.bodylen == 0 # "Last-Modified" and "Date" version txreq -url "/last_modified_and_date" \ -hdr "If-Modified-Since: Thu, 15 Oct 2020 16:51:12 GMT" - rxresp + rxresphdrs expect resp.status == 304 - expect resp.bodylen == 0 # Later date # "Last-Modified" version txreq -url "/last_modified" \ -hdr "If-Modified-Since: Thu, 22 Oct 2020 23:00:00 GMT" - rxresp + rxresphdrs expect resp.status == 304 - expect resp.bodylen == 0 # "Date" version txreq -url "/date" \ -hdr "If-Modified-Since: Thu, 22 Oct 2020 23:00:00 GMT" - rxresp + rxresphdrs expect resp.status == 304 - expect resp.bodylen == 0 # "Last-Modified" and "Date" version txreq -url "/last_modified_and_date" \ -hdr "If-Modified-Since: Thu, 22 Oct 2020 23:00:00 GMT" - rxresp + rxresphdrs expect resp.status == 304 - expect resp.bodylen == 0 } -run diff --git a/reg-tests/cache/if-none-match.vtc b/reg-tests/cache/if-none-match.vtc index ff90ad422..3dcaec57c 100644 --- a/reg-tests/cache/if-none-match.vtc +++ b/reg-tests/cache/if-none-match.vtc @@ -46,10 +46,6 @@ haproxy h1 -conf { server www ${s1_addr}:${s1_port} http-response cache-store my_cache - # Remove Transfer-Encoding header because of a vtest issue with - # 304-Not-Modified responses - http-after-response del-header transfer-encoding if { status eq 304 } - cache my_cache total-max-size 3 max-age 20 @@ -68,15 +64,15 @@ client c1 -connect ${h1_fe_sock} { expect resp.bodylen == 609 txreq \ -hdr "if-none-match: *" - rxresp + rxresphdrs expect resp.status == 304 txreq \ -hdr "if-none-match: \"etag\"" - rxresp + rxresphdrs expect resp.status == 304 txreq \ -hdr "if-none-match: W/\"etag\"" - rxresp + rxresphdrs expect resp.status == 304 } -run @@ -88,6 +84,6 @@ client c2 -connect ${h1_fe_sock} { expect resp.bodylen == 609 txreq \ -hdr "if-none-match: W/\"wrong_etag\", W/\"etag\"" - rxresp + rxresphdrs expect resp.status == 304 } -run