view stream_geo_unix.t @ 1817:c045fbb98e9a

Tests: revised tests for listen port ranges. Renumbered testing ports to get more chance to execute when run in parallel. Relaxed condition to skip tests only when the port range is out of sequence. Adjacent port numbers out of a specified range aren't crucial to skip tests: if not in sequence, statistically this will be caught in subsequent runs. Unsafe tests that use wildcard addresses are moved to a separate file.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 23 Dec 2022 19:20:50 +0400
parents f3ba4c74de31
children
line wrap: on
line source

#!/usr/bin/perl

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

# Tests for stream geo module with unix socket.

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

use warnings;
use strict;

use Test::More;

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_geo stream_return unix/)
	->plan(4);

$t->write_file_expand('nginx.conf', <<'EOF');

%%TEST_GLOBALS%%

daemon off;

events {
}

stream {
    %%TEST_GLOBALS_STREAM%%

    geo $geo {
        default                  default;
        255.255.255.255          none;
    }

    geo $remote_addr $geora {
        default                  default;
        255.255.255.255          none;
    }

    geo $geor {
        ranges;
        0.0.0.0-255.255.255.254  test;
        default                  none;
    }

    geo $remote_addr $georra {
        ranges;
        0.0.0.0-255.255.255.254  test;
        default                  none;
    }

    server {
        listen      unix:%%TESTDIR%%/unix.sock;
        return      "geo:$geo geora:$geora geor:$geor georra:$georra";
    }

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

EOF

$t->write_file('index.html', '');
$t->run();

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

my %data = stream('127.0.0.1:' . port(8080))->read() =~ /(\w+):(\w+)/g;
is($data{geo}, 'none', 'geo unix');
is($data{geor}, 'none', 'geo unix ranges');
is($data{geora}, 'none', 'geo unix remote addr');
is($data{georra}, 'none', 'geo unix ranges remote addr');

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