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 {
	rxreq
	txresp \
	  -status 200 \
	  -body "response 1"

	rxreq
	txresp \
	  -status 200 \
	  -body "response 2"

	rxreq
	txresp \
	  -status 200 \
	  -body "response 3"

	rxreq
	txresp \
	  -status 200 \
	  -body "response 4"
} -repeat 2 -start

haproxy h1 -conf {
    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

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

	# 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

	# 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

	# 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
#
#	# second request is valid and advertises C-L:0
#	txreq \
#	  -req "HEAD" \
#	  -url "/test12.html" \
#          -hdr "content-length: 0"
#	rxresp
#	expect resp.status == 200
#
#	# third request sends a body with a GET
#	txreq \
#	  -req "GET" \
#	  -url "/test13.html" \
#          -body "this must be delivered, like it or not"
#	rxresp
#	expect resp.status == 200
#
#	# 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
#
#	# the connection is expected to be closed and no more response must
#	# arrive here.
#	expect_close
#} -run

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

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

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

	# 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

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