Mercurial > hg > nginx-tests
annotate stream_js_fetch.t @ 1847:a9704b9ed7a2
Tests: removed multiple server certificates from ssl_ocsp.t.
Multiple server certificates are not needed to test OCSP verification of
client certificates (in contrast to OCSP stapling, where server certificates
are verified, and different staples should be correctly returned with
different server certificates). And using multiple server certificates
causes issues when testing with LibreSSL due to broken sigalgs-based
server certificate selection in LibreSSL with TLSv1.3.
Accordingly, the test is simplified to do not use multiple server
certificates.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 23 Mar 2023 19:50:26 +0300 |
parents | f98884ad7700 |
children |
rev | line source |
---|---|
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
2 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
3 # (C) Dmitry Volyntsev |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
5 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
6 # Tests for stream njs module, fetch method. |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
7 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
9 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
11 use strict; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
12 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
14 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
16 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
19 use Test::Nginx::Stream qw/ stream /; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
20 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
22 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
25 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http stream/) |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
27 ->write_file_expand('nginx.conf', <<'EOF'); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
28 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
30 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
31 daemon off; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
32 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
33 events { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
34 } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
35 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
36 http { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_HTTP%% |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
38 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
39 js_import test.js; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
40 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
41 server { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
42 listen 127.0.0.1:8080; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
43 server_name localhost; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
44 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
45 location /njs { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
46 js_content test.njs; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
47 } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
48 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
49 location /validate { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
50 js_content test.validate; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
51 } |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
52 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
53 location /success { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
54 return 200; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
55 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
56 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
57 location /fail { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
58 return 403; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
59 } |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
60 } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
61 } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
62 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
63 stream { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
64 %%TEST_GLOBALS_STREAM%% |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
65 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
66 js_import test.js; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
67 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
68 server { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
69 listen 127.0.0.1:8081; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
70 js_preread test.preread_verify; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
71 proxy_pass 127.0.0.1:8090; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
72 } |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
73 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
74 server { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
75 listen 127.0.0.1:8082; |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
76 js_filter test.filter_verify; |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
77 proxy_pass 127.0.0.1:8091; |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
78 } |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
79 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
80 server { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
81 listen 127.0.0.1:8083; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
82 js_access test.access_ok; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
83 proxy_pass 127.0.0.1:8090; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
84 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
85 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
86 server { |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
87 listen 127.0.0.1:8084; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
88 js_access test.access_nok; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
89 proxy_pass 127.0.0.1:8090; |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
90 } |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
91 } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
92 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
93 EOF |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
94 |
1641
6b6a496ac984
Tests: fixed stream_js_fetch.t with parallel tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1640
diff
changeset
|
95 my $p = port(8080); |
6b6a496ac984
Tests: fixed stream_js_fetch.t with parallel tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1640
diff
changeset
|
96 |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
97 $t->write_file('test.js', <<EOF); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
98 function test_njs(r) { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
99 r.return(200, njs.version); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
100 } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
101 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
102 function validate(r) { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
103 r.return((r.requestText == 'QZ') ? 200 : 403); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
104 } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
105 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
106 function preread_verify(s) { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
107 var collect = Buffer.from([]); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
108 |
1784
898598722ad4
Tests: improved stream fetch test with async callbacks.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1641
diff
changeset
|
109 s.on('upstream', async function (data, flags) { |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
110 collect = Buffer.concat([collect, data]); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
111 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
112 if (collect.length >= 4 && collect.readUInt16BE(0) == 0xabcd) { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
113 s.off('upstream'); |
1784
898598722ad4
Tests: improved stream fetch test with async callbacks.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1641
diff
changeset
|
114 |
898598722ad4
Tests: improved stream fetch test with async callbacks.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1641
diff
changeset
|
115 let reply = await ngx.fetch('http://127.0.0.1:$p/validate', |
1812
f98884ad7700
Test: avoiding forbidden Host header in js fetch tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1811
diff
changeset
|
116 {body: collect.slice(2,4)}); |
1784
898598722ad4
Tests: improved stream fetch test with async callbacks.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1641
diff
changeset
|
117 |
898598722ad4
Tests: improved stream fetch test with async callbacks.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1641
diff
changeset
|
118 (reply.status == 200) ? s.done(): s.deny(); |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
119 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
120 } else if (collect.length) { |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
121 s.deny(); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
122 } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
123 }); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
124 } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
125 |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
126 function filter_verify(s) { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
127 var collect = Buffer.from([]); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
128 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
129 s.on('upstream', async function (data, flags) { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
130 collect = Buffer.concat([collect, data]); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
131 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
132 if (collect.length >= 4 && collect.readUInt16BE(0) == 0xabcd) { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
133 s.off('upstream'); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
134 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
135 let reply = await ngx.fetch('http://127.0.0.1:$p/validate', |
1812
f98884ad7700
Test: avoiding forbidden Host header in js fetch tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1811
diff
changeset
|
136 {body: collect.slice(2,4)}); |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
137 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
138 if (reply.status == 200) { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
139 s.send(collect.slice(4), flags); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
140 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
141 } else { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
142 s.send("__CLOSE__", flags); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
143 } |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
144 } |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
145 }); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
146 } |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
147 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
148 async function access_ok(s) { |
1812
f98884ad7700
Test: avoiding forbidden Host header in js fetch tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1811
diff
changeset
|
149 let reply = await ngx.fetch('http://127.0.0.1:$p/success'); |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
150 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
151 (reply.status == 200) ? s.allow(): s.deny(); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
152 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
153 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
154 async function access_nok(s) { |
1812
f98884ad7700
Test: avoiding forbidden Host header in js fetch tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1811
diff
changeset
|
155 let reply = await ngx.fetch('http://127.0.0.1:$p/fail'); |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
156 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
157 (reply.status == 200) ? s.allow(): s.deny(); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
158 } |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
159 |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
160 export default {njs: test_njs, validate, preread_verify, filter_verify, |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
161 access_ok, access_nok}; |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
162 EOF |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
163 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
164 $t->try_run('no stream njs available')->plan(9); |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
165 |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
166 $t->run_daemon(\&stream_daemon, port(8090), port(8091)); |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
167 $t->waitforsocket('127.0.0.1:' . port(8090)); |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
168 $t->waitforsocket('127.0.0.1:' . port(8091)); |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
169 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
170 ############################################################################### |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
171 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
172 is(stream('127.0.0.1:' . port(8081))->io('###'), '', 'preread not enough'); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
173 is(stream('127.0.0.1:' . port(8081))->io("\xAB\xCDQZ##"), "\xAB\xCDQZ##", |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
174 'preread validated'); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
175 is(stream('127.0.0.1:' . port(8081))->io("\xAC\xCDQZ##"), '', |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
176 'preread invalid magic'); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
177 is(stream('127.0.0.1:' . port(8081))->io("\xAB\xCDQQ##"), '', |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
178 'preread validation failed'); |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
179 |
1786
cadf15e2e2b3
Tests: adjusted stream_js_fetch.t TODO for njs 0.7.6 and older.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1785
diff
changeset
|
180 TODO: { |
cadf15e2e2b3
Tests: adjusted stream_js_fetch.t TODO for njs 0.7.6 and older.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1785
diff
changeset
|
181 todo_skip 'leaves coredump', 3 unless $ENV{TEST_NGINX_UNSAFE} |
1811
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
182 or has_version('0.7.7'); |
1786
cadf15e2e2b3
Tests: adjusted stream_js_fetch.t TODO for njs 0.7.6 and older.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1785
diff
changeset
|
183 |
cadf15e2e2b3
Tests: adjusted stream_js_fetch.t TODO for njs 0.7.6 and older.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1785
diff
changeset
|
184 my $s = stream('127.0.0.1:' . port(8082)); |
cadf15e2e2b3
Tests: adjusted stream_js_fetch.t TODO for njs 0.7.6 and older.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1785
diff
changeset
|
185 is($s->io("\xAB\xCDQZ##", read => 1), '##', 'filter validated'); |
cadf15e2e2b3
Tests: adjusted stream_js_fetch.t TODO for njs 0.7.6 and older.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1785
diff
changeset
|
186 is($s->io("@@", read => 1), '@@', 'filter off'); |
cadf15e2e2b3
Tests: adjusted stream_js_fetch.t TODO for njs 0.7.6 and older.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1785
diff
changeset
|
187 |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
188 is(stream('127.0.0.1:' . port(8082))->io("\xAB\xCDQQ##"), '', |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
189 'filter validation failed'); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
190 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
191 } |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
192 |
1806
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
193 is(stream('127.0.0.1:' . port(8083))->io('ABC'), 'ABC', 'access fetch ok'); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
194 is(stream('127.0.0.1:' . port(8084))->io('ABC'), '', 'access fetch nok'); |
564f74bf6e4d
Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1786
diff
changeset
|
195 |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
196 ############################################################################### |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
197 |
1811
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
198 sub has_version { |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
199 my $need = shift; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
200 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
201 http_get('/njs') =~ /^([.0-9]+)$/m; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
202 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
203 my @v = split(/\./, $1); |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
204 my ($n, $v); |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
205 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
206 for $n (split(/\./, $need)) { |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
207 $v = shift @v || 0; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
208 return 0 if $n > $v; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
209 return 1 if $v > $n; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
210 } |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
211 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
212 return 1; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
213 } |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
214 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
215 ############################################################################### |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1810
diff
changeset
|
216 |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
217 sub stream_daemon { |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
218 my (@ports) = @_; |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
219 my (@socks, @clients); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
220 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
221 for my $port (@ports) { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
222 my $server = IO::Socket::INET->new( |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
223 Proto => 'tcp', |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
224 LocalAddr => "127.0.0.1:$port", |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
225 Listen => 5, |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
226 Reuse => 1 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
227 ) |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
228 or die "Can't create listening socket: $!\n"; |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
229 push @socks, $server; |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
230 } |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
231 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
232 my $sel = IO::Select->new(@socks); |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
233 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
234 local $SIG{PIPE} = 'IGNORE'; |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
235 |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
236 while (my @ready = $sel->can_read) { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
237 foreach my $fh (@ready) { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
238 if (grep $_ == $fh, @socks) { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
239 my $new = $fh->accept; |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
240 $new->autoflush(1); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
241 $sel->add($new); |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
242 |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
243 } elsif (stream_handle_client($fh) |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
244 || $fh->sockport() == port(8090)) |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
245 { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
246 $sel->remove($fh); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
247 $fh->close; |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
248 } |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
249 } |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
250 } |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
251 } |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
252 |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
253 sub stream_handle_client { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
254 my ($client) = @_; |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
255 |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
256 log2c("(new connection $client)"); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
257 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
258 $client->sysread(my $buffer, 65536) or return 1; |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
259 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
260 log2i("$client $buffer"); |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
261 |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
262 if ($buffer eq "__CLOSE__") { |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
263 return 1; |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
264 } |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
265 |
1785
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
266 log2o("$client $buffer"); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
267 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
268 $client->syswrite($buffer); |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
269 |
2c08bfffe112
Tests: added stream js test for s.send() in async context.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1784
diff
changeset
|
270 return 0; |
1640
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
271 } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
272 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
273 sub log2i { Test::Nginx::log_core('|| <<', @_); } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
274 sub log2o { Test::Nginx::log_core('|| >>', @_); } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
275 sub log2c { Test::Nginx::log_core('||', @_); } |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
276 |
67adc5fd0548
Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
277 ############################################################################### |