Mercurial > hg > nginx-tests
annotate stream_variables.t @ 1260:eadd24ccfda1
Tests: postponed startup in certain ssl certificate tests on win32.
At least, some win32 hosts exhibit a round-off error or some such in the
notBefore field of the certificate generated before starting nginx, such
that it can be set to the value one second ahead of the current time.
This manifests in spurious test failures due to certificate verify error
with a failure reason "certificate is not yet valid".
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 12 Dec 2017 12:53:53 +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 ############################################################################### |