# Checks that compression doesn't cause corruption..

varnishtest "Compression validation"
#REQUIRE_VERSION=1.6
#REQUIRE_OPTIONS=ZLIB|SLZ,LUA,OPENSSL
#REGTEST_TYPE=slow

feature ignore_unknown_macro

haproxy h1 -conf {
global
#	log stdout format short daemon
	lua-load		${testdir}/lua_validation.lua

defaults
	mode			http
	log			global
	${no-htx} option http-use-htx
	option			httplog

frontend main-https
	bind			"fd@${fe1}" ssl crt ${testdir}/common.pem
	compression algo gzip
	compression type text/html text/plain application/json application/javascript
	compression offload
	use_backend TestBack  if  TRUE

backend TestBack
	server	LocalSrv ${h1_fe2_addr}:${h1_fe2_port}

listen fileloader
	mode http
	bind "fd@${fe2}"
	http-request use-service lua.fileloader-http01
} -start

shell {
    HOST=${h1_fe1_addr}
    if [ "${h1_fe1_addr}" = "::1" ] ; then
        HOST="\[::1\]"
    fi

    md5=$(command -v md5 || command -v md5sum)

    if [ -z $md5 ] ; then
        echo "MD5 checksum utility not found"
        exit 1
    fi

    expectchecksum="4d9c62aa5370b8d5f84f17ec2e78f483"

    for opt in "" "--limit-rate 300K" "--limit-rate 500K" ; do
        checksum=$(curl --max-time 15 --compressed -k "https://$HOST:${h1_fe1_port}" $opt | $md5 | cut -d ' ' -f1)
        if [ "$checksum" != "$expectchecksum" ] ; then
              echo "Expecting checksum $expectchecksum"
              echo "Received checksum: $checksum"
              exit 1;
        fi
    done

} -run
