annotate http_listen_wildcard.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 http_listen.t@144c6ce732e4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
6 # Tests for listen port ranges with a wildcard address.
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 ###############################################################################
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/);
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
27 plan(skip_all => 'listen on wildcard address')
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
28 unless $ENV{TEST_NGINX_UNSAFE};
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
29
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30 $t->write_file_expand('nginx.conf', <<'EOF');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32 %%TEST_GLOBALS%%
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 daemon off;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 events {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 }
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 http {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 %%TEST_GLOBALS_HTTP%%
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 server {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 listen 127.0.0.1:8080;
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
44 listen %%PORT_8186%%-%%PORT_8187%%;
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 server_name localhost;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 location / {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 proxy_pass http://$arg_b/t;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 }
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 location /t {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 return 200 $server_addr:$server_port;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 }
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 }
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 # catch out of range
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 server {
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
59 listen 127.0.0.1:8185;
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
60 listen 127.0.0.1:8188;
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 server_name localhost;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 }
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 }
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 EOF
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
67 my $p5 = port(8185); my $p7 = port(8187);
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
68 my $p6 = port(8186); my $p8 = port(8188);
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 plan(skip_all => 'no requested ranges')
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
71 if "$p6$p7" ne "81868187";
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
73 $t->run()->plan(4);
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 ###############################################################################
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
77 unlike(http_get("/?b=127.0.0.1:$p5"), qr/127.0.0.1:$p5/, 'out of range 1');
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
78 like(http_get("/?b=127.0.0.1:$p6"), qr/127.0.0.1:$p6/, 'wildcard range 1');
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
79 like(http_get("/?b=127.0.0.1:$p7"), qr/127.0.0.1:$p7/, 'wildcard range 2');
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
80 unlike(http_get("/?b=127.0.0.1:$p8"), qr/127.0.0.1:$p8/, 'out of range 2');
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 ###############################################################################