view stream_realip_hostname.t @ 1185:368ab1d8ed8b

Tests: unbreak h2.t with aio. Postpone sending client's SETTINGS until after server exhausted stream window, so the expected result does not depend on the time when SETTINGS was applied.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 06 Jun 2017 21:41:09 +0300
parents eaa92d810bbb
children 97c8280de681
line wrap: on
line source

#!/usr/bin/perl

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

# Tests for stream realip module, 'unix:' and hostname in set_real_ip_from.

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

use warnings;
use strict;

use Test::More;

use Socket qw/ $CRLF /;

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

use lib 'lib';
use Test::Nginx;
use Test::Nginx::Stream qw/ stream /;

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

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

my $t = Test::Nginx->new()->has(qw/stream stream_return stream_realip unix/)
	->write_file_expand('nginx.conf', <<'EOF');

%%TEST_GLOBALS%%

daemon off;

events {
}

stream {
    server {
        listen      unix:%%TESTDIR%%/unix.sock proxy_protocol;
        listen      127.0.0.1:8080;
        listen      127.0.0.1:8082 proxy_protocol;
        return      $remote_addr;

        set_real_ip_from unix:;
    }

    server {
        listen      127.0.0.1:8081;
        proxy_pass  unix:%%TESTDIR%%/unix.sock;
    }

    server {
        listen      127.0.0.1:8085 proxy_protocol;
        listen      unix:%%TESTDIR%%/unix2.sock proxy_protocol;
        return      $remote_addr;

        set_real_ip_from localhost;
    }

    server {
        listen      127.0.0.1:8083;
        proxy_pass  127.0.0.1:8085;
    }

    server {
        listen      127.0.0.1:8084;
        proxy_pass  unix:%%TESTDIR%%/unix2.sock;
    }
}

EOF

$t->try_run('no stream realip hostnames support');

plan(skip_all => 'no 127.0.0.1 on host')
	if http_get('/') ne '127.0.0.1';

$t->plan(4);

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

is(pp_get(8081, "PROXY TCP4 192.0.2.1 192.0.2.2 1234 5678${CRLF}"),
	'192.0.2.1', 'realip unix');
isnt(pp_get(8082, "PROXY TCP4 192.0.2.1 192.0.2.2 1234 5678${CRLF}"),
	'192.0.2.1', 'realip unix - no match');

is(pp_get(8083, "PROXY TCP4 192.0.2.1 192.0.2.2 1234 5678${CRLF}"),
	'192.0.2.1', 'realip hostname');
isnt(pp_get(8084, "PROXY TCP4 192.0.2.1 192.0.2.2 1234 5678${CRLF}"),
	'192.0.2.1', 'realip hostname - no match');

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

sub pp_get {
	my ($port, $proxy) = @_;
	stream(PeerPort => port($port))->io($proxy);
}

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