annotate http_listen.t @ 1606:e4e0695552ed

Tests: fixed stream_proxy_ssl_conf_command.t. The stream_proxy_ssl_conf_command.t test used stream return module to return the response. Since this ignores actual request, but the perl test code used http_get(). This might result in the request being sent after the response is returned and the connection closed by the server, resulting in RST being generated and no response seen by the client at all. Fix is to use "stream(...)->read()" instead of http_get(), so no request is sent at all, eliminating possibility of RST being generated.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 10 Nov 2020 05:03:29 +0300
parents 144c6ce732e4
children c045fbb98e9a
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;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 listen 127.0.0.1:%%PORT_8082%%-%%PORT_8083%%;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 listen %%PORT_8085%%-%%PORT_8086%%;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 listen [::1]:%%PORT_8085%%-%%PORT_8086%%;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 server_name localhost;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 location / {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 proxy_pass http://$arg_b/t;
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
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 location /t {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 return 200 $server_addr:$server_port;
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
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55 # catch out of range
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 server {
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 listen 127.0.0.1:8081;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 listen 127.0.0.1:8084;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 listen 127.0.0.1:8087;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 listen [::1]:%%PORT_8084%%;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 listen [::1]:%%PORT_8087%%;
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 server_name localhost;
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 }
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 EOF
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 my $p0 = port(8080); my $p3 = port(8083); my $p6 = port(8086);
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 my $p1 = port(8081); my $p4 = port(8084); my $p7 = port(8087);
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 my $p2 = port(8082); my $p5 = port(8085);
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 plan(skip_all => 'listen on wildcard address')
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 unless $ENV{TEST_NGINX_UNSAFE};
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 plan(skip_all => 'no requested ranges')
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 if "$p0$p1$p2$p3$p4$p5$p6$p7" ne "80808081808280838084808580868087";
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78
1535
144c6ce732e4 Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1452
diff changeset
79 $t->run()->plan(12);
1452
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80
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
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 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
84 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
85 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
86 like(http_get("/?b=127.0.0.1:$p3"), qr/127.0.0.1:$p3/, 'range 2');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87 unlike(http_get("/?b=127.0.0.1:$p4"), qr/127.0.0.$p4/, 'out of range 2');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 like(http_get("/?b=127.0.0.1:$p5"), qr/127.0.0.1:$p5/, 'wildcard range 1');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 like(http_get("/?b=127.0.0.1:$p6"), qr/127.0.0.1:$p6/, 'wildcard range 2');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 unlike(http_get("/?b=127.0.0.1:$p7"), qr/127.0.0.1:$p7/, 'out of range 3');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92 unlike(http_get("/?b=[::1]:$p4"), qr/::1:$p4/, 'out of range 4');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93 like(http_get("/?b=[::1]:$p5"), qr/::1:$p5/, 'ipv6 range 1');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94 like(http_get("/?b=[::1]:$p6"), qr/::1:$p6/, 'ipv6 range 2');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 unlike(http_get("/?b=[::1]:$p7"), qr/::1:$p7/, 'out of range 5');
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96
eda1878cf015 Tests: listen port ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97 ###############################################################################