varnishtest "Test the proper interaction between http-reuse and backend in transparent mode" feature cmd "$HAPROXY_PROGRAM -cc 'feature(TPROXY)'" # If backend is used with the transparent mode, the connection are considered # as private and should only be reused for requests of the same session. # This is similar to the http-reuse never mode #REQUIRE_VERSION=2.4 feature ignore_unknown_macro haproxy h1 -conf { defaults mode http listen sender bind "fd@${feS}" http-request set-header client-id %[req.hdr(client-id)] if { req.hdr(client-id) -m found } option transparent http-request set-dst-port int(${h1_feR_port}) listen receiver bind "fd@${feR}" http-request set-var(sess.client_id) req.hdr(client-id) http-request return status 200 http-after-response set-header http_first_request %[http_first_req] http-after-response set-header client-id %[var(sess.client_id)] } -start client c1 -connect ${h1_feS_sock} { txreq \ -hdr "client-id: c1" rxresp expect resp.http.http_first_request == "1" txreq rxresp expect resp.http.http_first_request == "0" expect resp.http.client-id == "c1" txreq rxresp expect resp.http.http_first_request == "0" expect resp.http.client-id == "c1" } -run client c2 -connect ${h1_feS_sock} { txreq \ -hdr "client-id: c2" rxresp expect resp.http.http_first_request == "1" expect resp.http.client-id == "c2" txreq rxresp expect resp.http.http_first_request == "0" expect resp.http.client-id == "c2" txreq rxresp expect resp.http.http_first_request == "0" expect resp.http.client-id == "c2" } -run client c3 -connect ${h1_feS_sock} { txreq \ -hdr "client-id: c3" rxresp expect resp.http.http_first_request == "1" expect resp.http.client-id == "c3" txreq rxresp expect resp.http.http_first_request == "0" expect resp.http.client-id == "c3" txreq rxresp expect resp.http.http_first_request == "0" expect resp.http.client-id == "c3" } -run