annotate stream_variables.t @ 1021:ebdf239722b9

Tests: relaxed proxy_cache_lock.t nolock tests to fix on Solaris. Assumed that the order of responses being arrived in nolock case may be ignored. An important part of such case is that the only last response should be cached.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 02 Sep 2016 12:17:35 +0300
parents 41139d6f8b7b
children ef795982f940
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
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
1019
41139d6f8b7b Tests: added missing udp prerequisite.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1010
diff changeset
26 my $t = Test::Nginx->new()->has(qw/stream stream_return ipv6 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;
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
72 listen 127.0.0.1:%%PORT_8087_UDP%% udp;
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
1010
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
79 $t->try_run('no stream return')->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`);
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 like(stream()->read(), qr/^\d+:[\d.]+:$hostname:\d+:0$/, 'vars');
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
86 my $dport = port(8081);
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87 my $s = stream("127.0.0.1:$dport");
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 my $lport = $s->sockport();
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 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
90
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 964
diff changeset
91 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
92 like($data, qr/^::1:\d+:::1:\d+$/, 'addr ipv6');
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 $data = stream('127.0.0.1:' . port(8083))->read();
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 is(unpack("H*", $data), '7f000001', 'binary addr');
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(8084))->read();
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98 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
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(8085))->read();
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101 like($data, qr#^\d+.\d+![-+\w/: ]+![-+\dT:]+$#, 'time');
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102
1010
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
103 is(stream('127.0.0.1:' . port(8086))->read(), 'TCP', 'protocol TCP');
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
104 is(dgram('127.0.0.1:' . port(8087))->io('.'), 'UDP', 'protocol UDP');
4f739c15069e Tests: stream $protocol tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1004
diff changeset
105
964
cca37c930b29 Tests: stream tests with variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 ###############################################################################