view proxy_cache_path.t @ 1721:6842b0f7fb9e

Tests: restored HTTP/2 request body tests with Content-Length. This partially reverts 3a334b20208e, which prevented testing request body with Content-Length. Arguably, it appeared as an early attempt to address new implementation requirements in 0aa07850922f (1.9.15) for request body flow control. After the HTTP/2 request body preread buffer introduction in ce94f07d5082 (1.11.0), and emitting HTTP/2 SETTINGS acknowledgement in tests since 48d277065309, it became barely necessary, if ever.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 20 Jul 2021 16:12:54 +0300
parents 196d33c2bb45
children
line wrap: on
line source

#!/usr/bin/perl

# (C) Sergey Kandaurov
# (C) Nginx, Inc.

# Tests for http proxy cache with use_temp_path parameter.

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

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(6)
	->write_file_expand('nginx.conf', <<'EOF');

%%TEST_GLOBALS%%

daemon off;

events {
}

http {
    %%TEST_GLOBALS_HTTP%%

    proxy_cache_path   %%TESTDIR%%/cache1
                       keys_zone=ON:1m      use_temp_path=on;
    proxy_cache_path   %%TESTDIR%%/cache2
                       keys_zone=OFF:1m     use_temp_path=off;
    proxy_cache_path   %%TESTDIR%%/cache4   levels=1:2
                       keys_zone=LEVELS:1m  use_temp_path=off;

    server {
        listen       127.0.0.1:8080;
        server_name  localhost;

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

            proxy_cache   $arg_c;

            proxy_cache_valid   any      1m;

            add_header X-Cache-Status $upstream_cache_status;
        }
    }

    server {
        listen       127.0.0.1:8081;
        server_name  localhost;

        location / {
        }
    }
}

EOF

$t->write_file('t', 'SEE-THIS');

$t->run();

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

like(http_get('/t?c=ON'), qr/MISS.*SEE-THIS/ms, 'temp path');
like(http_get('/t?c=OFF'), qr/MISS.*SEE-THIS/ms, 'temp path off');
like(http_get('/t?c=LEVELS'), qr/MISS.*SEE-THIS/ms, 'temp path levels');

$t->write_file('t', 'SEE-THAT');

like(http_get('/t?c=ON'), qr/HIT.*SEE-THIS/ms, 'temp path cached');
like(http_get('/t?c=OFF'), qr/HIT.*SEE-THIS/ms, 'temp path cached off');
like(http_get('/t?c=LEVELS'), qr/HIT.*SEE-THIS/ms, 'temp path cached levels');

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