#!/usr/bin/perl

# (C) Maxim Dounin

# Tests for http proxy cache, "header already sent" alerts on backend errors,
# http://mailman.nginx.org/pipermail/nginx-devel/2018-January/010737.html.

###############################################################################

use warnings;
use strict;

use Test::More;

BEGIN { use FindBin; chdir($FindBin::Bin); }

use lib 'lib';
use Test::Nginx;

###############################################################################

select STDERR; $| = 1;
select STDOUT; $| = 1;

my $t = Test::Nginx->new()->has(qw/http proxy cache/)->plan(1)
	->write_file_expand('nginx.conf', <<'EOF');

%%TEST_GLOBALS%%

daemon off;

events {
}

http {
    %%TEST_GLOBALS_HTTP%%

    proxy_cache_path   %%TESTDIR%%/cache  levels=1:2
                       keys_zone=NAME:1m;

    server {
        listen       127.0.0.1:8080;
        server_name  localhost;

        location / {
            proxy_pass    http://127.0.0.1:8081;
            proxy_cache   NAME;

            proxy_read_timeout 100ms;
        }
    }

    server {
        listen       127.0.0.1:8081;
        server_name  localhost;

        location / {
            postpone_output 0;
            limit_rate 512;
            expires 1m;
        }
    }
}

EOF

$t->write_file('big.html', 'x' x 1024);

$t->run();

###############################################################################

# make a HEAD request; as cache is enabled, nginx convert HEAD to GET
# and will set u->pipe->downstream_error to suppress sending the response
# body to the client

like(http_head('/big.html'), qr/200 OK/, 'head request');

# once proxy_read_timeout expires, nginx will call
# ngx_http_finalize_upstream_request() with u->pipe->downstream_error set
# and rc = NGX_HTTP_GATEWAY_BAD_GATEWAY; after revision ad3f342f14ba046c this
# will result in ngx_http_finalize_request(NGX_HTTP_GATEWAY_BAD_GATEWAY),
# leading to an attempt to return additional error response and
# the "header already sent" alert; fixed in 93abb5a855d6

###############################################################################
