diff stream_udp_proxy.t @ 1574:42e37e0434d5

Tests: stream udp tests with zero-length payload (ticket #1982).
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 10 Jun 2020 15:35:20 +0300
parents c4f58dfe8207
children f3ba4c74de31
line wrap: on
line diff
--- a/stream_udp_proxy.t	Tue Jun 02 14:30:27 2020 +0300
+++ b/stream_udp_proxy.t	Wed Jun 10 15:35:20 2020 +0300
@@ -22,7 +22,7 @@
 select STDERR; $| = 1;
 select STDOUT; $| = 1;
 
-my $t = Test::Nginx->new()->has(qw/stream udp/)->plan(4)
+my $t = Test::Nginx->new()->has(qw/stream udp/)->plan(8)
 	->write_file_expand('nginx.conf', <<'EOF');
 
 %%TEST_GLOBALS%%
@@ -75,6 +75,22 @@
 $s = dgram('127.0.0.1:' . port(8983));
 is($s->io('3', read => 3), '123', 'proxy responses default');
 
+# zero-length payload
+
+TODO: {
+local $TODO = 'not yet' unless $t->has_version('1.19.1');
+
+$s = dgram('127.0.0.1:' . port(8982));
+$s->write('');
+is($s->read(), 'zero', 'upstream read zero bytes');
+is($s->read(), '', 'upstream sent zero bytes');
+
+$s->write('');
+is($s->read(), 'zero', 'upstream read zero bytes again');
+is($s->read(), '', 'upstream sent zero bytes again');
+
+}
+
 ###############################################################################
 
 sub udp_daemon {
@@ -94,7 +110,15 @@
 
 	while (1) {
 		$server->recv(my $buffer, 65536);
-		$server->send($_) for (1 .. $buffer);
+
+		if (length($buffer) > 0) {
+			$server->send($_) for (1 .. $buffer);
+
+		} else {
+			$server->send('zero');
+			select undef, undef, undef, 0.2;
+			$server->send('');
+		}
 	}
 }