varnishtest "Caching rules test"
# A response will not be cached unless it has an explicit age (Cache-Control max-age of s-maxage, Expires) or a validator (Last-Modified, or ETag)
# A response will not be cached either if it has an Age header that is either invalid (should be an integer) or greater than its max age.

#REQUIRE_VERSION=2.4

feature ignore_unknown_macro

server s1 {
    rxreq
    expect req.url == "/max-age"
    txresp -hdr "Cache-Control: max-age=5" \
        -bodylen 150

    rxreq
    expect req.url == "/s-maxage"
    txresp -hdr "Cache-Control: s-maxage=5" \
        -bodylen 160

    rxreq
    expect req.url == "/last-modified"
    txresp -hdr "Last-Modified: Thu, 22 Oct 2020 16:51:12 GMT" \
        -bodylen 180

    rxreq
    expect req.url == "/etag"
    txresp -hdr "ETag: \"etag\"" \
        -bodylen 190

    rxreq
    expect req.url == "/uncacheable"
    txresp \
        -bodylen 200

    rxreq
    expect req.url == "/uncacheable"
    txresp \
        -bodylen 210

    # Age response header checks

    # Invalid age
    rxreq
    expect req.url == "/invalid_age"
    txresp -hdr "Cache-Control: max-age=5" \
        -hdr "Age: abc" -bodylen 120

    rxreq
    expect req.url == "/invalid_age"
    txresp -hdr "Cache-Control: max-age=5" \
        -hdr "Age: abc" -bodylen 120

    # Old age (greater than max age)
    rxreq
    expect req.url == "/old_age"
    txresp -hdr "Cache-Control: max-age=5" \
        -hdr "Age: 10" -bodylen 130

    rxreq
    expect req.url == "/old_age"
    txresp -hdr "Cache-Control: max-age=5" \
        -hdr "Age: 10" -bodylen 130

    # Good age
    rxreq
    expect req.url == "/good_age"
    txresp -hdr "Cache-Control: max-age=500" \
        -hdr "Age: 100" -bodylen 140

} -start

server s2 {
    rxreq
    expect req.url == "/expires"
    # Expires header is filled directly by the expires_be backend"
    txresp \
        -bodylen 170
} -start

haproxy h1 -conf {
    global
        # WT: limit false-positives causing "HTTP header incomplete" due to
        # idle server connections being randomly used and randomly expiring
        # under us.
        tune.idle-pool.shared off

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

    frontend fe
        bind "fd@${fe}"
        use_backend expires_be if { path_beg /expires }
        default_backend test

    backend expires_be
        http-request cache-use my_cache
        server www ${s2_addr}:${s2_port}
        http-response set-header X-Cache-Hit %[res.cache_hit]
        # Expires value set in the future (current_time+5s)
        http-response set-header Expires %[date(5),http_date]
        http-response cache-store my_cache

    backend test
        http-request cache-use my_cache
        server www ${s1_addr}:${s1_port}
        http-response cache-store my_cache
        http-response set-header X-Cache-Hit %[res.cache_hit]

    cache my_cache
        total-max-size 3
        max-age 20
        max-object-size 3072
} -start


client c1 -connect ${h1_fe_sock} {
        txreq -url "/max-age"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 150

        txreq -url "/max-age"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 150
        expect resp.http.X-Cache-Hit == 1

        txreq -url "/s-maxage"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 160

        txreq -url "/s-maxage"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 160
        expect resp.http.X-Cache-Hit == 1

        txreq -url "/expires"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 170

        txreq -url "/expires"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 170
        expect resp.http.X-Cache-Hit == 1

        txreq -url "/last-modified"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 180

        txreq -url "/last-modified"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 180
        expect resp.http.X-Cache-Hit == 1

        txreq -url "/etag"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 190

        txreq -url "/etag"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 190
        expect resp.http.X-Cache-Hit == 1

        # The next response should not be cached
        txreq -url "/uncacheable"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 200

        txreq -url "/uncacheable"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 210
        expect resp.http.X-Cache-Hit == 0

        # Age header tests
        txreq -url "/invalid_age"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 120
        expect resp.http.X-Cache-Hit == 0

        txreq -url "/invalid_age"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 120
        expect resp.http.X-Cache-Hit == 0

        txreq -url "/old_age"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 130
        expect resp.http.X-Cache-Hit == 0

        txreq -url "/old_age"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 130
        expect resp.http.X-Cache-Hit == 0

        txreq -url "/good_age"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 140
        expect resp.http.X-Cache-Hit == 0

        txreq -url "/good_age"
        rxresp
        expect resp.status == 200
        expect resp.bodylen == 140
        expect resp.http.X-Cache-Hit == 1

} -run
