Mercurial > hg > nginx-tests
annotate stream_variables.t @ 1248:70192b1baf01
Tests: added exception test to stream_js.t using 'require'.
The stream js tests introduced in edf5a3c9e36a fail on njs 0.1.14. It doesn't
currently provide an easy way to check its version, whilst we are obligated to
gracefully handle such cases somehow. With such an addition of 'require', now
the tests are skipped instead on the previous versions.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 21 Nov 2017 13:16:39 +0300 |
parents | e4974af3fb12 |
children | 766bcbb632ee |
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 |
1190
fcd65708672d
Tests: let tests pass on travis-ci VMs with disabled IPv6 loopback.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1171
diff
changeset
|
79 $t->try_run('no stream return or 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 ############################################################################### |