#!/usr/bin/perl

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

# Tests for upstream keepalive directives.

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

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

%%TEST_GLOBALS%%

daemon off;

events {
}

http {
    %%TEST_GLOBALS_HTTP%%

    upstream backend {
        server 127.0.0.1:8081;
        keepalive 1;
        keepalive_requests 3;
        keepalive_timeout 2s;
    }

    upstream time {
        server 127.0.0.1:8081;
        keepalive 1;
        keepalive_time 2s;
    }

    server {
        listen       127.0.0.1:8080;
        server_name  localhost;

        proxy_http_version 1.1;
        proxy_set_header Connection $args;

        location / {
            proxy_pass http://backend;
        }

        location /time {
            proxy_pass http://time/;
        }
    }

    server {
        listen       127.0.0.1:8081;
        server_name  localhost;

        location / {
            add_header X-Connection $connection;
        }
    }
}

EOF

$t->write_file('index.html', 'SEE-THIS');
$t->try_run('no keepalive_time')->plan(11);

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

my ($r, $n, $m);

# keepalive_requests

like($r = http_get('/'), qr/SEE-THIS/, 'request');
$r =~ m/X-Connection: (\d+)/; $n = $1;
like(http_get('/'), qr/X-Connection: $n.*SEE/ms, 'keepalive');
like(http_get('/'), qr/X-Connection: $n.*SEE/ms, 'keepalive again');
like(http_get('/'), qr/X-Connection: (?!$n).*SEE/ms, 'keepalive requests');
http_get('/?close');

# keepalive_timeout, keepalive_time

like($r = http_get('/'), qr/SEE-THIS/, 'request timer');
$r =~ m/X-Connection: (\d+)/; $n = $1;
like($r = http_get('/time'), qr/SEE-THIS/, 'request time');
$r =~ m/X-Connection: (\d+)/; $m = $1;

like(http_get('/'), qr/X-Connection: $n.*SEE/ms, 'keepalive timer');
like(http_get('/time'), qr/X-Connection: $m.*SEE/ms, 'keepalive time');

select undef, undef, undef, 2.5;

like(http_get('/'), qr/X-Connection: (?!$n).*SEE/ms, 'keepalive timeout');
like(http_get('/time'), qr/X-Connection: $m.*SEE/ms, 'keepalive time last');
like(http_get('/time'), qr/X-Connection: (?!$m).*SEE/ms, 'keepalive time new');

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