mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-03 12:03:02 +00:00
9d511b3c27
Now that warnings were almost all removed, let's enable zero-warning via -dW. All tests were adjusted, but two: - mcli/mcli_start_progs.vtc: the programs section currently cannot be silenced - stats/stats-file.vtc: the warning comes from the stats file itself on comment lines. All other ones are now OK.
309 lines
8.8 KiB
Plaintext
309 lines
8.8 KiB
Plaintext
varnishtest "Compression sets Vary header"
|
|
|
|
#REQUIRE_OPTION=ZLIB|SLZ
|
|
|
|
feature ignore_unknown_macro
|
|
|
|
server s1 {
|
|
rxreq
|
|
expect req.url == "/plain/accept-encoding-gzip"
|
|
expect req.http.accept-encoding == "gzip"
|
|
txresp \
|
|
-hdr "Content-Type: text/plain" \
|
|
-bodylen 100
|
|
|
|
rxreq
|
|
expect req.url == "/plain/accept-encoding-invalid"
|
|
expect req.http.accept-encoding == "invalid"
|
|
txresp \
|
|
-hdr "Content-Type: text/plain" \
|
|
-bodylen 100
|
|
|
|
rxreq
|
|
expect req.url == "/plain/accept-encoding-null"
|
|
expect req.http.accept-encoding == "<undef>"
|
|
txresp \
|
|
-hdr "Content-Type: text/plain" \
|
|
-bodylen 100
|
|
|
|
rxreq
|
|
expect req.url == "/html/accept-encoding-gzip"
|
|
expect req.http.accept-encoding == "gzip"
|
|
txresp \
|
|
-hdr "Content-Type: text/html" \
|
|
-bodylen 100
|
|
|
|
rxreq
|
|
expect req.url == "/html/accept-encoding-invalid"
|
|
expect req.http.accept-encoding == "invalid"
|
|
txresp \
|
|
-hdr "Content-Type: text/html" \
|
|
-bodylen 100
|
|
|
|
|
|
rxreq
|
|
expect req.url == "/html/accept-encoding-null"
|
|
expect req.http.accept-encoding == "<undef>"
|
|
txresp \
|
|
-hdr "Content-Type: text/html" \
|
|
-bodylen 100
|
|
|
|
rxreq
|
|
expect req.url == "/dup-etag/accept-encoding-gzip"
|
|
expect req.http.accept-encoding == "gzip"
|
|
txresp \
|
|
-hdr "Content-Type: text/plain" \
|
|
-hdr "ETag: \"123\"" \
|
|
-hdr "ETag: \"123\"" \
|
|
-bodylen 100
|
|
} -repeat 2 -start
|
|
|
|
|
|
server s2 {
|
|
rxreq
|
|
expect req.url == "/vary/no-vary"
|
|
expect req.http.accept-encoding == "gzip"
|
|
txresp \
|
|
-hdr "Content-Type: text/plain" \
|
|
-bodylen 100
|
|
|
|
rxreq
|
|
expect req.url == "/vary/accept-encoding"
|
|
expect req.http.accept-encoding == "gzip"
|
|
txresp \
|
|
-hdr "Content-Type: text/plain" \
|
|
-hdr "Vary: Accept-Encoding" \
|
|
-bodylen 100
|
|
|
|
rxreq
|
|
expect req.url == "/vary/other"
|
|
expect req.http.accept-encoding == "gzip"
|
|
txresp \
|
|
-hdr "Content-Type: text/plain" \
|
|
-hdr "Vary: Other" \
|
|
-bodylen 100
|
|
|
|
rxreq
|
|
expect req.url == "/vary/accept-encoding-and-other"
|
|
expect req.http.accept-encoding == "gzip"
|
|
txresp \
|
|
-hdr "Content-Type: text/plain" \
|
|
-hdr "Vary: Accept-Encoding,Other" \
|
|
-bodylen 100
|
|
|
|
rxreq
|
|
expect req.url == "/vary/other-and-accept-encoding"
|
|
expect req.http.accept-encoding == "gzip"
|
|
txresp \
|
|
-hdr "Content-Type: text/plain" \
|
|
-hdr "Vary: Other,Accept-Encoding" \
|
|
-bodylen 100
|
|
|
|
rxreq
|
|
expect req.url == "/vary/empty"
|
|
expect req.http.accept-encoding == "gzip"
|
|
txresp \
|
|
-hdr "Content-Type: text/plain" \
|
|
-hdr "Vary: " \
|
|
-bodylen 100
|
|
} -start
|
|
|
|
|
|
haproxy h1 -arg '-dW' -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-gzip
|
|
bind "fd@${fe_gzip}"
|
|
default_backend be-gzip
|
|
|
|
backend be-gzip
|
|
compression algo gzip
|
|
compression type text/plain
|
|
server www ${s1_addr}:${s1_port}
|
|
|
|
frontend fe-nothing
|
|
bind "fd@${fe_nothing}"
|
|
default_backend be-nothing
|
|
|
|
backend be-nothing
|
|
server www ${s1_addr}:${s1_port}
|
|
|
|
frontend fe-vary
|
|
bind "fd@${fe_vary}"
|
|
default_backend be-vary
|
|
|
|
backend be-vary
|
|
compression algo gzip
|
|
compression type text/plain
|
|
server www ${s2_addr}:${s2_port}
|
|
|
|
} -start
|
|
|
|
client c1 -connect ${h1_fe_gzip_sock} {
|
|
txreq -url "/plain/accept-encoding-gzip" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.content-encoding == "gzip"
|
|
expect resp.http.vary == "Accept-Encoding"
|
|
gunzip
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/plain/accept-encoding-invalid" \
|
|
-hdr "Accept-Encoding: invalid"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/plain/accept-encoding-null"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/html/accept-encoding-gzip" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/html/accept-encoding-invalid" \
|
|
-hdr "Accept-Encoding: invalid"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/html/accept-encoding-null"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/dup-etag/accept-encoding-gzip" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
} -run
|
|
|
|
# This Client duplicates c1, against the "nothing" frontend, ensuring no Vary header is ever set.
|
|
client c2 -connect ${h1_fe_nothing_sock} {
|
|
txreq -url "/plain/accept-encoding-gzip" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/plain/accept-encoding-invalid" \
|
|
-hdr "Accept-Encoding: invalid"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/plain/accept-encoding-null"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/html/accept-encoding-gzip" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/html/accept-encoding-invalid" \
|
|
-hdr "Accept-Encoding: invalid"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/html/accept-encoding-null"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/dup-etag/accept-encoding-gzip" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.vary == "<undef>"
|
|
expect resp.bodylen == 100
|
|
} -run
|
|
|
|
|
|
client c3 -connect ${h1_fe_vary_sock} {
|
|
txreq -url "/vary/no-vary" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.content-encoding == "gzip"
|
|
expect resp.http.vary == "Accept-Encoding"
|
|
gunzip
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/vary/accept-encoding" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.content-encoding == "gzip"
|
|
expect resp.http.vary == "Accept-Encoding"
|
|
gunzip
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/vary/other" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.content-encoding == "gzip"
|
|
expect resp.http.vary == "Other,Accept-Encoding"
|
|
gunzip
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/vary/accept-encoding-and-other" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.content-encoding == "gzip"
|
|
expect resp.http.vary == "Accept-Encoding,Other"
|
|
gunzip
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/vary/other-and-accept-encoding" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.content-encoding == "gzip"
|
|
expect resp.http.vary == "Other,Accept-Encoding"
|
|
gunzip
|
|
expect resp.bodylen == 100
|
|
|
|
txreq -url "/vary/empty" \
|
|
-hdr "Accept-Encoding: gzip"
|
|
rxresp
|
|
expect resp.status == 200
|
|
expect resp.http.content-encoding == "gzip"
|
|
expect resp.http.vary == "Accept-Encoding"
|
|
gunzip
|
|
expect resp.bodylen == 100
|
|
} -run
|