~ubuntu-branches/ubuntu/trusty/nginx/trusty-updates

« back to all changes in this revision

Viewing changes to debian/modules/nginx-lua/t/071-idle-socket.t

  • Committer: Package Import Robot
  • Author(s): Kartik Mistry, Cyril Lavier, Michael Lustfield, Kartik Mistry
  • Date: 2012-05-14 11:15:00 UTC
  • mfrom: (4.2.49 sid)
  • Revision ID: package-import@ubuntu.com-20120514111500-1y9ij7zulu9xnmry
Tags: 1.2.0-1
[Cyril Lavier]
* New upstream release. (Closes: #670306)
  + 1.2.x is stable release now.
* debian/modules/chunkin-nginx-module:
  + Updated chunkin-nginx-module to v0.23rc2-3-g85eca98.
* debian/modules/headers-more-module:
  + Updated headers-more-module to v0.17rc1-4-g33a82ed.
* debian/modules/nginx-development-kit:
  + Updated nginx-development-kit to v0.2.17-7-g24202b4.
* debian/modules/nginx-echo:
  + Updated nginx-echo to v0.38rc2-7-g080c0a1.
* debian/modules/nginx-lua:
  + Updated nginx-lua to v0.5.0rc25-5-g8d28785.
* debian/modules/nginx-upstream-fair:
  + Updated nginx-upstream-fair to a18b409.
* debian/modules/nginx-upload-progress:
  + Updated nginx-upload-progress to v0.9.0-0-ga788dea.
* debian/modules/naxsi:
  + Updated naxsi to 0.46
* debian/modules/README.Modules-versions:
  + Updated versions and URLs for modules.
* debian/naxsi-ui-extract, debian/naxsi-ui-intercept,
  debian/nginx-naxsi-ui.*, debian/naxsi-ui-extract.1,
  debian/naxsi-ui-intercept.1, debian/rules:
  + Added nginx-naxsi-ui package containing the learning daemon
    and the WebUI.
* debian/nginx-common.nginx.default, debian/nginx-common.nginx.init:
  + Renamed files to be compliant with the nginx-naxsi-ui package.
* debian/po:
  + Added needed files for using po-debconf.
  + Added French translation.
* debian/control:
  + Applied the modifications given after the review by Justin Rye.

[Michael Lustfield]
* debian/conf/uwsgi_params:
  + Added UWSGI_SCHEME to uwsgi_params. (Closes: #664878)
* debian/conf/sites-available/default:
  + Added allow directive for ipv6 localhost. (Closes: #664271)

[Kartik Mistry]
* debian/control:
  + wrap-and-sort.
* debian/copyright:
  + Added missing copyrights, minor formatting fixes.
* debian/nginx-common.nginx.init:
  + Added ulimit for restarts, Thanks to Daniel Roschka
    <danielroschka@phoenitydawn.de> for patch. (Closes: #673580)
* debian/conf/sites-available/default:
  + Added patch to fix deprecated "listen" directive, Thanks to
    Guillaume Plessis <gui@dotdeb.org> for patch. (Closes: #672632)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# vim:set ft= ts=4 sw=4 et fdm=marker:
 
2
 
 
3
use lib 'lib';
 
4
use Test::Nginx::Socket;
 
5
 
 
6
repeat_each(2);
 
7
 
 
8
plan tests => repeat_each() * (blocks() * 3);
 
9
 
 
10
our $HtmlDir = html_dir;
 
11
 
 
12
$ENV{TEST_NGINX_CLIENT_PORT} ||= server_port();
 
13
$ENV{TEST_NGINX_MEMCACHED_PORT} ||= 11211;
 
14
 
 
15
no_long_string();
 
16
#no_diff();
 
17
#log_level 'warn';
 
18
 
 
19
run_tests();
 
20
 
 
21
__DATA__
 
22
 
 
23
=== TEST 1: read events come when socket is idle
 
24
--- config
 
25
    server_tokens off;
 
26
    location /t {
 
27
        set $port $TEST_NGINX_CLIENT_PORT;
 
28
 
 
29
        content_by_lua '
 
30
            local sock = ngx.socket.tcp()
 
31
            local port = ngx.var.port
 
32
 
 
33
            local ok, err = sock:connect("127.0.0.1", port)
 
34
            if not ok then
 
35
                ngx.say("failed to connect: ", err)
 
36
                return
 
37
            end
 
38
 
 
39
            ngx.say("connected: ", ok)
 
40
 
 
41
            local req = "GET /foo HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n"
 
42
 
 
43
            local bytes, err = sock:send(req)
 
44
            if not bytes then
 
45
                ngx.say("failed to send request: ", err)
 
46
                return
 
47
            end
 
48
            ngx.say("request sent: ", bytes)
 
49
 
 
50
            local reader = sock:receiveuntil("foofoo\\r\\n")
 
51
            local line, err, part = reader()
 
52
            if line then
 
53
                ngx.print("read: ", line)
 
54
 
 
55
            else
 
56
                ngx.say("failed to read a line: ", err, " [", part, "]")
 
57
            end
 
58
 
 
59
            ngx.location.capture("/sleep")
 
60
 
 
61
            local data, err, part = sock:receive("*a")
 
62
            if not data then
 
63
                ngx.say("failed to read the 2nd part: ", err)
 
64
            else
 
65
                ngx.say("2nd part: [", data, "]")
 
66
            end
 
67
 
 
68
            ok, err = sock:close()
 
69
            ngx.say("close: ", ok, " ", err)
 
70
        ';
 
71
    }
 
72
 
 
73
    location /sleep {
 
74
        echo_sleep 0.5;
 
75
        more_clear_headers Date;
 
76
    }
 
77
 
 
78
    location /foo {
 
79
        echo -n foofoo;
 
80
        echo_flush;
 
81
        echo_sleep 0.3;
 
82
        echo -n barbar;
 
83
        more_clear_headers Date;
 
84
    }
 
85
--- request
 
86
GET /t
 
87
--- response_body eval
 
88
qq{connected: 1
 
89
request sent: 57
 
90
read: HTTP/1.1 200 OK\r
 
91
Server: nginx\r
 
92
Content-Type: text/plain\r
 
93
Transfer-Encoding: chunked\r
 
94
Connection: close\r
 
95
\r
 
96
6\r
 
97
2nd part: [6\r
 
98
barbar\r
 
99
0\r
 
100
\r
 
101
]
 
102
close: nil closed
 
103
}
 
104
--- no_error_log
 
105
[error]
 
106
 
 
107
 
 
108
 
 
109
=== TEST 2: read timer cleared in time
 
110
--- config
 
111
    server_tokens off;
 
112
    location /t {
 
113
        #set $port 5000;
 
114
        set $port $TEST_NGINX_MEMCACHED_PORT;
 
115
 
 
116
        content_by_lua '
 
117
            local sock = ngx.socket.tcp()
 
118
            local port = ngx.var.port
 
119
 
 
120
            sock:settimeout(400)
 
121
 
 
122
            local ok, err = sock:connect("127.0.0.1", port)
 
123
            if not ok then
 
124
                ngx.say("failed to connect: ", err)
 
125
                return
 
126
            end
 
127
 
 
128
            ngx.say("connected: ", ok)
 
129
 
 
130
            local req = "flush_all\\r\\n"
 
131
 
 
132
            local bytes, err = sock:send(req)
 
133
            if not bytes then
 
134
                ngx.say("failed to send request: ", err)
 
135
                return
 
136
            end
 
137
            ngx.say("request sent: ", bytes)
 
138
 
 
139
            local line, err, part = sock:receive()
 
140
            if line then
 
141
                ngx.say("received: ", line)
 
142
 
 
143
            else
 
144
                ngx.say("failed to receive a line: ", err, " [", part, "]")
 
145
            end
 
146
 
 
147
            ngx.location.capture("/sleep")
 
148
 
 
149
            local bytes, err = sock:send(req)
 
150
            if not bytes then
 
151
                ngx.say("failed to send request: ", err)
 
152
                return
 
153
            end
 
154
            ngx.say("request sent again: ", bytes)
 
155
 
 
156
            ok, err = sock:close()
 
157
            ngx.say("close: ", ok, " ", err)
 
158
        ';
 
159
    }
 
160
 
 
161
    location /sleep {
 
162
        echo_sleep 0.5;
 
163
    }
 
164
 
 
165
    location /foo {
 
166
        echo foo;
 
167
        more_clear_headers Date;
 
168
    }
 
169
--- request
 
170
GET /t
 
171
--- response_body
 
172
connected: 1
 
173
request sent: 11
 
174
received: OK
 
175
request sent again: 11
 
176
close: 1 nil
 
177
--- no_error_log
 
178
[error]
 
179
 
 
180
 
 
181
 
 
182
=== TEST 3: connect timer cleared in time
 
183
--- config
 
184
    server_tokens off;
 
185
    location /t {
 
186
        #set $port 5000;
 
187
        set $port $TEST_NGINX_MEMCACHED_PORT;
 
188
 
 
189
        content_by_lua '
 
190
            local sock = ngx.socket.tcp()
 
191
            local port = ngx.var.port
 
192
 
 
193
            sock:settimeout(300)
 
194
 
 
195
            local ok, err = sock:connect("127.0.0.1", port)
 
196
            if not ok then
 
197
                ngx.say("failed to connect: ", err)
 
198
                return
 
199
            end
 
200
 
 
201
            ngx.say("connected: ", ok)
 
202
 
 
203
            ngx.location.capture("/sleep")
 
204
 
 
205
            local req = "flush_all\\r\\n"
 
206
            local bytes, err = sock:send(req)
 
207
            if not bytes then
 
208
                ngx.say("failed to send request: ", err)
 
209
                return
 
210
            end
 
211
            ngx.say("request sent: ", bytes)
 
212
 
 
213
            ok, err = sock:close()
 
214
            ngx.say("close: ", ok, " ", err)
 
215
        ';
 
216
    }
 
217
 
 
218
    location /sleep {
 
219
        echo_sleep 0.5;
 
220
    }
 
221
 
 
222
    location /foo {
 
223
        echo foo;
 
224
        more_clear_headers Date;
 
225
    }
 
226
--- request
 
227
GET /t
 
228
--- response_body
 
229
connected: 1
 
230
request sent: 11
 
231
close: 1 nil
 
232
--- no_error_log
 
233
[error]
 
234
 
 
235
 
 
236
 
 
237
=== TEST 4: send timer cleared in time
 
238
--- config
 
239
    server_tokens off;
 
240
    location /t {
 
241
        #set $port 5000;
 
242
        set $port $TEST_NGINX_MEMCACHED_PORT;
 
243
 
 
244
        content_by_lua '
 
245
            local sock = ngx.socket.tcp()
 
246
            local port = ngx.var.port
 
247
 
 
248
            sock:settimeout(300)
 
249
 
 
250
            local ok, err = sock:connect("127.0.0.1", port)
 
251
            if not ok then
 
252
                ngx.say("failed to connect: ", err)
 
253
                return
 
254
            end
 
255
 
 
256
            ngx.say("connected: ", ok)
 
257
 
 
258
            local req = "flush_all\\r\\n"
 
259
 
 
260
            local bytes, err = sock:send(req)
 
261
            if not bytes then
 
262
                ngx.say("failed to send request: ", err)
 
263
                return
 
264
            end
 
265
            ngx.say("request sent: ", bytes)
 
266
 
 
267
            ngx.location.capture("/sleep")
 
268
 
 
269
            local line, err, part = sock:receive()
 
270
            if line then
 
271
                ngx.say("received: ", line)
 
272
 
 
273
            else
 
274
                ngx.say("failed to receive a line: ", err, " [", part, "]")
 
275
                return
 
276
            end
 
277
 
 
278
            ok, err = sock:close()
 
279
            ngx.say("close: ", ok, " ", err)
 
280
        ';
 
281
    }
 
282
 
 
283
    location /sleep {
 
284
        echo_sleep 0.5;
 
285
    }
 
286
 
 
287
    location /foo {
 
288
        echo foo;
 
289
        more_clear_headers Date;
 
290
    }
 
291
--- request
 
292
GET /t
 
293
--- response_body
 
294
connected: 1
 
295
request sent: 11
 
296
received: OK
 
297
close: 1 nil
 
298
--- no_error_log
 
299
[error]
 
300
 
 
301
 
 
302
 
 
303
=== TEST 5: set keepalive when system socket recv buffer has unread data
 
304
--- config
 
305
    server_tokens off;
 
306
    location /t {
 
307
        set $port $TEST_NGINX_CLIENT_PORT;
 
308
 
 
309
        content_by_lua '
 
310
            local sock = ngx.socket.tcp()
 
311
            local port = ngx.var.port
 
312
 
 
313
            local ok, err = sock:connect("127.0.0.1", port)
 
314
            if not ok then
 
315
                ngx.say("failed to connect: ", err)
 
316
                return
 
317
            end
 
318
 
 
319
            ngx.say("connected: ", ok)
 
320
 
 
321
            local req = "GET /foo HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n"
 
322
 
 
323
            local bytes, err = sock:send(req)
 
324
            if not bytes then
 
325
                ngx.say("failed to send request: ", err)
 
326
                return
 
327
            end
 
328
            ngx.say("request sent: ", bytes)
 
329
 
 
330
            local reader = sock:receiveuntil("foofoo\\r\\n")
 
331
            local line, err, part = reader()
 
332
            if line then
 
333
                ngx.print("read: ", line)
 
334
 
 
335
            else
 
336
                ngx.say("failed to read a line: ", err, " [", part, "]")
 
337
            end
 
338
 
 
339
            ngx.location.capture("/sleep")
 
340
 
 
341
            local ok, err = sock:setkeepalive()
 
342
            if not ok then
 
343
                ngx.say("failed to set keepalive: ", err)
 
344
            end
 
345
        ';
 
346
    }
 
347
 
 
348
    location /sleep {
 
349
        echo_sleep 0.5;
 
350
        more_clear_headers Date;
 
351
    }
 
352
 
 
353
    location /foo {
 
354
        echo -n foofoo;
 
355
        echo_flush;
 
356
        echo_sleep 0.3;
 
357
        echo -n barbar;
 
358
        more_clear_headers Date;
 
359
    }
 
360
--- request
 
361
GET /t
 
362
--- response_body eval
 
363
qq{connected: 1
 
364
request sent: 57
 
365
read: HTTP/1.1 200 OK\r
 
366
Server: nginx\r
 
367
Content-Type: text/plain\r
 
368
Transfer-Encoding: chunked\r
 
369
Connection: close\r
 
370
\r
 
371
6\r
 
372
failed to set keepalive: connection in dubious state
 
373
}
 
374
--- no_error_log
 
375
[error]
 
376
 
 
377
 
 
378
 
 
379
=== TEST 6: set keepalive when cosocket recv buffer has unread data
 
380
--- config
 
381
    server_tokens off;
 
382
    location /t {
 
383
        set $port $TEST_NGINX_MEMCACHED_PORT;
 
384
 
 
385
        content_by_lua '
 
386
            local sock = ngx.socket.tcp()
 
387
            local port = ngx.var.port
 
388
 
 
389
            local ok, err = sock:connect("127.0.0.1", port)
 
390
            if not ok then
 
391
                ngx.say("failed to connect: ", err)
 
392
                return
 
393
            end
 
394
 
 
395
            ngx.say("connected: ", ok)
 
396
 
 
397
            local req = "flush_all\\r\\n"
 
398
 
 
399
            local bytes, err = sock:send(req)
 
400
            if not bytes then
 
401
                ngx.say("failed to send request: ", err)
 
402
                return
 
403
            end
 
404
 
 
405
            ngx.say("request sent: ", bytes)
 
406
 
 
407
            local data, err = sock:receive(1)
 
408
            if not data then
 
409
                ngx.say("failed to read the 1st byte: ", err)
 
410
                return
 
411
            end
 
412
 
 
413
            ngx.say("read: ", data)
 
414
 
 
415
            local ok, err = sock:setkeepalive()
 
416
            if not ok then
 
417
                ngx.say("failed to set keepalive: ", err)
 
418
            end
 
419
        ';
 
420
    }
 
421
 
 
422
    location /foo {
 
423
        echo foo;
 
424
        more_clear_headers Date;
 
425
    }
 
426
--- request
 
427
GET /t
 
428
--- response_body eval
 
429
qq{connected: 1
 
430
request sent: 11
 
431
read: O
 
432
failed to set keepalive: unread data in buffer
 
433
}
 
434
--- no_error_log
 
435
[error]
 
436