Mercurial > hg > nginx-tests
annotate stream_udp_proxy.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 | c4f58dfe8207 |
children | 42e37e0434d5 |
rev | line source |
---|---|
868 | 1 #!/usr/bin/perl |
2 | |
3 # (C) Nginx, Inc. | |
4 | |
5 # Tests for stream proxy module with datagrams. | |
6 | |
7 ############################################################################### | |
8 | |
9 use warnings; | |
10 use strict; | |
11 | |
12 use Test::More; | |
13 | |
14 BEGIN { use FindBin; chdir($FindBin::Bin); } | |
15 | |
16 use lib 'lib'; | |
17 use Test::Nginx; | |
18 use Test::Nginx::Stream qw/ dgram /; | |
19 | |
20 ############################################################################### | |
21 | |
22 select STDERR; $| = 1; | |
23 select STDOUT; $| = 1; | |
24 | |
1334
c4f58dfe8207
Tests: stream udp tests adjusted for upcoming udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
1237
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/stream udp/)->plan(4) |
868 | 26 ->write_file_expand('nginx.conf', <<'EOF'); |
27 | |
28 %%TEST_GLOBALS%% | |
29 | |
30 daemon off; | |
31 | |
32 events { | |
33 } | |
34 | |
35 stream { | |
36 proxy_timeout 1s; | |
37 | |
38 server { | |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
39 listen 127.0.0.1:%%PORT_8980_UDP%% udp; |
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
40 proxy_pass 127.0.0.1:%%PORT_8981_UDP%%; |
868 | 41 |
42 proxy_responses 0; | |
43 } | |
44 | |
45 server { | |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
46 listen 127.0.0.1:%%PORT_8982_UDP%% udp; |
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
47 proxy_pass 127.0.0.1:%%PORT_8981_UDP%%; |
868 | 48 |
49 proxy_responses 2; | |
50 } | |
51 | |
52 server { | |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
53 listen 127.0.0.1:%%PORT_8983_UDP%% udp; |
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
54 proxy_pass 127.0.0.1:%%PORT_8981_UDP%%; |
868 | 55 } |
56 } | |
57 | |
58 EOF | |
59 | |
60 | |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
61 $t->run_daemon(\&udp_daemon, port(8981), $t); |
1020
196d33c2bb45
Tests: removed TODO and try_run() checks for legacy versions.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
974
diff
changeset
|
62 $t->run(); |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
63 $t->waitforfile($t->testdir . '/' . port(8981)); |
868 | 64 |
65 ############################################################################### | |
66 | |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
67 my $s = dgram('127.0.0.1:' . port(8980)); |
935
25a4b2fdd3fb
Tests: I/O timeout options introduced in Stream.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
868
diff
changeset
|
68 is($s->io('1', read => 1, read_timeout => 0.5), '', 'proxy responses 0'); |
868 | 69 |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
70 $s = dgram('127.0.0.1:' . port(8982)); |
868 | 71 is($s->io('1'), '1', 'proxy responses 1'); |
1334
c4f58dfe8207
Tests: stream udp tests adjusted for upcoming udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
1237
diff
changeset
|
72 $s = dgram('127.0.0.1:' . port(8982)); |
868 | 73 is($s->io('2', read => 2), '12', 'proxy responses 2'); |
74 | |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
75 $s = dgram('127.0.0.1:' . port(8983)); |
868 | 76 is($s->io('3', read => 3), '123', 'proxy responses default'); |
77 | |
78 ############################################################################### | |
79 | |
80 sub udp_daemon { | |
81 my ($port, $t) = @_; | |
82 | |
83 my $server = IO::Socket::INET->new( | |
84 Proto => 'udp', | |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
85 LocalAddr => '127.0.0.1:' . port(8981), |
868 | 86 Reuse => 1, |
87 ) | |
88 or die "Can't create listening socket: $!\n"; | |
89 | |
90 # signal we are ready | |
91 | |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1020
diff
changeset
|
92 open my $fh, '>', $t->testdir() . '/' . port(8981); |
868 | 93 close $fh; |
94 | |
95 while (1) { | |
96 $server->recv(my $buffer, 65536); | |
97 $server->send($_) for (1 .. $buffer); | |
98 } | |
99 } | |
100 | |
101 ############################################################################### |