annotate js_subrequests.t @ 1411:a8243ed8adcb

Tests: expect ssl_sni_reneg.t failures on stable in certain cases. Notably, if built with OpenSSL 1.1.1 on Linux, SSL renegotiation could be handled too late if client manages to keep recv buffer filled on server.
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 05 Dec 2018 17:10:01 +0300
parents f168fc46c7a4
children 9d8b100a6ce3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2 #
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev.
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
1375
f168fc46c7a4 Tests: renamed JavaScript to njs.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1359
diff changeset
6 # Tests for subrequests in http njs module.
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15 use Socket qw/ CRLF /;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19 use lib 'lib';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22 ###############################################################################
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24 select STDERR; $| = 1;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25 select STDOUT; $| = 1;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27 eval { require JSON::PP; };
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28 plan(skip_all => "JSON::PP not installed") if $@;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30 my $t = Test::Nginx->new()->has(qw/http rewrite proxy cache/)
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31 ->write_file_expand('nginx.conf', <<'EOF');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33 %%TEST_GLOBALS%%
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35 daemon off;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37 events {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40 http {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
41 %%TEST_GLOBALS_HTTP%%
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43 proxy_cache_path %%TESTDIR%%/cache1
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44 keys_zone=ON:1m use_temp_path=on;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46 js_include test.js;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48 js_set $async_var async_var;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50 server {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 listen 127.0.0.1:8080;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52 server_name localhost;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53
1359
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
54 location /njs {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
55 js_content test_njs;
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
56 }
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
57
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58 location /sr {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59 js_content sr;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
60 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
61
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
62 location /sr_args {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63 js_content sr_args;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
66 location /sr_options_args {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67 js_content sr_options_args;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70 location /sr_options_method {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71 js_content sr_options_method;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
73
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74 location /sr_options_body {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75 js_content sr_options_body;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78 location /sr_options_method_head {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79 js_content sr_options_method_head;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 location /sr_body {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83 js_content sr_body;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
84 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
85
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
86 location /sr_body_special {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87 js_content sr_body_special;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90 location /sr_background {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
91 js_content sr_background;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
92 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
93
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
94 location /sr_in_variable_handler {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
95 set $_ $async_var;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
96 js_content sr_in_variable_handler;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
97 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
98
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
99 location /sr_error_page {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
100 set $_ $async_var;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
101 error_page 404 /return;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
102 return 404;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
103 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
104
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
105 location /sr_js_in_subrequest {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
106 js_content sr_js_in_subrequest;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
107 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
108
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
109 location /sr_file {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
110 js_content sr_file;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
111 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
112
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
113 location /sr_cache {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
114 js_content sr_cache;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
115 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
116
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
117
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
118 location /sr_unavail {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
119 js_content sr_unavail;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
120 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
121
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
122 location /sr_broken {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
123 js_content sr_broken;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
124 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
125
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
126 location /sr_too_large {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
127 js_content sr_too_large;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
128 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
129
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
130 location /sr_out_of_order {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
131 js_content sr_out_of_order;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
132 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
133
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
134 location /sr_except_not_a_func {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
135 js_content sr_except_not_a_func;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
136 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
137
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
138 location /sr_except_failed_to_convert_arg {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
139 js_content sr_except_failed_to_convert_arg;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
140 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
141
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
142 location /sr_except_failed_to_convert_options_arg {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
143 js_content sr_except_failed_to_convert_options_arg;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
144 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
145
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
146 location /sr_except_invalid_options_method {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
147 js_content sr_except_invalid_options_method;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
148 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
149
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
150 location /sr_except_invalid_options_header_only {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
151 js_content sr_except_invalid_options_header_only;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
152 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
153
1359
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
154 location /sr_js_in_sr_parent {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
155 js_content sr_js_in_sr_parent;
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
156 }
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
157
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
158 location /sr_in_sr_callback {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
159 js_content sr_in_sr_callback;
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
160 }
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
161
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
162 location /sr_uri_except {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
163 js_content sr_uri_except;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
164 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
165
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
166
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
167 location /file/ {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
168 alias %%TESTDIR%%/;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
169 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
170
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
171 location /p/ {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
172 proxy_cache $arg_c;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
173 proxy_pass http://127.0.0.1:8081/;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
174 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
175
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
176 location /daemon/ {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
177 proxy_pass http://127.0.0.1:8082/;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
178 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
179
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
180 location /too_large/ {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
181 subrequest_output_buffer_size 3;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
182 proxy_pass http://127.0.0.1:8081/;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
183 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
184
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
185 location /sr_in_sr {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
186 js_content sr_in_sr;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
187 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
188
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
189 location /unavail {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
190 proxy_pass http://127.0.0.1:8084/;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
191 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
192
1359
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
193 location /sr_parent {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
194 js_content sr_parent;
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
195 }
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
196
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
197 location /js_sub {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
198 js_content js_sub;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
199 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
200
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
201 location /return {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
202 return 200 '["$request_method"]';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
203 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
204 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
205
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
206 server {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
207 listen 127.0.0.1:8081;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
208 server_name localhost;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
209
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
210 location /sub1 {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
211 add_header H $arg_h;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
212 return 206 '{"a": {"b": 1}}';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
213 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
214
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
215 location /sub2 {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
216 return 404 '{"e": "msg"}';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
217 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
218
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
219 location /method {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
220 return 200 '["$request_method"]';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
221 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
222
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
223 location /body {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
224 js_content body;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
225 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
226
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
227 location /background {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
228 js_content background;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
229 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
230
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
231 location /delayed {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
232 js_content delayed;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
233 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
234 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
235
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
236 server {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
237 listen 127.0.0.1:8084;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
238 server_name localhost;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
239
1337
bab9dd2654c3 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1305
diff changeset
240 return 444;
bab9dd2654c3 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1305
diff changeset
241 }
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
242 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
243
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
244 EOF
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
245
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
246 $t->write_file('test.js', <<EOF);
1359
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
247 function test_njs(r) {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
248 r.return(200, njs.version);
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
249 }
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
250
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
251 function sr(req) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
252 subrequest_fn(req, ['/p/sub2'], ['uri', 'status'])
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
253 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
254
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
255 function sr_args(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
256 req.subrequest('/p/sub1', 'h=xxx', function(reply) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
257 res.status = 200;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
258 res.sendHeader();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
259 res.send(JSON.stringify({h:reply.headers.h}))
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
260 res.finish();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
261 });
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
262 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
263
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
264 function sr_options_args(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
265 req.subrequest('/p/sub1', {args:'h=xxx'}, function(reply) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
266 res.status = 200;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
267 res.sendHeader();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
268 res.send(JSON.stringify({h:reply.headers.h}))
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
269 res.finish();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
270 });
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
271 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
272
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
273 function sr_options_method(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
274 req.subrequest('/p/method', {method:'POST'}, body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
275 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
276
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
277 function sr_options_body(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
278 req.subrequest('/p/body', {method:'POST', body:'["REQ-BODY"]'},
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
279 body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
280 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
281
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
282 function sr_options_method_head(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
283 req.subrequest('/p/method', {method:'HEAD'}, function(reply) {
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
284 res.status = 200;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
285 res.sendHeader();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
286 res.send(JSON.stringify({c:reply.status, s:reply.body.length}))
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
287 res.finish();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
288 });
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
289 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
290
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
291 function sr_body(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
292 req.subrequest('/p/sub1', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
293 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
294
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
295 function sr_body_special(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
296 req.subrequest('/p/sub2', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
297 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
298
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
299 function sr_background(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
300 req.subrequest('/p/background');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
301 req.subrequest('/p/background', 'a=xxx');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
302 req.subrequest('/p/background', {args: 'a=yyy', method:'POST'});
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
303
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
304 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
305 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
306 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
307 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
308
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
309 function body(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
310 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
311 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
312 res.send(req.variables.request_body);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
313 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
314 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
315
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
316 function delayed(req) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
317 setTimeout(function(res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
318 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
319 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
320 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
321 }, 100, req.response);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
322 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
323
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
324 function background(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
325 req.log("BACKGROUND: " + req.variables.request_method
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
326 + " args: " + req.variables.args);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
327
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
328 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
329 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
330 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
331 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
332
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
333 function sr_in_variable_handler(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
334 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
335
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
336 function async_var(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
337 req.subrequest('/p/delayed', function(reply) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
338 res.status = 200;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
339 res.sendHeader();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
340 res.send(JSON.stringify(["CB-VAR"]))
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
341 res.finish();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
342 })
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
343
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
344 return "";
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
345 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
346
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
347 function sr_file(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
348 req.subrequest('/file/t', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
349 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
350
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
351 function sr_cache(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
352 req.subrequest('/p/t', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
353 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
354
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
355 function sr_unavail(req) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
356 subrequest_fn(req, ['/unavail'], ['uri', 'status']);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
357 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
358
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
359 function sr_broken(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
360 req.subrequest('/daemon/unfinished',
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
361 function(reply) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
362 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
363 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
364 res.send(JSON.stringify({code:reply.status}))
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
365 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
366 });
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
367 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
368
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
369 function sr_too_large(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
370 req.subrequest('/too_large/t', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
371 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
372
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
373 function sr_in_sr(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
374 req.subrequest('/sr', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
375 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
376
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
377 function sr_js_in_subrequest(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
378 req.subrequest('/js_sub', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
379 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
380
1359
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
381 function sr_js_in_sr_parent(r) {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
382 r.subrequest('/sr_parent', body_fwd_cb);
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
383 }
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
384
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
385 function sr_in_sr_callback(r) {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
386 r.subrequest('/return', function (reply) {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
387 try {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
388 reply.subrequest('/return');
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
389
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
390 } catch (err) {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
391 r.return(200, JSON.stringify({e:err.message}));
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
392 return;
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
393 }
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
394
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
395 r.return(200);
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
396 });
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
397 }
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
398
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
399 function sr_parent(r) {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
400 try {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
401 var parent = r.parent;
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
402
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
403 } catch (err) {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
404 r.return(200, JSON.stringify({e:err.message}));
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
405 return;
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
406 }
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
407
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
408 r.return(200);
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
409 }
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
410
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
411 function sr_out_of_order(req) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
412 subrequest_fn(req, ['/p/delayed', '/p/sub1', '/unknown'],
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
413 ['uri', 'status']);
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
414 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
415
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
416 function subrequest_fn(req, subs, props) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
417 var r, replies = [];
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
418
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
419 subs.forEach(function(sr) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
420 req.subrequest(sr, function(reply) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
421 req.log("subrequest handler: " + reply.uri
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
422 + " status: " + reply.status)
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
423
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
424 r = {};
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
425 props.forEach(function (p) {r[p] = reply[p]});
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
426
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
427 replies.push(r);
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
428
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
429 if (replies.length == subs.length) {
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
430 var res = req.response;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
431 res.status = 200;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
432 res.sendHeader();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
433 res.send(JSON.stringify(replies));
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
434 res.finish();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
435 }
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
436 });
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
437 });
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
438 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
439
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
440 function sr_except_not_a_func(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
441 req.subrequest('/sub1', 'a=1', 'b');
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
442 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
443
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
444 function sr_except_failed_to_convert_arg(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
445 req.subrequest('/sub1', req.args, function(){});
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
446 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
447
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
448 function sr_except_failed_to_convert_options_arg(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
449 req.subrequest('/sub1', {args:req.args}, function(){});
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
450 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
451
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
452 function sr_except_invalid_options_method(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
453 req.subrequest('/sub1', {method:'UNKNOWN_METHOD'}, function(){});
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
454 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
455
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
456 function sr_uri_except(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
457 req.subrequest(req, 'a=1', 'b');
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
458 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
459
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
460 function body_fwd_cb(reply) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
461 var res = reply.parent.response;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
462 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
463 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
464 res.send(JSON.stringify(JSON.parse(reply.body)));
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
465 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
466 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
467
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
468 function js_sub(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
469 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
470 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
471 res.send('["JS-SUB"]');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
472 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
473 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
474
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
475 EOF
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
476
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
477 $t->write_file('t', '["SEE-THIS"]');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
478
1359
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
479 $t->try_run('no njs available')->plan(25);
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
480 $t->run_daemon(\&http_daemon);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
481
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
482 ###############################################################################
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
483
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
484 is(get_json('/sr'), '[{"status":404,"uri":"/p/sub2"}]', 'sr');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
485 is(get_json('/sr_args'), '{"h":"xxx"}', 'sr_args');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
486 is(get_json('/sr_options_args'), '{"h":"xxx"}', 'sr_options_args');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
487 is(get_json('/sr_options_method'), '["POST"]', 'sr_options_method');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
488 is(get_json('/sr_options_body'), '["REQ-BODY"]', 'sr_options_body');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
489 is(get_json('/sr_options_method_head'), '{"c":200,"s":0}',
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
490 'sr_options_method_head');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
491 is(get_json('/sr_body'), '{"a":{"b":1}}', 'sr_body');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
492 is(get_json('/sr_body_special'), '{"e":"msg"}', 'sr_body_special');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
493 is(get_json('/sr_in_variable_handler'), '["CB-VAR"]', 'sr_in_variable_handler');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
494 is(get_json('/sr_file'), '["SEE-THIS"]', 'sr_file');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
495 is(get_json('/sr_cache?c=1'), '["SEE-THIS"]', 'sr_cache');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
496 is(get_json('/sr_cache?c=1'), '["SEE-THIS"]', 'sr_cached');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
497 is(get_json('/sr_js_in_subrequest'), '["JS-SUB"]', 'sr_js_in_subrequest');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
498 is(get_json('/sr_unavail'), '[{"status":502,"uri":"/unavail"}]',
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
499 'sr_unavail');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
500 is(get_json('/sr_out_of_order'),
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
501 '[{"status":404,"uri":"/unknown"},' .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
502 '{"status":206,"uri":"/p/sub1"},' .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
503 '{"status":200,"uri":"/p/delayed"}]',
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
504 'sr_multi');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
505
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
506 http_get('/sr_background');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
507
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
508 http_get('/sr_broken');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
509 http_get('/sr_in_sr');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
510 http_get('/sr_in_variable_handler');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
511 http_get('/sr_error_page');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
512 http_get('/sr_too_large');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
513 http_get('/sr_except_not_a_func');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
514 http_get('/sr_except_failed_to_convert_arg');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
515 http_get('/sr_except_failed_to_convert_options_arg');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
516 http_get('/sr_except_invalid_options_method');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
517 http_get('/sr_uri_except');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
518
1359
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
519 TODO: {
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
520 local $TODO = 'not yet'
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
521 unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.2.4';
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
522
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
523 is(get_json('/sr_js_in_sr_parent'),
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
524 '{"e":"parent can only be returned for a subrequest"}',
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
525 'parent in subrequest js_content');
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
526
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
527 todo_skip 'leaves coredump', 1
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
528 unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.2.4';
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
529
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
530 is(get_json('/sr_in_sr_callback'),
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
531 '{"e":"subrequest can only be created for the primary request"}',
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
532 'subrequest for non-primary request');
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
533
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
534 }
28ba4b465635 Tests: more njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1339
diff changeset
535
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
536 $t->stop();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
537
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
538 ok(index($t->read_file('error.log'), 'callback is not a function') > 0,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
539 'subrequest cb exception');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
540 ok(index($t->read_file('error.log'), 'failed to convert uri arg') > 0,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
541 'subrequest uri exception');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
542 ok(index($t->read_file('error.log'), 'failed to convert args') > 0,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
543 'subrequest invalid args exception');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
544 ok(index($t->read_file('error.log'), 'unknown method "UNKNOWN_METHOD"') > 0,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
545 'subrequest unknown method exception');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
546 ok(index($t->read_file('error.log'), 'BACKGROUND') > 0,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
547 'background subrequest');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
548 ok(index($t->read_file('error.log'), 'too big subrequest response') > 0,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
549 'subrequest too large body');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
550 ok(index($t->read_file('error.log'), 'subrequest creation failed') > 0,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
551 'subrequest creation failed');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
552 ok(index($t->read_file('error.log'),
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
553 'js subrequest: failed to get the parent context') > 0,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
554 'zero parent ctx');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
555
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
556 ###############################################################################
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
557
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
558 sub recode {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
559 my $json;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
560 eval { $json = JSON::PP::decode_json(shift) };
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
561
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
562 if ($@) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
563 return "<failed to parse JSON>";
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
564 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
565
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
566 JSON::PP->new()->canonical()->encode($json);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
567 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
568
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
569 sub get_json {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
570 http_get(shift) =~ /\x0d\x0a?\x0d\x0a?(.*)/ms;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
571 recode($1);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
572 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
573
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
574 ###############################################################################
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
575
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
576 sub http_daemon {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
577 my $server = IO::Socket::INET->new(
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
578 Proto => 'tcp',
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
579 LocalAddr => '127.0.0.1:' . port(8082),
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
580 Listen => 5,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
581 Reuse => 1
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
582 )
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
583 or die "Can't create listening socket: $!\n";
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
584
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
585 local $SIG{PIPE} = 'IGNORE';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
586
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
587 while (my $client = $server->accept()) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
588 $client->autoflush(1);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
589
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
590 my $headers = '';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
591 my $uri = '';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
592
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
593 while (<$client>) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
594 $headers .= $_;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
595 last if (/^\x0d?\x0a?$/);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
596 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
597
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
598 $uri = $1 if $headers =~ /^\S+\s+([^ ]+)\s+HTTP/i;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
599
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
600 if ($uri eq '/unfinished') {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
601 print $client
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
602 "HTTP/1.1 200 OK" . CRLF .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
603 "Transfer-Encoding: chunked" . CRLF .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
604 "Content-Length: 100" . CRLF .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
605 CRLF .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
606 "unfinished" . CRLF;
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
607 close($client);
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
608 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
609 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
610 }
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
611
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
612 ###############################################################################