annotate stream_udp_stream.t @ 1434:fc8341cf92a3

Tests: removed ngx_parse_inet6_url() "::" test from proxy.t. It results in WSAEADDRNOTAVAIL on win32, be the connection errors detected, which leads to connect() alert. On other systems, connect() is successful but it uses the default port (80), which is out of documented ports range.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 24 Jan 2019 17:05:04 +0300
parents 4c0ea623343a
children 2fc21bdd6f0d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1335
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
2
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
3 # (C) Nginx, Inc.
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
4
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
5 # Tests for UDP stream.
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
6
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
7 ###############################################################################
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
8
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
9 use warnings;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
10 use strict;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
11
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
12 use Test::More;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
13
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
15
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
16 use lib 'lib';
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
17 use Test::Nginx;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
18 use Test::Nginx::Stream qw/ dgram /;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
19
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
20 ###############################################################################
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
21
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
24
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/stream stream_return udp/)->plan(8)
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
26 ->write_file_expand('nginx.conf', <<'EOF');
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
27
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
28 %%TEST_GLOBALS%%
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
29
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
30 daemon off;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
31
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
32 events {
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
33 }
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
34
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
35 stream {
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
36 proxy_timeout 500ms;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
37
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
38 server {
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
39 listen 127.0.0.1:%%PORT_8980_UDP%% udp;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
40 proxy_pass 127.0.0.1:%%PORT_8981_UDP%%;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
41 }
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
42
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
43 server {
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
44 listen 127.0.0.1:%%PORT_8981_UDP%% udp;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
45 return $remote_port;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
46 }
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
47 }
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
48
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
49 EOF
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
50
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
51 $t->run();
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
52
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
53 ###############################################################################
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
54
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
55 my $s = dgram('127.0.0.1:' . port(8980));
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
56 my $data = $s->io('1', read_timeout => 0.5);
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
57 isnt($data, '', 'udp_stream response 1');
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
58
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
59 my $s2 = dgram('127.0.0.1:' . port(8980));
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
60 my $data2 = $s2->io('1', read_timeout => 0.5);
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
61 isnt($data2, '', 'udp_stream response 2');
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
62
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
63 isnt($data, $data2, 'udp_stream two sessions');
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
64
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
65 TODO: {
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
66 local $TODO = 'not yet' unless $t->has_version('1.15.0');
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
67
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
68 is($s->io('1'), $data, 'udp_stream session 1');
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
69 is($s->io('1'), $data, 'udp_stream session 2');
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
70
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
71 is($s2->io('1'), $data2, 'udp_stream another session 1');
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
72 is($s2->io('1'), $data2, 'udp_stream another session 2');
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
73
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
74 }
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
75
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
76 sleep 1;
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
77
d2ceb8c8ef8b Tests: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
78 isnt($s->io('1'), $data, 'udp_stream new session');
1372
4c0ea623343a Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1335
diff changeset
79
4c0ea623343a Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1335
diff changeset
80 ###############################################################################