annotate stream_js.t @ 1248:70192b1baf01

Tests: added exception test to stream_js.t using 'require'. The stream js tests introduced in edf5a3c9e36a fail on njs 0.1.14. It doesn't currently provide an easy way to check its version, whilst we are obligated to gracefully handle such cases somehow. With such an addition of 'require', now the tests are skipped instead on the previous versions.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 21 Nov 2017 13:16:39 +0300
parents edf5a3c9e36a
children 3882f8f3b2bc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
2
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
3 # (C) Andrey Zelenkov
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
5
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
6 # Tests for stream JavaScript module.
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
7
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
8 ###############################################################################
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
9
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
10 use warnings;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
11 use strict;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
12
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
13 use Test::More;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
14
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
16
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
17 use lib 'lib';
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
1005
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
19 use Test::Nginx::Stream qw/ dgram stream /;
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
20
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
21 ###############################################################################
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
22
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
25
1005
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
26 my $t = Test::Nginx->new()->has(qw/stream stream_return udp/)
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
27 ->write_file_expand('nginx.conf', <<'EOF');
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
28
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
30
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
31 daemon off;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
32
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
33 events {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
34 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
35
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
36 stream {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
37 js_set $js_addr js_addr;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
38 js_set $js_var js_var;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
39 js_set $js_log js_log;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
40 js_set $js_unk js_unk;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
41 js_set $js_sess_unk js_sess_unk;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
42
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
43 js_include functions.js;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
44
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
45 server {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
46 listen 127.0.0.1:8080;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
47 return $js_addr;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
48 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
49
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
50 server {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
51 listen 127.0.0.1:8081;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
52 return $js_log;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
53 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
54
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
55 server {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
56 listen 127.0.0.1:8082;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
57 return $js_var;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
58 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
59
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
60 server {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
61 listen 127.0.0.1:8083;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
62 return $js_unk;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
63 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
64
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
65 server {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
66 listen 127.0.0.1:8084;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
67 return $js_sess_unk;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
68 }
1005
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
69
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
70 server {
1237
e4974af3fb12 Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1005
diff changeset
71 listen 127.0.0.1:%%PORT_8985_UDP%% udp;
1005
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
72 return $js_addr;
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
73 }
1239
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
74
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
75 server {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
76 listen 127.0.0.1:8086;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
77 js_access js_access_allow;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
78 return 'OK';
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
79 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
80
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
81 server {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
82 listen 127.0.0.1:8087;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
83 js_access js_access_deny;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
84 return 'OK';
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
85 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
86
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
87 server {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
88 listen 127.0.0.1:8088;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
89 js_preread js_preread;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
90 proxy_pass 127.0.0.1:8090;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
91 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
92
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
93 server {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
94 listen 127.0.0.1:8089;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
95 js_filter js_filter;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
96 proxy_pass 127.0.0.1:8090;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
97 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
98
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
99 server {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
100 listen 127.0.0.1:8091;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
101 js_access js_access_step;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
102 js_preread js_preread_step;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
103 js_filter js_filter_step;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
104 proxy_pass 127.0.0.1:8090;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
105 }
1247
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
106
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
107 server {
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
108 listen 127.0.0.1:8092;
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
109 js_filter js_filter_except;
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
110 proxy_pass 127.0.0.1:8090;
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
111 }
1248
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
112
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
113 server {
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
114 listen 127.0.0.1:8093;
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
115 js_preread js_preread_except;
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
116 proxy_pass 127.0.0.1:8090;
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
117 }
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
118 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
119
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
120 EOF
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
121
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
122 $t->write_file('functions.js', <<EOF);
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
123 function js_addr(sess) {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
124 return 'addr=' + sess.remoteAddress;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
125 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
126
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
127 function js_var(sess) {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
128 return 'variable=' + sess.variables.remote_addr;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
129 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
130
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
131 function js_sess_unk(sess) {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
132 return 'sess_unk=' + sess.unk;
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
133 }
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
134
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
135 function js_log(sess) {
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
136 sess.log("SEE-THIS");
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
137 }
1239
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
138
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
139 function js_access_allow(sess) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
140 if (sess.remoteAddress.match('127.0.0.1')) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
141 return sess.OK;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
142 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
143 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
144
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
145 function js_access_deny(sess) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
146 if (sess.remoteAddress.match('127.0.0.1')) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
147 return sess.ABORT;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
148 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
149 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
150
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
151 function js_preread(sess) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
152 var n = sess.buffer.indexOf('z');
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
153 if (n == -1) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
154 return sess.AGAIN;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
155 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
156 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
157
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
158 function js_filter(sess) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
159 if (sess.fromUpstream) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
160 var n = sess.buffer.search('y');
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
161 if (n != -1) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
162 sess.buffer = 'z';
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
163 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
164 return;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
165 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
166
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
167 n = sess.buffer.search('x');
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
168 if (n != -1) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
169 sess.buffer = 'y';
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
170 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
171 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
172
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
173 var res = '';
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
174 function js_access_step(sess) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
175 res += '1';
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
176 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
177
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
178 function js_preread_step(sess) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
179 res += '2';
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
180 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
181
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
182 function js_filter_step(sess) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
183 if (sess.eof) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
184 sess.buffer = res;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
185 return;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
186 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
187 res += '3';
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
188 }
1247
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
189
1248
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
190 function js_preread_except(sess) {
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
191 var fs = require('fs');
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
192 fs.readFileSync();
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
193 }
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
194
1247
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
195 function js_filter_except(sess) {
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
196 sess.a.a;
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
197 }
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
198
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
199 EOF
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
200
1239
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
201 $t->run_daemon(\&stream_daemon, port(8090));
1248
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
202 $t->try_run('no stream njs available')->plan(14);
1239
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
203 $t->waitforsocket('127.0.0.1:' . port(8090));
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
204
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
205 ###############################################################################
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
206
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
207 is(stream('127.0.0.1:' . port(8080))->read(), 'addr=127.0.0.1',
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
208 'sess.remoteAddress');
1237
e4974af3fb12 Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1005
diff changeset
209 is(dgram('127.0.0.1:' . port(8985))->io('.'), 'addr=127.0.0.1',
1005
557faa1782e5 Tests: stream JavaScript test with udp.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1003
diff changeset
210 'sess.remoteAddress udp');
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
211 is(stream('127.0.0.1:' . port(8081))->read(), 'undefined', 'sess.log');
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
212 is(stream('127.0.0.1:' . port(8082))->read(), 'variable=127.0.0.1',
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
213 'sess.variables');
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
214 is(stream('127.0.0.1:' . port(8083))->read(), '', 'stream js unknown function');
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
215 is(stream('127.0.0.1:' . port(8084))->read(), 'sess_unk=undefined', 'sess.unk');
1239
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
216 is(stream('127.0.0.1:' . port(8086))->read(), 'OK', 'js_access allow');
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
217 is(stream('127.0.0.1:' . port(8087))->read(), '', 'js_access deny');
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
218 is(stream('127.0.0.1:' . port(8088))->io('xyz'), 'xyz', 'js_preread');
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
219 is(stream('127.0.0.1:' . port(8089))->io('x'), 'z', 'js_filter');
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
220 is(stream('127.0.0.1:' . port(8091))->io('0'), '01233', 'handlers order');
1247
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
221 stream('127.0.0.1:' . port(8092))->io('x');
1248
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
222 stream('127.0.0.1:' . port(8093))->io('x');
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
223
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
224 $t->stop();
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
225
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
226 ok(index($t->read_file('error.log'), 'SEE-THIS') > 0, 'stream js log');
1248
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
227 ok(index($t->read_file('error.log'), 'at fs.readFileSync') > 0,
70192b1baf01 Tests: added exception test to stream_js.t using 'require'.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1247
diff changeset
228 'stream js_preread backtrace');
1247
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
229 ok(index($t->read_file('error.log'), 'at js_filter_except') > 0,
edf5a3c9e36a Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1239
diff changeset
230 'stream js_filter backtrace');
1003
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
231
a86034bcbe82 Tests: stream JavaScript tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
232 ###############################################################################
1239
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
233
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
234 sub stream_daemon {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
235 my $server = IO::Socket::INET->new(
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
236 Proto => 'tcp',
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
237 LocalAddr => '127.0.0.1:' . port(8090),
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
238 Listen => 5,
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
239 Reuse => 1
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
240 )
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
241 or die "Can't create listening socket: $!\n";
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
242
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
243 local $SIG{PIPE} = 'IGNORE';
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
244
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
245 while (my $client = $server->accept()) {
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
246 $client->autoflush(1);
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
247
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
248 log2c("(new connection $client)");
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
249
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
250 $client->sysread(my $buffer, 65536) or next;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
251
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
252 log2i("$client $buffer");
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
253
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
254 log2o("$client $buffer");
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
255
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
256 $client->syswrite($buffer);
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
257
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
258 close $client;
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
259 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
260 }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
261
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
262 sub log2i { Test::Nginx::log_core('|| <<', @_); }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
263 sub log2o { Test::Nginx::log_core('|| >>', @_); }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
264 sub log2c { Test::Nginx::log_core('||', @_); }
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
265
4a825ec85c8d Tests: added tests for js_access, js_preread, and js_filter.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1237
diff changeset
266 ###############################################################################