annotate stream_udp_limit_rate.t @ 1477:8b122b35703b

Tests: fixed session reuse tests in ssl_certificate.t with TLSv1.3. Previously, session data was retrieved too early, before server passed application data, which usually means NewSessionTicket is not yet sent. The fix is to ask server for application data, then retrieve a session.
author Sergey Kandaurov <pluknet@nginx.com>
date Mon, 20 May 2019 16:00:40 +0300
parents 3e0dcf1e7752
children 760fdf2865bb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1430
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for stream proxy module with datagrams, limit rate directives.
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use Test::Nginx::Stream qw/ dgram /;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21 ###############################################################################
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26 my $t = Test::Nginx->new()->has(qw/stream udp/)
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 ->write_file_expand('nginx.conf', <<'EOF');
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 daemon off;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 events {
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 }
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 stream {
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 proxy_requests 2;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 proxy_responses 1;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 server {
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 listen 127.0.0.1:%%PORT_8982_UDP%% udp;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 proxy_pass 127.0.0.1:%%PORT_8980_UDP%%;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 }
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 server {
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 listen 127.0.0.1:%%PORT_8983_UDP%% udp;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 proxy_pass 127.0.0.1:%%PORT_8980_UDP%%;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 proxy_download_rate 500;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 }
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 server {
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 listen 127.0.0.1:%%PORT_8984_UDP%% udp;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 proxy_pass 127.0.0.1:%%PORT_8980_UDP%%;
1432
d17fb72140f2 Tests: adjusted stream_udp_limit_rate.t for slow hosts.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1431
diff changeset
54 proxy_upload_rate 500;
1430
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55 }
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 }
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 EOF
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 $t->run_daemon(\&udp_daemon, port(8980), $t);
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 $t->try_run('no proxy_requests')->plan(8);
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 $t->waitforfile($t->testdir . '/' . port(8980));
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 ###############################################################################
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 my $str = '1234567890' x 100;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 # unlimited
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 my $s = dgram('127.0.0.1:' . port(8982));
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 is($s->io($str), $str, 'unlimited');
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 is($s->io($str), $str, 'unlimited 2');
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 # datagram doesn't get split
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76
1433
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
77 my $t1;
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
78
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
79 TODO: {
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
80 local $TODO = 'split datagram' unless $t->has_version('1.15.9');
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
81
1430
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 $s = dgram('127.0.0.1:' . port(8983));
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 is($s->io($str), $str, 'download');
1433
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
84 $t1 = time();
1430
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 is($s->io($str), $str, 'download 2');
1433
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
86
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
87 }
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
88
1430
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 my $t2 = time();
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 cmp_ok($t1, '<', $t2, 'download 2 delayed');
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91
1433
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
92 TODO: {
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
93 todo_skip 'infinite event report', 3 unless $t->has_version('1.15.9');
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
94
1430
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 $s = dgram('127.0.0.1:' . port(8984));
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96 is($s->io($str), $str, 'upload');
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97 is($s->io($str, read_timeout => 0.5), '', 'upload limited');
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98
1432
d17fb72140f2 Tests: adjusted stream_udp_limit_rate.t for slow hosts.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1431
diff changeset
99 select undef, undef, undef, 1.6;
1430
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 is($s->io($str), $str, 'upload passed');
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101
1433
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
102 }
3e0dcf1e7752 Tests: keep stream_udp_limit_rate.t TODOs for a while.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1432
diff changeset
103
1430
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104 ###############################################################################
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 sub udp_daemon {
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107 my ($port, $t) = @_;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 my $server = IO::Socket::INET->new(
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 Proto => 'udp',
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 LocalAddr => "127.0.0.1:$port",
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112 )
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113 or die "Can't create listening socket: $!\n";
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115 # signal we are ready
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117 open my $fh, '>', $t->testdir() . "/$port";
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 close $fh;
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
120 while (1) {
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121 $server->recv(my $buffer, 65536);
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122 log2i("$server $buffer");
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124 log2o("$server $buffer");
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
125 $server->send($buffer);
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
126 }
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
127 }
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
128
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129 sub log2i { Test::Nginx::log_core('|| <<', @_); }
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130 sub log2o { Test::Nginx::log_core('|| >>', @_); }
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
131 sub log2c { Test::Nginx::log_core('||', @_); }
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
132
bba26f4b40ef Tests: stream limit rate tests with datagrams.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
133 ###############################################################################