Mercurial > hg > nginx-tests
annotate js_buffer.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 | 456bf219d768 |
children | f89770df737a |
rev | line source |
---|---|
1625
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
2 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
3 # (C) Dmitry Volyntsev |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
5 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
6 # Tests for http njs module, buffer properties. |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
7 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
9 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
11 use strict; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
12 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
14 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
15 use Socket qw/ CRLF /; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
16 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
17 BEGIN { use FindBin; chdir($FindBin::Bin); } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
18 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
19 use lib 'lib'; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
20 use Test::Nginx; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
21 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
22 ############################################################################### |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
23 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
24 select STDERR; $| = 1; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
25 select STDOUT; $| = 1; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
26 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
27 eval { require JSON::PP; }; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
28 plan(skip_all => "JSON::PP not installed") if $@; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
29 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
30 my $t = Test::Nginx->new()->has(qw/http rewrite proxy/) |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
31 ->write_file_expand('nginx.conf', <<'EOF'); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
32 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
33 %%TEST_GLOBALS%% |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
34 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
35 daemon off; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
36 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
37 events { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
38 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
39 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
40 http { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
41 %%TEST_GLOBALS_HTTP%% |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
42 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
43 js_import test.js; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
44 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
45 server { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
46 listen 127.0.0.1:8080; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
47 server_name localhost; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
48 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
49 location /njs { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
50 js_content test.njs; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
51 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
52 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
53 location /return { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
54 js_content test.return; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
55 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
56 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
57 location /req_body { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
58 js_content test.req_body; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
59 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
60 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
61 location /res_body { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
62 js_content test.res_body; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
63 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
64 |
1627
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
65 location /res_text { |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
66 js_content test.res_text; |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
67 } |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
68 |
1625
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
69 location /binary_var { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
70 js_content test.binary_var; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
71 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
72 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
73 location /p/ { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
74 proxy_pass http://127.0.0.1:8081/; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
75 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
76 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
77 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
78 server { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
79 listen 127.0.0.1:8081; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
80 server_name localhost; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
81 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
82 location /sub1 { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
83 return 200 '{"a": {"b": 1}}'; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
84 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
85 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
86 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
87 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
88 EOF |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
89 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
90 $t->write_file('test.js', <<EOF); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
91 function test_njs(r) { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
92 r.return(200, njs.version); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
93 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
94 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
95 function test_return(r) { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
96 var body = Buffer.from("body: "); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
97 body = Buffer.concat([body, Buffer.from(r.args.text)]); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
98 r.return(200, body); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
99 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
100 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
101 function req_body(r) { |
1627
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
102 var body = r.requestBuffer; |
1625
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
103 var view = new DataView(body.buffer); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
104 view.setInt8(2, 'c'.charCodeAt(0)); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
105 r.return(200, JSON.parse(body).c.b); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
106 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
107 |
1627
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
108 function type(v) {return Buffer.isBuffer(v) ? 'buffer' : (typeof v);} |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
109 |
1625
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
110 function res_body(r) { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
111 r.subrequest('/p/sub1') |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
112 .then(reply => { |
1627
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
113 var body = reply.responseBuffer; |
1625
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
114 var view = new DataView(body.buffer); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
115 view.setInt8(2, 'c'.charCodeAt(0)); |
1627
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
116 body = JSON.parse(body); |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
117 body.type = type(reply.responseBuffer); |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
118 r.return(200, JSON.stringify(body)); |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
119 }) |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
120 } |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
121 |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
122 function res_text(r) { |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
123 r.subrequest('/p/sub1') |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
124 .then(reply => { |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
125 var body = JSON.parse(reply.responseText); |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
126 body.type = type(reply.responseText); |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
127 r.return(200, JSON.stringify(body)); |
1625
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
128 }) |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
129 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
130 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
131 function binary_var(r) { |
1626
a35445ae8de7
Tests: adapted js buffer tests to renaming vars to rawVariables.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1625
diff
changeset
|
132 var test = r.rawVariables.binary_remote_addr |
a35445ae8de7
Tests: adapted js buffer tests to renaming vars to rawVariables.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1625
diff
changeset
|
133 .equals(Buffer.from([127,0,0,1])); |
1625
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
134 r.return(200, test); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
135 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
136 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
137 export default {njs: test_njs, return: test_return, req_body, res_body, |
1627
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
138 res_text, binary_var}; |
1625
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
139 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
140 EOF |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
141 |
1627
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
142 $t->try_run('no njs buffer')->plan(5); |
1625
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
143 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
144 ############################################################################### |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
145 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
146 TODO: { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
147 local $TODO = 'not yet' |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
148 unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.5.0'; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
149 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
150 like(http_get('/return?text=FOO'), qr/200 OK.*body: FOO$/s, |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
151 'return buffer'); |
1627
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
152 like(http_post('/req_body'), qr/200 OK.*BAR$/s, 'request buffer'); |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
153 is(get_json('/res_body'), '{"c":{"b":1},"type":"buffer"}', 'response buffer'); |
456bf219d768
Tests: adapted js buffer tests to renaming body properties.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1626
diff
changeset
|
154 is(get_json('/res_text'), '{"a":{"b":1},"type":"string"}', 'response text'); |
1625
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
155 like(http_get('/binary_var'), qr/200 OK.*true$/s, |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
156 'binary var'); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
157 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
158 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
159 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
160 ############################################################################### |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
161 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
162 sub recode { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
163 my $json; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
164 eval { $json = JSON::PP::decode_json(shift) }; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
165 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
166 if ($@) { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
167 return "<failed to parse JSON>"; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
168 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
169 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
170 JSON::PP->new()->canonical()->encode($json); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
171 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
172 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
173 sub get_json { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
174 http_get(shift) =~ /\x0d\x0a?\x0d\x0a?(.*)/ms; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
175 recode($1); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
176 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
177 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
178 sub http_post { |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
179 my ($url, %extra) = @_; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
180 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
181 my $p = "POST $url HTTP/1.0" . CRLF . |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
182 "Host: localhost" . CRLF . |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
183 "Content-Length: 17" . CRLF . |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
184 CRLF . |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
185 "{\"a\":{\"b\":\"BAR\"}}"; |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
186 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
187 return http($p, %extra); |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
188 } |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
189 |
a140cab489e8
Tests: added js buffer tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
190 ############################################################################### |