varnishtest "HTTP request tests: H1 to H1 (HTX mode supported only for HAProxy >= 1.9)"

# Run it with HAPROXY_PROGRAM=$PWD/haproxy varnishtest -l -k -t 1 "$1"

feature ignore_unknown_macro

server s1 {
	##
	## Handle GET requests
	##
	rxreq
	expect req.bodylen == 0
	expect req.body == ""
	txresp \
	  -status 200 \
	  -body "response 1"

	rxreq
	expect req.bodylen == 0
	expect req.body == ""
	txresp \
	  -status 200 \
	  -body "response 2"

	rxreq
	expect req.bodylen == 38
	expect req.body == "this must be delivered, like it or not"
	txresp \
	  -status 200 \
	  -body "response 3"

	rxreq
	expect req.bodylen == 0
	expect req.body == ""
	txresp \
	  -status 200 \
	  -body "response 4"

	accept

	##
	## Handle HEAD requests
	##
	rxreq
	expect req.bodylen == 0
	expect req.body == ""
	txresp \
	  -status 200 \
	  -body "response 1"

	accept

	rxreq
	expect req.bodylen == 0
	expect req.body == ""
	txresp \
	  -status 200 \
	  -body "response 2"

	accept

	rxreq
	expect req.bodylen == 38
	expect req.body == "this must be delivered, like it or not"
	txresp \
	  -status 200 \
	  -body "response 3"

	accept

	rxreq
	expect req.bodylen == 0
	expect req.body == ""
	txresp \
	  -status 200 \
	  -body "response 4"

	accept

	##
	## Handle POST requests
	##
	# POST request without body
	rxreq
	expect req.bodylen == 0
	expect req.body == ""
	txresp \
	  -status 200 \
	  -body "response 1"

	# POST request without body
	rxreq
	expect req.bodylen == 0
	expect req.body == ""
	txresp \
	  -status 200 \
	  -body "response 2"

	# POST request with a body
	rxreq
	expect req.bodylen == 12
	expect req.body == "this is sent"
	txresp \
	  -status 200 \
	  -body "response 3"

	# POST request without body
	rxreq
	expect req.bodylen == 0
	expect req.body == ""
	txresp \
	  -status 200 \
	  -body "response 4"
} -repeat 3 -start

haproxy h1 -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}"

    listen feh1
	bind "fd@${feh1}"
	#bind "fd@${feh2}" proto h2
	server s1 ${s1_addr}:${s1_port}
} -start

# GET requests
client c1h1 -connect ${h1_feh1_sock} {
	# first request is valid
	txreq \
	  -req "GET" \
	  -url "/test1.html"
	rxresp
	expect resp.status == 200
	expect resp.body == "response 1"

	# second request is valid and advertises C-L:0
	txreq \
	  -req "GET" \
	  -url "/test2.html" \
          -hdr "content-length: 0"
	rxresp
	expect resp.status == 200
	expect resp.body == "response 2"

	# third request sends a body with a GET
	txreq \
	  -req "GET" \
	  -url "/test3.html" \
          -body "this must be delivered, like it or not"
	rxresp
	expect resp.status == 200
	expect resp.body == "response 3"

	# fourth request is valid and advertises C-L:0, and close, and is
	# followed by a string "this is not sent\r\n\r\n" which must be
	# dropped.
	txreq \
	  -req "GET" \
	  -url "/test4.html" \
          -hdr "content-length: 0" \
          -hdr "connection: close"
	# "this is not sent"
	sendhex "74787973207973206E6F742073656E740D0A0D0A"
	rxresp
	expect resp.status == 200
	expect resp.body == "response 4"

	# the connection is expected to be closed and no more response must
	# arrive here.
	expect_close
} -run

# HEAD requests
# Note: for now they fail with varnishtest, which expects the amount of
# data advertised in the content-length response.
client c2h1 -connect ${h1_feh1_sock} {
	# first request is valid
	txreq \
	  -req "HEAD" \
	  -url "/test11.html"
	rxresp
	expect resp.status == 200
	expect resp.body == ""

	# second request is valid and advertises C-L:0
	txreq \
	  -req "HEAD" \
	  -url "/test12.html" \
          -hdr "content-length: 0"
	rxresp
	expect resp.status == 200
	expect resp.body == ""

	# third request sends a body with a HEAD
	txreq \
	  -req "HEAD" \
	  -url "/test13.html" \
          -body "this must be delivered, like it or not"
	rxresp
	expect resp.status == 200
	expect resp.body == ""

	# fourth request is valid and advertises C-L:0, and close, and is
	# followed by a string "this is not sent\r\n\r\n" which must be
	# dropped.
	txreq \
	  -req "HEAD" \
	  -url "/test14.html" \
          -hdr "content-length: 0" \
          -hdr "connection: close"
	# "this is not sent"
	sendhex "74787973207973206E6F742073656E740D0A0D0A"
	rxresp
	expect resp.status == 200
	expect resp.body == ""

	# the connection is expected to be closed and no more response must
	# arrive here.
	expect_close
} -run

client c3h1 -connect ${h1_feh1_sock} {
	# first request is valid
	txreq \
	  -req "POST" \
	  -url "/test21.html"
	rxresp
	expect resp.status == 200
	expect resp.body == "response 1"

	# second request is valid and advertises C-L:0
	txreq \
	  -req "POST" \
	  -url "/test22.html" \
          -hdr "content-length: 0"
	rxresp
	expect resp.status == 200
	expect resp.body == "response 2"

	# third request is valid and advertises (and sends) some contents
	txreq \
	  -req "POST" \
	  -url "/test23.html" \
	  -body "this is sent"
	rxresp
	expect resp.status == 200
	expect resp.body == "response 3"

	# fourth request is valid and advertises C-L:0, and close, and is
	# followed by a string "this is not sent\r\n\r\n" which must be
	# dropped.
	txreq \
	  -req "POST" \
	  -url "/test24.html" \
          -hdr "content-length: 0" \
          -hdr "connection: close"
	# "this is not sent"
	sendhex "74787973207973206E6F742073656E740D0A0D0A"
	rxresp
	expect resp.status == 200
	expect resp.body == "response 4"

	# the connection is expected to be closed and no more response must
	# arrive here.
	expect_close
} -run
