Mercurial > hg > nginx-tests
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 |
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 ############################################################################### |