varnishtest "Test the proper interaction between http-reuse and backend in transparent mode"

# 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

