varnishtest "ESI spanning storage bits"

# NB!  The layout of the body in the response is very carefully
# NB!  tuned to give the desired code coverage.
# NB!  It should look like this in the varnishlog:
# NB!    7 Debug        c "Fetch 32 byte segments:"
# NB!    7 Debug        c "%0a%09%09<html>filler%0a%09%09This is before"
# NB!    7 Debug        c " the test%0a%09%09<![CDATA[foooooooooo"
# NB!    7 Debug        c "ooooooooobar]]>%0a%09%09filler<esi:rem"
# NB!    7 Debug        c "ove>%0a%09%09This is a test: Unseen Un"
# NB!    7 Debug        c "iversity%0a%09%09Department of cruel a"
# NB!    7 Debug        c "nd unjust geography%0a%09%09</esi:remo"
# NB!    7 Debug        c "ve>%0a%09%09This is a test: Hello worl"
# NB!    7 Debug        c "d%0a%09"

server s1 {
	rxreq
	expect req.url == "/foo/bar"
	send "HTTP/1.0 200 OK\n"
	send "Connection: close\n"
	send "\n"
	send {
		<html>filler
		This is before the test
		<![CDATA[fooooooooooooooooooobar]]>
		filler<esi:remove>
		This is a test: Unseen University
		Department of cruel and unjust geography
		</esi:remove>
		This is a test: Hello world
	}
} -start

varnish v1 -arg "-sdefault,2m" -vcl+backend {
	sub vcl_backend_response {
		set beresp.do_esi = true;
	}
} -start

varnish v1 -cliok "debug.fragfetch 32"

client c1 {
	txreq -url /foo/bar -hdr "Host: froboz"
	rxresp
	expect resp.status == 200
	expect resp.bodylen == 120
}

client c1 -run
varnish v1 -expect esi_errors == 0
