varnishtest "Filtering test with several filters and random forwarding (via trace filter)" #REQUIRE_VERSION=2.4 #REQUIRE_OPTION=ZLIB|SLZ #REGTEST_TYPE=slow feature ignore_unknown_macro barrier b1 cond 2 -cyclic server s1 { rxreq expect req.url == "/" expect req.bodylen == 1048576 expect req.http.accept-encoding == "" txresp \ -hdr "Content-Type: text/plain" \ -bodylen 1048576 rxreq expect req.url == "127.0.0.1:80" txresp -nolen recv 36000 send_n 1000 "0123456789abcdefghijklmnopqrstuvwxyz" barrier b1 sync accept rxreq expect req.url == "/" txresp -nolen \ -hdr "Content-Type: text/plain" \ -bodylen 20480 close accept rxreq expect req.url == "/" txresp -nolen close accept rxreq expect req.url == "/" expect req.bodylen == 20480 txresp -nolen \ -hdr "Content-Type: text/plain" \ -bodylen 20480 } -start haproxy h1 -conf { defaults mode http timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" timeout client "${HAPROXY_TEST_TIMEOUT-5s}" timeout server "${HAPROXY_TEST_TIMEOUT-5s}" frontend fe1 bind "fd@${fe1}" compression offload compression algo gzip filter trace name "BEFORE" random-forwarding quiet filter compression filter trace name "AFTER" random-forwarding quiet default_backend be1 backend be1 server www ${s1_addr}:${s1_port} listen li1 mode tcp bind "fd@${li1}" # Validate nothing is blocked in TCP mode filter compression server www ${s1_addr}:${s1_port} } -start client c1 -connect ${h1_fe1_sock} { txreq -url "/" \ -hdr "Accept-Encoding: gzip" \ -hdr "Content-Type: text/plain" \ -bodylen 1048576 rxresp expect resp.status == 200 expect resp.http.content-encoding == "gzip" expect resp.http.transfer-encoding == "chunked" gunzip expect resp.bodylen == 1048576 txreq -method "CONNECT" -url "127.0.0.1:80" -nolen rxresp -no_obj expect resp.status == 200 send_n 1000 "0123456789abcdefghijklmnopqrstuvwxyz" recv 36000 barrier b1 sync } -run client c2 -connect ${h1_fe1_sock} { txreq -url "/" \ -hdr "Accept-Encoding: gzip" \ -hdr "Content-Type: text/plain" rxresp expect resp.status == 200 expect resp.http.content-encoding == "" expect resp.http.transfer-encoding == "" expect resp.http.content-length == "" expect resp.bodylen == 20480 } -run client c3 -connect ${h1_fe1_sock} { txreq -url "/" \ -hdr "Accept-Encoding: gzip" \ -hdr "Content-Type: text/plain" rxresp expect resp.status == 200 expect resp.http.content-encoding == "" expect resp.http.transfer-encoding == "" expect resp.http.content-length == "" expect resp.bodylen == 0 } -run client c4 -connect ${h1_li1_sock} { txreq -url "/" \ -hdr "Accept-Encoding: gzip" \ -hdr "Content-Type: text/plain" \ -bodylen 20480 rxresp expect resp.status == 200 expect resp.http.content-encoding == "" expect resp.http.transfer-encoding == "" expect resp.http.content-length == "" expect resp.bodylen == 20480 expect_close } -run