comparison stream_variables.t @ 964:cca37c930b29

Tests: stream tests with variables.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 05 Jul 2016 20:33:51 +0300
parents
children 882267679006
comparison
equal deleted inserted replaced
963:c26b0eaed67a 964:cca37c930b29
1 #!/usr/bin/perl
2
3 # (C) Sergey Kandaurov
4 # (C) Nginx, Inc.
5
6 # Tests for stream variables.
7
8 ###############################################################################
9
10 use warnings;
11 use strict;
12
13 use Test::More;
14
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
16
17 use lib 'lib';
18 use Test::Nginx;
19 use Test::Nginx::Stream qw/ stream dgram /;
20
21 ###############################################################################
22
23 select STDERR; $| = 1;
24 select STDOUT; $| = 1;
25
26 my $t = Test::Nginx->new()->has(qw/stream stream_return ipv6/);
27
28 $t->write_file_expand('nginx.conf', <<'EOF');
29
30 %%TEST_GLOBALS%%
31
32 daemon off;
33
34 events {
35 }
36
37 stream {
38 server {
39 listen 127.0.0.1:%%PORT_0%%;
40 return $connection:$nginx_version:$hostname:$pid:$bytes_sent;
41 }
42
43 server {
44 listen 127.0.0.1:%%PORT_1%%;
45 listen [::1]:%%PORT_1%%;
46 return $remote_addr:$remote_port:$server_addr:$server_port;
47 }
48
49 server {
50 listen 127.0.0.1:%%PORT_2%%;
51 proxy_pass [::1]:%%PORT_1%%;
52 }
53
54 server {
55 listen 127.0.0.1:%%PORT_3%%;
56 listen [::1]:%%PORT_3%%;
57 return $binary_remote_addr;
58 }
59
60 server {
61 listen 127.0.0.1:%%PORT_4%%;
62 proxy_pass [::1]:%%PORT_3%%;
63 }
64
65 server {
66 listen 127.0.0.1:%%PORT_5%%;
67 return $msec!$time_local!$time_iso8601;
68 }
69 }
70
71 EOF
72
73 $t->try_run('no stream return')->plan(6);
74
75 ###############################################################################
76
77 chomp(my $hostname = lc `hostname`);
78 like(stream()->read(), qr/^\d+:[\d.]+:$hostname:\d+:0$/, 'vars');
79
80 my $dport = port(1);
81 my $s = stream("127.0.0.1:$dport");
82 my $lport = $s->sockport();
83 is($s->read(), "127.0.0.1:$lport:127.0.0.1:$dport", 'addr');
84
85 my $data = stream('127.0.0.1:' . port(2))->read();
86 like($data, qr/^::1:\d+:::1:\d+$/, 'addr ipv6');
87
88 $data = stream('127.0.0.1:' . port(3))->read();
89 is(unpack("H*", $data), '7f000001', 'binary addr');
90
91 $data = stream('127.0.0.1:' . port(4))->read();
92 is(unpack("H*", $data), '0' x 31 . '1', 'binary addr ipv6');
93
94 $data = stream('127.0.0.1:' . port(5))->read();
95 like($data, qr#^\d+.\d+![-+\w/: ]+![-+\dT:]+$#, 'time');
96
97 ###############################################################################