varnishtest "Basic compression test"

#REQUIRE_VERSION=1.9
#REQUIRE_OPTION=ZLIB|SLZ

feature ignore_unknown_macro

server s1 {
        # client c1 - request 1
        rxreq
        expect req.url == "/c1.1"
        expect req.http.accept-encoding == "<undef>"
        txresp \
          -hdr "Content-Type: text/plain" \
          -bodylen 100

        # client c1 - request 2
        rxreq
        expect req.url == "/c1.2"
        expect req.http.user-agent == "Mozilla/4"
        expect req.http.accept-encoding == "gzip"
        txresp \
          -hdr "Content-Type: text/plain" \
          -bodylen 100

        # client c1 - request 3
        rxreq
        expect req.url == "/c1.3"
        expect req.proto == "HTTP/1.0"
        expect req.http.accept-encoding == "gzip"
        txresp -bodylen 100

        # client c1 - request 4
        rxreq
        expect req.url == "/c1.4"
        expect req.http.accept-encoding == "gzip"
        txresp \
          -proto "HTTP/1.0" \
          -hdr "Connection: keep-alive" \
          -hdr "Content-Type: text/plain" \
          -bodylen 100

        # client c1 - request 5
        rxreq
        expect req.url == "/c1.5"
        expect req.method == "HEAD"
        expect req.http.accept-encoding == "gzip"
        txresp -nolen \
          -hdr "Content-Length: 100" \
          -hdr "Content-Type: text/plain" \

        # client c1 - request 6
        rxreq
        expect req.url == "/c1.6"
        expect req.http.accept-encoding == "gzip"
        txresp \
          -status 400 \
          -hdr "Content-Type: text/plain" \
          -bodylen 100

        # client c1 - request 7
        rxreq
        expect req.url == "/c1.7"
        expect req.http.accept-encoding == "gzip"
        txresp \
          -hdr "Content-Type: text/plain" \
          -hdr "Content-Encoding: something" \
          -body "FOO"

        # client c1 - request 8
        rxreq
        expect req.url == "/c1.8"
        expect req.http.accept-encoding == "gzip"
        txresp \
          -hdr "Content-Type: text/plain" \
          -hdr "Cache-Control: no-transform" \
          -bodylen 100

        # client c1 - request 9
        rxreq
        expect req.url == "/c1.9"
        expect req.http.accept-encoding == "gzip"
        txresp \
          -hdr "Content-Type: text/css" \
          -bodylen 100

        # client c1 - request 10
        rxreq
        expect req.url == "/c1.10"
        expect req.http.accept-encoding == "gzip"
        txresp \
          -hdr "Content-Type: multipart/mixed; boundary=\"aaa\"" \
          -bodylen 100

        # Close the connection with HAProxy and wait for a new one
        # (C1 has finished and C2 will start)
        accept

        # client c2 - request 1
        rxreq
        expect req.url == "/c2.1"
        expect req.http.accept-encoding == "gzip"
        txresp \
          -hdr "Content-Type: text/plain" \
          -bodylen 100

        # client c2 - request 2
        rxreq
        expect req.url == "/c2.2"
        expect req.http.accept-encoding == "gzip"
        txresp  -nolen \
          -hdr "Content-Type: text/plain" \
          -hdr "Transfer-Encoding: chunked"
        chunkedlen 1
        chunkedlen 1
        chunkedlen 2
        chunkedlen 3
        chunkedlen 5
        chunkedlen 8
        chunkedlen 13
        chunkedlen 21
        chunkedlen 34
        chunkedlen 55
        chunkedlen 89
        chunkedlen 144
        chunkedlen 233
        chunkedlen 0

        # Close the connection with HAProxy and wait for a new one
        # (C2 has finished and C3 will start)
        accept

        # client c3 - request 1
        rxreq
        expect req.url == "/c3.1"
        expect req.http.accept-encoding == "<undef>"
        txresp \
          -hdr "Content-Type: text/plain" \
          -bodylen 50000

        # client c3 - request 2
        rxreq
        expect req.url == "/c3.2"
        expect req.http.accept-encoding == "<undef>"
        txresp  -nolen \
          -hdr "Content-Type: text/plain" \
          -hdr "Transfer-Encoding: chunked"
        chunkedlen 1000
        chunkedlen 1000
        chunkedlen 1000
        chunkedlen 1000
        chunkedlen 1000
        chunkedlen 5000
        chunkedlen 10000
        chunkedlen 30000
        chunkedlen 0

        # Close the connection with HAProxy and wait for a new one
        # (C3 has finished and C4 will start)
        accept

        # client c4 - request 1
        rxreq
        expect req.url == "/c4.1"
        expect req.http.accept-encoding == "<undef>"
        txresp \
          -hdr "Content-Type: text/plain" \
          -bodylen 100

        # client c4 - request 2
        rxreq
        expect req.url == "/c4.2"
        expect req.http.accept-encoding == "<undef>"
        txresp \
          -hdr "Content-Type: text/plain" \
          -bodylen 100
} -start


haproxy h1 -conf {
    defaults
        mode http
        timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout client  "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout server  "${HAPROXY_TEST_TIMEOUT-5s}"

    frontend fe-gzip
        bind "fd@${fe_gzip}"
        default_backend be-gzip

    frontend fe-identity
        bind "fd@${fe_identity}"
        default_backend be-identity

    frontend fe-gzip-deflate
        bind "fd@${fe_gzip_deflate}"
        default_backend be-gzip-defalte

    backend be-gzip
        compression algo gzip
        compression type text/html text/plain
        server www ${s1_addr}:${s1_port}

    backend be-identity
        compression algo identity
        server www ${s1_addr}:${s1_port}

    backend be-gzip-defalte
        compression algo gzip deflate
	compression offload
        server www ${s1_addr}:${s1_port}

} -start

# No compression expected because not supported by the client or because
# something in the request or response headers forbids it.
client c1 -connect ${h1_fe_gzip_sock} {
        # 1. no "Accept-Encoding header"
        txreq -url "/c1.1"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "<undef>"
        expect resp.http.transfer-encoding == "<undef>"
        expect resp.bodylen == 100

        # 2. Buggy User-Agent
        txreq  -url "/c1.2" \
          -hdr "Accept-Encoding: gzip" \
          -hdr "User-Agent: Mozilla/4"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "<undef>"
        expect resp.http.transfer-encoding == "<undef>"
        expect resp.bodylen == 100

        # 3. HTTP/1.0 request
        txreq  -url "/c1.3" \
          -proto "HTTP/1.0" \
          -hdr "Accept-Encoding: gzip" \
          -hdr "Connection: keep-alive"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "<undef>"
        expect resp.http.transfer-encoding == "<undef>"
        expect resp.bodylen == 100

        # 4. HTTP/1.0 response
        txreq  -url "/c1.4" \
          -hdr "Accept-Encoding: gzip"
        rxresp
        expect resp.status == 200
        expect resp.proto == "HTTP/1.0"
        expect resp.http.content-encoding == "<undef>"
        expect resp.http.transfer-encoding == "<undef>"
        expect resp.bodylen == 100

        # 5. HEAD method
        txreq -req "HEAD" -url "/c1.5" \
          -hdr "Accept-Encoding: gzip"
        rxresp -no_obj
        expect resp.status == 200
        expect resp.http.content-length == "100"
        expect resp.http.content-encoding == "<undef>"
        expect resp.http.transfer-encoding == "<undef>"

        # 6. Response status code != 20[0-3]
        txreq -url "/c1.6" \
          -hdr "Accept-Encoding: gzip"
        rxresp
        expect resp.status == 400
        expect resp.http.content-encoding == "<undef>"
        expect resp.http.transfer-encoding == "<undef>"
        expect resp.bodylen == 100

        # 7. Response alerady compressed by the server (with "Accept-Encoding")
        txreq -url "/c1.7" \
          -hdr "Accept-Encoding: gzip"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "something"
        expect resp.http.transfer-encoding == "<undef>"
        expect resp.bodylen == 3
        expect resp.body == "FOO"

        # 8. Response with "Cache-Control: no-transform"
        txreq -url "/c1.8" \
          -hdr "Accept-Encoding: gzip"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "<undef>"
        expect resp.http.transfer-encoding == "<undef>"
        expect resp.http.cache-control == "no-transform"
        expect resp.bodylen == 100

        # 9. Response with uncompressable content-type
        txreq -url "/c1.9" \
          -hdr "Accept-Encoding: gzip"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "<undef>"
        expect resp.http.transfer-encoding == "<undef>"
        expect resp.http.content-type == "text/css"
        expect resp.bodylen == 100

        # 10. Response with uncompressable content-type
        txreq -url "/c1.10" \
          -hdr "Accept-Encoding: gzip"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "<undef>"
        expect resp.http.transfer-encoding == "<undef>"
        expect resp.http.content-type == "multipart/mixed; boundary=\"aaa\""
        expect resp.bodylen == 100
} -run

# GZIP Compression expected (small body)
client c2 -connect ${h1_fe_gzip_sock} {
        # 1. response from the server with a small body with a C-L
        txreq -url "/c2.1" \
          -hdr "Accept-Encoding: gzip"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "gzip"
        expect resp.http.transfer-encoding == "chunked"
        gunzip
        expect resp.bodylen == 100

        # 2. response from the server with a small chunked body
        txreq -url "/c2.2" \
          -hdr "Accept-Encoding: gzip"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "gzip"
        expect resp.http.transfer-encoding == "chunked"
        gunzip
        expect resp.bodylen == 609
} -run

# Identity compression expect (Huge body)
# Identity is used because of a limitation of vtest (the uncompressed body size
# must be lower than 10 times of the compressed one)
client c3 -connect ${h1_fe_identity_sock} {
        # 1. response from the server with a huge body with a C-L
        txreq -url "/c3.1"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "<undef>"
        expect resp.http.transfer-encoding == "chunked"
        expect resp.bodylen == 50000

        # 2. response from the server with a huge chunked body
        txreq -url "/c3.2"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "<undef>"
        expect resp.http.transfer-encoding == "chunked"
        expect resp.bodylen == 50000
} -run


# Compression expected with priority
client c4 -connect ${h1_fe_gzip_deflate_sock} {
        # 1. response from the server with a small body with a C-L
        txreq -url "/c4.1" \
          -hdr "Accept-Encoding: *;q=0, gzip;q=0.750, deflate;q=0.500"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "gzip"
        expect resp.http.transfer-encoding == "chunked"

        # 2. response from the server with a small body with a C-L
        txreq -url "/c4.2" \
          -hdr "Accept-Encoding: *;q=0, gzip;q=0.500, deflate;q=0.750"
        rxresp
        expect resp.status == 200
        expect resp.http.content-encoding == "deflate"
        expect resp.http.transfer-encoding == "chunked"
} -run
