Mercurial > hg > nginx-tests
annotate stream_variables.t @ 1542:451e787aad76
Tests: reworked libgd version detection.
The "libgd-config" binary is deprecated in recent versions and may not exist
or have unexpected output. More, it may not present within older versions,
as well, if installed separately, which previously broke test assumptions.
The fix is change the fallback to skip tests. In addition, recent Perl GD
module (2.57) started to export libgd version, which is now also consulted.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Mon, 13 Jan 2020 18:15:35 +0300 |
parents | 766bcbb632ee |
children | b61e820caa83 |
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 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
1010
4f739c15069e
Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1004
diff
changeset
|
19 use Test::Nginx::Stream qw/ stream dgram /; |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
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 select STDERR; $| = 1; |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 |
1170
cf14cfe9ec8c
Tests: dropped obsolete ipv6 prerequisite.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1047
diff
changeset
|
26 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
|
27 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 $t->write_file_expand('nginx.conf', <<'EOF'); |
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 %%TEST_GLOBALS%% |
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 daemon off; |
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 events { |
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 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 stream { |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
39 listen 127.0.0.1:8080; |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 return $connection:$nginx_version:$hostname:$pid:$bytes_sent; |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 } |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
44 listen 127.0.0.1:8081; |
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
45 listen [::1]:%%PORT_8081%%; |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 return $remote_addr:$remote_port:$server_addr:$server_port; |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 } |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
50 listen 127.0.0.1:8082; |
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
51 proxy_pass [::1]:%%PORT_8081%%; |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 } |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
55 listen 127.0.0.1:8083; |
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
56 listen [::1]:%%PORT_8083%%; |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 return $binary_remote_addr; |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 } |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
61 listen 127.0.0.1:8084; |
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
62 proxy_pass [::1]:%%PORT_8083%%; |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 } |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
66 listen 127.0.0.1:8085; |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 return $msec!$time_local!$time_iso8601; |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 } |
1010
4f739c15069e
Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1004
diff
changeset
|
69 |
4f739c15069e
Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1004
diff
changeset
|
70 server { |
4f739c15069e
Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1004
diff
changeset
|
71 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
|
72 listen 127.0.0.1:%%PORT_8987_UDP%% udp; |
1010
4f739c15069e
Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1004
diff
changeset
|
73 return $protocol; |
4f739c15069e
Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1004
diff
changeset
|
74 } |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 } |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 EOF |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 |
1251
766bcbb632ee
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
79 $t->try_run('no inet6 support')->plan(8); |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 ############################################################################### |
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 chomp(my $hostname = lc `hostname`); |
1235
3fc6817cd84a
Tests: explicit peer port in stream tests now required.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1190
diff
changeset
|
84 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
|
85 qr/^\d+:[\d.]+:$hostname:\d+:0$/, 'vars'); |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
87 my $dport = port(8081); |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 my $s = stream("127.0.0.1:$dport"); |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 my $lport = $s->sockport(); |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 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
|
91 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
92 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
|
93 like($data, qr/^::1:\d+:::1:\d+$/, 'addr ipv6'); |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
94 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
95 $data = stream('127.0.0.1:' . port(8083))->read(); |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 is(unpack("H*", $data), '7f000001', 'binary addr'); |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
98 $data = stream('127.0.0.1:' . port(8084))->read(); |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 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
|
100 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
964
diff
changeset
|
101 $data = stream('127.0.0.1:' . port(8085))->read(); |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 like($data, qr#^\d+.\d+![-+\w/: ]+![-+\dT:]+$#, 'time'); |
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 |
1010
4f739c15069e
Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1004
diff
changeset
|
104 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
|
105 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
|
106 |
964
cca37c930b29
Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 ############################################################################### |