Mercurial > hg > nginx-tests
comparison stream_udp_limit_conn.t @ 952:e9064d691790
Tests: converted tests to run in parallel.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Tue, 21 Jun 2016 16:39:13 +0300 |
parents | b9e42c554ba7 |
children | 882267679006 |
comparison
equal
deleted
inserted
replaced
951:9361c7eddfc1 | 952:e9064d691790 |
---|---|
39 | 39 |
40 proxy_responses 1; | 40 proxy_responses 1; |
41 proxy_timeout 1s; | 41 proxy_timeout 1s; |
42 | 42 |
43 server { | 43 server { |
44 listen 127.0.0.1:8081 udp; | 44 listen 127.0.0.1:%%PORT_1_UDP%% udp; |
45 proxy_pass 127.0.0.1:8080; | 45 proxy_pass 127.0.0.1:%%PORT_0_UDP%%; |
46 | 46 |
47 limit_conn zone 1; | 47 limit_conn zone 1; |
48 proxy_responses 2; | 48 proxy_responses 2; |
49 } | 49 } |
50 | 50 |
51 server { | 51 server { |
52 listen 127.0.0.1:8082 udp; | 52 listen 127.0.0.1:%%PORT_2_UDP%% udp; |
53 proxy_pass 127.0.0.1:8080; | 53 proxy_pass 127.0.0.1:%%PORT_0_UDP%%; |
54 limit_conn zone2 1; | 54 limit_conn zone2 1; |
55 } | 55 } |
56 | 56 |
57 server { | 57 server { |
58 listen 127.0.0.1:8083 udp; | 58 listen 127.0.0.1:%%PORT_3_UDP%% udp; |
59 proxy_pass 127.0.0.1:8080; | 59 proxy_pass 127.0.0.1:%%PORT_0_UDP%%; |
60 limit_conn zone 5; | 60 limit_conn zone 5; |
61 } | 61 } |
62 | 62 |
63 server { | 63 server { |
64 listen 127.0.0.1:8084 udp; | 64 listen 127.0.0.1:%%PORT_4_UDP%% udp; |
65 proxy_pass 127.0.0.1:8081; | 65 proxy_pass 127.0.0.1:%%PORT_1_UDP%%; |
66 limit_conn zone2 1; | 66 limit_conn zone2 1; |
67 } | 67 } |
68 | 68 |
69 server { | 69 server { |
70 listen 127.0.0.1:8085 udp; | 70 listen 127.0.0.1:%%PORT_5_UDP%% udp; |
71 proxy_pass 127.0.0.1:8081; | 71 proxy_pass 127.0.0.1:%%PORT_1_UDP%%; |
72 limit_conn zone 1; | 72 limit_conn zone 1; |
73 } | 73 } |
74 } | 74 } |
75 | 75 |
76 EOF | 76 EOF |
77 | 77 |
78 $t->try_run('no stream udp')->plan(9); | 78 $t->try_run('no stream udp')->plan(9); |
79 $t->run_daemon(\&udp_daemon, $t); | 79 $t->run_daemon(\&udp_daemon, $t); |
80 $t->waitforfile($t->testdir . '/8080'); | 80 $t->waitforfile($t->testdir . '/' . port(0)); |
81 | 81 |
82 ############################################################################### | 82 ############################################################################### |
83 | 83 |
84 # same and other zones | 84 # same and other zones |
85 | 85 |
86 my $s = dgram('127.0.0.1:8081'); | 86 my $s = dgram('127.0.0.1:' . port(1)); |
87 | 87 |
88 is($s->io('1'), '1', 'passed'); | 88 is($s->io('1'), '1', 'passed'); |
89 | 89 |
90 # if not all responses were sent to client, then new request | 90 # if not all responses were sent to client, then new request |
91 # in same socket will be treated as new connection | 91 # in same socket will be treated as new connection |
92 | 92 |
93 is($s->io('1', read_timeout => 0.1), '', 'rejected new connection'); | 93 is($s->io('1', read_timeout => 0.1), '', 'rejected new connection'); |
94 is(dgram('127.0.0.1:8081')->io('1', read_timeout => 0.1), '', | 94 is(dgram('127.0.0.1:' . port(1))->io('1', read_timeout => 0.1), '', |
95 'rejected same zone'); | 95 'rejected same zone'); |
96 is(dgram('127.0.0.1:8082')->io('1'), '1', 'passed different zone'); | 96 is(dgram('127.0.0.1:' . port(2))->io('1'), '1', 'passed different zone'); |
97 is(dgram('127.0.0.1:8083')->io('1'), '1', 'passed same zone unlimited'); | 97 is(dgram('127.0.0.1:' . port(3))->io('1'), '1', 'passed same zone unlimited'); |
98 | 98 |
99 sleep 1; # waiting for proxy_timeout to expire | 99 sleep 1; # waiting for proxy_timeout to expire |
100 | 100 |
101 is($s->io('2', read => 2), '12', 'new connection after proxy_timeout'); | 101 is($s->io('2', read => 2), '12', 'new connection after proxy_timeout'); |
102 | 102 |
103 is(dgram('127.0.0.1:8081')->io('2', read => 2), '12', 'passed 2'); | 103 is(dgram('127.0.0.1:' . port(1))->io('2', read => 2), '12', 'passed 2'); |
104 | 104 |
105 # zones proxy chain | 105 # zones proxy chain |
106 | 106 |
107 is(dgram('127.0.0.1:8084')->io('1'), '1', 'passed proxy'); | 107 is(dgram('127.0.0.1:' . port(4))->io('1'), '1', 'passed proxy'); |
108 is(dgram('127.0.0.1:8085')->io('1', read_timeout => 0.1), '', | 108 is(dgram('127.0.0.1:' . port(5))->io('1', read_timeout => 0.1), '', |
109 'rejected proxy'); | 109 'rejected proxy'); |
110 | 110 |
111 ############################################################################### | 111 ############################################################################### |
112 | 112 |
113 sub udp_daemon { | 113 sub udp_daemon { |
114 my $t = shift; | 114 my $t = shift; |
115 | 115 |
116 my $server = IO::Socket::INET->new( | 116 my $server = IO::Socket::INET->new( |
117 Proto => 'udp', | 117 Proto => 'udp', |
118 LocalAddr => '127.0.0.1:8080', | 118 LocalAddr => '127.0.0.1:' . port(0), |
119 Reuse => 1, | 119 Reuse => 1, |
120 ) | 120 ) |
121 or die "Can't create listening socket: $!\n"; | 121 or die "Can't create listening socket: $!\n"; |
122 | 122 |
123 # signal we are ready | 123 # signal we are ready |
124 | 124 |
125 open my $fh, '>', $t->testdir() . '/8080'; | 125 open my $fh, '>', $t->testdir() . '/' . port(0); |
126 close $fh; | 126 close $fh; |
127 | 127 |
128 while (1) { | 128 while (1) { |
129 $server->recv(my $buffer, 65536); | 129 $server->recv(my $buffer, 65536); |
130 $server->send($_) for (1 .. $buffer); | 130 $server->send($_) for (1 .. $buffer); |