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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ###############################################################################