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

# 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
	${no-htx} option http-use-htx
	timeout connect 1s
	timeout client  1s
	timeout server  1s

    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

client c4h1 -connect ${h1_feh1_sock} {
	# this request is invalid and advertises an invalid C-L ending with an
        # empty value, which results in a stream error.
	txreq \
	  -req "GET" \
	  -url "/test31.html" \
          -hdr "content-length: 0," \
          -hdr "connection: close"
	rxresp
	expect resp.status == 400
	expect_close
} -run

client c5h1 -connect ${h1_feh1_sock} {
	# this request is invalid and advertises an empty C-L, which results
	# in a stream error.
	txreq \
	  -req "GET" \
	  -url "/test41.html" \
          -hdr "content-length:" \
          -hdr "connection: close"
	rxresp
	expect resp.status == 400
	expect_close
} -run
