annotate stream_variables.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 b61e820caa83
children f3ba4c74de31
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for stream variables.
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
1600
b61e820caa83 Tests: using Sys::Hostname to get hostname in a portable way.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
15 use Sys::Hostname;
b61e820caa83 Tests: using Sys::Hostname to get hostname in a portable way.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
16
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use lib 'lib';
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
1010
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
21 use Test::Nginx::Stream qw/ stream dgram /;
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 ###############################################################################
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 select STDERR; $| = 1;
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26 select STDOUT; $| = 1;
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27
1170
cf14cfe9ec8c Tests: dropped obsolete ipv6 prerequisite.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1047
diff changeset
28 my $t = Test::Nginx->new()->has(qw/stream stream_return udp/);
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30 $t->write_file_expand('nginx.conf', <<'EOF');
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32 %%TEST_GLOBALS%%
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 daemon off;
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 events {
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 }
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 stream {
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
41 listen 127.0.0.1:8080;
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 return $connection:$nginx_version:$hostname:$pid:$bytes_sent;
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 }
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
46 listen 127.0.0.1:8081;
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
47 listen [::1]:%%PORT_8081%%;
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 return $remote_addr:$remote_port:$server_addr:$server_port;
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 }
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
52 listen 127.0.0.1:8082;
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
53 proxy_pass [::1]:%%PORT_8081%%;
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 }
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
57 listen 127.0.0.1:8083;
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
58 listen [::1]:%%PORT_8083%%;
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 return $binary_remote_addr;
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 }
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
63 listen 127.0.0.1:8084;
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
64 proxy_pass [::1]:%%PORT_8083%%;
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 }
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
68 listen 127.0.0.1:8085;
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 return $msec!$time_local!$time_iso8601;
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 }
1010
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
71
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
72 server {
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
73 listen 127.0.0.1:8086;
1237
e4974af3fb12 Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1235
diff changeset
74 listen 127.0.0.1:%%PORT_8987_UDP%% udp;
1010
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
75 return $protocol;
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
76 }
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 }
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79 EOF
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80
1251
766bcbb632ee Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1237
diff changeset
81 $t->try_run('no inet6 support')->plan(8);
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 ###############################################################################
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84
1600
b61e820caa83 Tests: using Sys::Hostname to get hostname in a portable way.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
85 my $hostname = lc hostname();
1235
3fc6817cd84a Tests: explicit peer port in stream tests now required.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1190
diff changeset
86 like(stream('127.0.0.1:' . port(8080))->read(),
3fc6817cd84a Tests: explicit peer port in stream tests now required.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1190
diff changeset
87 qr/^\d+:[\d.]+:$hostname:\d+:0$/, 'vars');
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
89 my $dport = port(8081);
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 my $s = stream("127.0.0.1:$dport");
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91 my $lport = $s->sockport();
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92 is($s->read(), "127.0.0.1:$lport:127.0.0.1:$dport", 'addr');
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
94 my $data = stream('127.0.0.1:' . port(8082))->read();
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 like($data, qr/^::1:\d+:::1:\d+$/, 'addr ipv6');
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
97 $data = stream('127.0.0.1:' . port(8083))->read();
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98 is(unpack("H*", $data), '7f000001', 'binary addr');
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
100 $data = stream('127.0.0.1:' . port(8084))->read();
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101 is(unpack("H*", $data), '0' x 31 . '1', 'binary addr ipv6');
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
103 $data = stream('127.0.0.1:' . port(8085))->read();
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104 like($data, qr#^\d+.\d+![-+\w/: ]+![-+\dT:]+$#, 'time');
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105
1010
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
106 is(stream('127.0.0.1:' . port(8086))->read(), 'TCP', 'protocol TCP');
1237
e4974af3fb12 Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1235
diff changeset
107 is(dgram('127.0.0.1:' . port(8987))->io('.'), 'UDP', 'protocol UDP');
1010
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
108
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 ###############################################################################