#!/usr/bin/perl

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

# Stream tests for access_log with escape 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/stream stream_map stream_return/)
	->write_file_expand('nginx.conf', <<'EOF');

%%TEST_GLOBALS%%

daemon off;

events {
}

stream {
    map $pid $a {
        default '" \ "';
    }
    map $pid $b {
        default "foo";
    }

    log_format json     escape=json     $a$b$upstream_addr;
    log_format default  escape=default  $a$b$upstream_addr;

    server {
        listen       127.0.0.1:8080;
        return       ok;

        access_log %%TESTDIR%%/json.log json;
        access_log %%TESTDIR%%/test.log default;
    }
}

EOF

$t->try_run('no stream map')->plan(2);

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

http_get('/');

$t->stop();

TODO: {
local $TODO = 'not yet' unless $t->has_version('1.11.8');

is($t->read_file('json.log'), '\" \\\\ \"foo' . "\n", 'json');
is($t->read_file('test.log'), '\x22 \x5C \x22foo-' . "\n", 'default');

}

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