changeset 1335:d2ceb8c8ef8b

Tests: udp streams.
author Roman Arutyunyan <arut@nginx.com>
date Mon, 04 Jun 2018 15:43:59 +0300
parents c4f58dfe8207
children 7a0d626ecd94
files stream_udp_stream.t
diffstat 1 files changed, 79 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/stream_udp_stream.t
@@ -0,0 +1,79 @@
+#!/usr/bin/perl
+
+# (C) Nginx, Inc.
+
+# Tests for UDP stream.
+
+###############################################################################
+
+use warnings;
+use strict;
+
+use Test::More;
+
+BEGIN { use FindBin; chdir($FindBin::Bin); }
+
+use lib 'lib';
+use Test::Nginx;
+use Test::Nginx::Stream qw/ dgram /;
+
+###############################################################################
+
+select STDERR; $| = 1;
+select STDOUT; $| = 1;
+
+my $t = Test::Nginx->new()->has(qw/stream stream_return udp/)->plan(8)
+	->write_file_expand('nginx.conf', <<'EOF');
+
+%%TEST_GLOBALS%%
+
+daemon off;
+
+events {
+}
+
+stream {
+    proxy_timeout   500ms;
+
+    server {
+        listen      127.0.0.1:%%PORT_8980_UDP%% udp;
+        proxy_pass  127.0.0.1:%%PORT_8981_UDP%%;
+    }
+
+    server {
+        listen      127.0.0.1:%%PORT_8981_UDP%% udp;
+        return      $remote_port;
+    }
+}
+
+EOF
+
+
+$t->run();
+
+###############################################################################
+
+my $s = dgram('127.0.0.1:' . port(8980));
+my $data = $s->io('1', read_timeout => 0.5);
+isnt($data, '', 'udp_stream response 1');
+
+my $s2 = dgram('127.0.0.1:' . port(8980));
+my $data2 = $s2->io('1', read_timeout => 0.5);
+isnt($data2, '', 'udp_stream response 2');
+
+isnt($data, $data2, 'udp_stream two sessions');
+
+TODO: {
+local $TODO = 'not yet' unless $t->has_version('1.15.0');
+
+is($s->io('1'), $data, 'udp_stream session 1');
+is($s->io('1'), $data, 'udp_stream session 2');
+
+is($s2->io('1'), $data2, 'udp_stream another session 1');
+is($s2->io('1'), $data2, 'udp_stream another session 2');
+
+}
+
+sleep 1;
+
+isnt($s->io('1'), $data, 'udp_stream new session');