annotate http_listen.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 144c6ce732e4
children e6b20af0be5b
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
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for listen port ranges.
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
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 $t->write_file_expand('nginx.conf', <<'EOF');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 daemon off;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 events {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 }
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 http {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 %%TEST_GLOBALS_HTTP%%
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 server {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 listen 127.0.0.1:8080;
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
41 listen 127.0.0.1:%%PORT_8182%%-%%PORT_8183%%;
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
42 listen [::1]:%%PORT_8182%%-%%PORT_8183%%;
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 server_name localhost;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 location / {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 proxy_pass http://$arg_b/t;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 }
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 location /t {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 return 200 $server_addr:$server_port;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 }
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 }
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 # catch out of range
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 server {
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
57 listen 127.0.0.1:8181;
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
58 listen 127.0.0.1:8184;
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
59 listen [::1]:%%PORT_8181%%;
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
60 listen [::1]:%%PORT_8184%%;
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 $p0 = port(8080); my $p3 = port(8183);
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
68 my $p1 = port(8181); my $p4 = port(8184);
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
69 my $p2 = port(8182);
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 plan(skip_all => 'no requested ranges')
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
72 if "$p2$p3" ne "81828183";
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
74 $t->run()->plan(9);
1452
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 ###############################################################################
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 like(http_get("/?b=127.0.0.1:$p0"), qr/127.0.0.1:$p0/, 'single');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79 unlike(http_get("/?b=127.0.0.1:$p1"), qr/127.0.0.1:$p1/, 'out of range 1');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 like(http_get("/?b=127.0.0.1:$p2"), qr/127.0.0.1:$p2/, 'range 1');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 like(http_get("/?b=127.0.0.1:$p3"), qr/127.0.0.1:$p3/, 'range 2');
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
82 unlike(http_get("/?b=127.0.0.1:$p4"), qr/127.0.0.1:$p4/, 'out of range 2');
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83
1817
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
84 unlike(http_get("/?b=[::1]:$p1"), qr/::1:$p1/, 'inet6 out of range 1');
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
85 like(http_get("/?b=[::1]:$p2"), qr/::1:$p2/, 'inet6 range 1');
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
86 like(http_get("/?b=[::1]:$p3"), qr/::1:$p3/, 'inet6 range 2');
c045fbb98e9a Tests: revised tests for listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
87 unlike(http_get("/?b=[::1]:$p4"), qr/::1:$p4/, 'inet6 out of range 2');
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 ###############################################################################