Mercurial > hg > nginx-tests
annotate js_body_filter.t @ 1752:ba6e24e38f03
Tests: improved stop_daemons() to send signal again.
As was observed, it's possible that a signal to complete a uwsgi daemon
can be ignored while it is starting up, which results in tests hang due
to eternal waiting on child processes termination. Notably, it is seen
when running tests with a high number of prove jobs on a low-profile VM
against nginx with broken modules and/or configuration. To reproduce:
$ TEST_NGINX_GLOBALS=ERROR prove -j16 uwsgi*.t
Inspecting uwsgi under ktrace on FreeBSD confirms that a SIGTERM signal
is ignored at the very beginning of uwsgi startup. It is then replaced
with a default action after listen(), thus waiting until uwsgi is ready
to accept new TCP connections doesn't completely solve the hang window.
The fix is to retry sending a signal some time after waitpid(WNOHANG)
continuously demonstrated no progress with reaping a signaled process.
It is modelled after f13ead27f89c that improved stop() for nginx.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 29 Dec 2021 22:29:23 +0300 |
parents | 759efa4abc76 |
children |
rev | line source |
---|---|
1656
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
2 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
3 # (C) Dmitry Volyntsev |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
5 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
6 # Tests for http njs module, body filter. |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
7 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
9 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
11 use strict; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
12 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
14 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
16 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
19 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
20 ############################################################################### |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
21 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
22 select STDERR; $| = 1; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
23 select STDOUT; $| = 1; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
24 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http proxy/) |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
26 ->write_file_expand('nginx.conf', <<'EOF'); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
27 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
28 %%TEST_GLOBALS%% |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
29 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
30 daemon off; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
31 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
32 events { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
33 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
34 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
35 http { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
37 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
38 js_import test.js; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
39 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
40 server { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
41 listen 127.0.0.1:8080; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
42 server_name localhost; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
43 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
44 location /njs { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
45 js_content test.njs; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
46 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
47 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
48 location /append { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
49 js_body_filter test.append; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
50 proxy_pass http://127.0.0.1:8081/source; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
51 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
52 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
53 location /buffer_type { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
54 js_body_filter test.buffer_type buffer_type=buffer; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
55 proxy_pass http://127.0.0.1:8081/source; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
56 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
57 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
58 location /forward { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
59 js_body_filter test.forward buffer_type=string; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
60 proxy_pass http://127.0.0.1:8081/source; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
61 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
62 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
63 location /filter { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
64 proxy_buffering off; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
65 js_body_filter test.filter; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
66 proxy_pass http://127.0.0.1:8081/source; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
67 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
68 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
69 location /prepend { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
70 js_body_filter test.prepend; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
71 proxy_pass http://127.0.0.1:8081/source; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
72 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
73 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
74 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
75 server { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
76 listen 127.0.0.1:8081; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
77 server_name localhost; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
78 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
79 location /source { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
80 postpone_output 1; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
81 js_content test.source; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
82 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
83 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
84 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
85 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
86 EOF |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
87 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
88 $t->write_file('test.js', <<EOF); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
89 function test_njs(r) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
90 r.return(200, njs.version); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
91 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
92 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
93 function append(r, data, flags) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
94 r.sendBuffer(data, {last:false}); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
95 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
96 if (flags.last) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
97 r.sendBuffer("XXX", flags); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
98 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
99 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
100 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
101 var collect = Buffer.from([]); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
102 function buffer_type(r, data, flags) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
103 collect = Buffer.concat([collect, data]); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
104 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
105 if (flags.last) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
106 r.sendBuffer(collect, flags); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
107 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
108 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
109 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
110 function chain(chunks, i) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
111 if (i < chunks.length) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
112 chunks.r.send(chunks[i++]); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
113 setTimeout(chunks.chain, chunks.delay, chunks, i); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
114 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
115 } else { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
116 chunks.r.finish(); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
117 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
118 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
119 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
120 function source(r) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
121 var chunks = ['AAA', 'BB', 'C', 'DDDD']; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
122 chunks.delay = 5; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
123 chunks.r = r; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
124 chunks.chain = chain; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
125 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
126 r.status = 200; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
127 r.sendHeader(); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
128 chain(chunks, 0); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
129 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
130 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
131 function filter(r, data, flags) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
132 if (flags.last || data.length >= Number(r.args.len)) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
133 r.sendBuffer(`\${data}|`, flags); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
134 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
135 if (r.args.dup && !flags.last) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
136 r.sendBuffer(data, flags); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
137 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
138 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
139 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
140 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
141 function forward(r, data, flags) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
142 r.sendBuffer(data, flags); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
143 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
144 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
145 function prepend(r, data, flags) { |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
146 r.sendBuffer("XXX"); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
147 r.sendBuffer(data, flags); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
148 r.done(); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
149 } |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
150 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
151 export default {njs: test_njs, append, buffer_type, filter, forward, |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
152 prepend, source}; |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
153 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
154 EOF |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
155 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
156 $t->try_run('no njs body filter')->plan(6); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
157 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
158 ############################################################################### |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
159 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
160 like(http_get('/append'), qr/AAABBCDDDDXXX/, 'append'); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
161 like(http_get('/buffer_type'), qr/AAABBCDDDD/, 'buffer type'); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
162 like(http_get('/forward'), qr/AAABBCDDDD/, 'forward'); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
163 like(http_get('/filter?len=3'), qr/AAA|DDDD|/, 'filter 3'); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
164 like(http_get('/filter?len=2&dup=1'), qr/AAA|AAABB|BBDDDD|DDDD/, |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
165 'filter 2 dup'); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
166 like(http_get('/prepend'), qr/XXXAAABBCDDDD/, 'prepend'); |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
167 |
759efa4abc76
Tests: added tests for js_body_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
168 ############################################################################### |