Mercurial > hg > nginx-tests
annotate limit_conn.t @ 386:1b205a3332de
Tests: adjusted limit_req rate value.
This shortens excessive test execution time due to unnecessarily delayed
backend connection after client connection close, which is usually observed
when the client connection is closed before the request is proxied to backend.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 26 Mar 2014 22:50:22 +0400 |
parents | 68b94b83412b |
children | 60888e2c3f5a |
rev | line source |
---|---|
313
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 # limit_req based tests for nginx limit_conn module. |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 ############################################################################### |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 use warnings; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use strict; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 use Test::More; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 use Socket qw/ CRLF /; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 BEGIN { use FindBin; chdir($FindBin::Bin); } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use lib 'lib'; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 use Test::Nginx; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 plan(skip_all => 'win32') if $^O eq 'MSWin32'; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 my $t = Test::Nginx->new()->has(qw/http proxy limit_conn limit_req/)->plan(10); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 $t->write_file_expand('nginx.conf', <<'EOF'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 %%TEST_GLOBALS%% |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 daemon off; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 events { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 http { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 %%TEST_GLOBALS_HTTP%% |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 |
386
1b205a3332de
Tests: adjusted limit_req rate value.
Sergey Kandaurov <pluknet@nginx.com>
parents:
318
diff
changeset
|
42 limit_req_zone $binary_remote_addr zone=req:1m rate=30r/m; |
313
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 limit_conn_zone $binary_remote_addr zone=zone:1m; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 limit_conn_zone $binary_remote_addr zone=zone2:1m; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 limit_conn_zone $binary_remote_addr zone=custom:1m; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 limit_zone legacy $binary_remote_addr 1m; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 server { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 listen 127.0.0.1:8081; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 server_name localhost; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 location /w { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 limit_req zone=req burst=10; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 server { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 listen 127.0.0.1:8080; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 server_name localhost; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 location / { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 proxy_pass http://127.0.0.1:8081; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 limit_conn zone 1; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 location /1 { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 limit_conn zone 1; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 location /zone { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 limit_conn zone2 1; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 location /unlim { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 limit_conn zone 5; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 location /custom { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 proxy_pass http://127.0.0.1:8081/; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 limit_conn_log_level info; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 limit_conn_status 501; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 limit_conn custom 1; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
84 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 location /legacy { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 proxy_pass http://127.0.0.1:8081/; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 limit_conn legacy 1; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
91 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 EOF |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
94 |
318
68b94b83412b
Tests: hide startup warnings about deprecated limit_zone.
Maxim Dounin <mdounin@mdounin.ru>
parents:
313
diff
changeset
|
95 open OLDERR, ">&", \*STDERR; close STDERR; |
313
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 $t->run(); |
318
68b94b83412b
Tests: hide startup warnings about deprecated limit_zone.
Maxim Dounin <mdounin@mdounin.ru>
parents:
313
diff
changeset
|
97 open STDERR, ">&", \*OLDERR; |
313
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 ############################################################################### |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
100 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 # charge limit_req |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 http_get('/w'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 # same and other zones in different locations |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 my $s = http_start('/w'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 like(http_get('/'), qr/^HTTP\/1.. 503 /, 'rejected'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 like(http_get('/1'), qr/^HTTP\/1.. 503 /, 'rejected different location'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 unlike(http_get('/zone'), qr/^HTTP\/1.. 503 /, 'passed different zone'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 close $s; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 unlike(http_get('/1'), qr/^HTTP\/1.. 503 /, 'passed'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 # custom error code and log level |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 $s = http_start('/custom/w'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 like(http_get('/custom'), qr/^HTTP\/1.. 501 /, 'limit_conn_status'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
119 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
120 like(`grep -F '[info]' ${\($t->testdir())}/error.log`, |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
121 qr/limiting connections by zone "custom"/s, |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
122 'limit_conn_log_level'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
123 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 # limit_zone |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
125 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
126 $s = http_start('/legacy/w'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
127 like(http_get('/legacy'), qr/^HTTP\/1.. 503 /, 'legacy rejected'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 $s->close; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 unlike(http_get('/legacy'), qr/^HTTP\/.. 503 /, 'legacy passed'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
131 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 # limited after unlimited |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
133 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
134 $s = http_start('/w'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
135 like(http_get('/unlim'), qr/404 Not Found/, 'unlimited passed'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
136 like(http_get('/'), qr/503 Service/, 'limited rejected'); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
137 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
138 ############################################################################### |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
139 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
140 sub http_start { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
141 my ($uri) = @_; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
142 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
143 my $s; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
144 my $request = "GET $uri HTTP/1.0" . CRLF . CRLF; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
145 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
146 eval { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
147 local $SIG{ALRM} = sub { die "timeout\n" }; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
148 local $SIG{PIPE} = sub { die "sigpipe\n" }; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
149 alarm(3); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
150 $s = IO::Socket::INET->new( |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
151 Proto => 'tcp', |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
152 PeerAddr => '127.0.0.1:8080' |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
153 ); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
154 log_out($request); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
155 $s->print($request); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
156 alarm(0); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
157 }; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
158 alarm(0); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
159 if ($@) { |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
160 log_in("died: $@"); |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
161 return undef; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
162 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
163 return $s; |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
164 } |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
165 |
9daf28f20766
Tests: added tests for limit_conn module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
166 ############################################################################### |