varnishtest "HTTP request tests: H1 to H1, legacy mode"
#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
	#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
