annotate js_subrequests.t @ 1338:adb306c10169

Tests: style.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 07 Jun 2018 22:11:47 +0300
parents bab9dd2654c3
children c582fa4c4a95
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
6 # Tests for subrequests in http JavaScript module.
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54 location /sr {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55 js_content sr;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
57
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58 location /sr_args {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59 js_content sr_args;
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_options_args {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63 js_content sr_options_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_method {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67 js_content sr_options_method;
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_body {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71 js_content sr_options_body;
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_method_head {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75 js_content sr_options_method_head;
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_body {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79 js_content sr_body;
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_special {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83 js_content sr_body_special;
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_background {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87 js_content sr_background;
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_in_variable_handler {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
91 set $_ $async_var;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
92 js_content sr_in_variable_handler;
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
95 location /sr_error_page {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
96 set $_ $async_var;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
97 error_page 404 /return;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
98 return 404;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
99 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
100
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
101 location /sr_js_in_subrequest {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
102 js_content sr_js_in_subrequest;
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_file {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
106 js_content sr_file;
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_cache {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
110 js_content sr_cache;
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
114 location /sr_unavail {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
115 js_content sr_unavail;
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_broken {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
119 js_content sr_broken;
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_too_large {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
123 js_content sr_too_large;
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_out_of_order {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
127 js_content sr_out_of_order;
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_except_not_a_func {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
131 js_content sr_except_not_a_func;
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_failed_to_convert_arg {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
135 js_content sr_except_failed_to_convert_arg;
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_options_arg {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
139 js_content sr_except_failed_to_convert_options_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_invalid_options_method {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
143 js_content sr_except_invalid_options_method;
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_header_only {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
147 js_content sr_except_invalid_options_header_only;
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_uri_except {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
151 js_content sr_uri_except;
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
154
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
155 location /file/ {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
156 alias %%TESTDIR%%/;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
157 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
158
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
159 location /p/ {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
160 proxy_cache $arg_c;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
161 proxy_pass http://127.0.0.1:8081/;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
162 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
163
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
164 location /daemon/ {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
165 proxy_pass http://127.0.0.1:8082/;
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
168 location /too_large/ {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
169 subrequest_output_buffer_size 3;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
170 proxy_pass http://127.0.0.1:8081/;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
171 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
172
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
173 location /sr_in_sr {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
174 js_content sr_in_sr;
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
177 location /unavail {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
178 proxy_pass http://127.0.0.1:8084/;
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
181 location /js_sub {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
182 js_content js_sub;
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 /return {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
186 return 200 '["$request_method"]';
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
190 server {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
191 listen 127.0.0.1:8081;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
192 server_name localhost;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
193
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
194 location /sub1 {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
195 add_header H $arg_h;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
196 return 206 '{"a": {"b": 1}}';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
197 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
198
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
199 location /sub2 {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
200 return 404 '{"e": "msg"}';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
201 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
202
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
203 location /method {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
204 return 200 '["$request_method"]';
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
207 location /body {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
208 js_content body;
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
211 location /background {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
212 js_content background;
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 /delayed {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
216 js_content delayed;
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
220 server {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
221 listen 127.0.0.1:8084;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
222 server_name localhost;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
223
1337
bab9dd2654c3 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1305
diff changeset
224 return 444;
bab9dd2654c3 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1305
diff changeset
225 }
1305
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
228 EOF
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 $t->write_file('test.js', <<EOF);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
231
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
232 function sr(req) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
233 subrequest_fn(req, ['/p/sub2'], ['uri', 'status'])
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 function sr_args(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
237 req.subrequest('/p/sub1', 'h=xxx', function(reply) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
238 res.status = 200;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
239 res.sendHeader();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
240 res.send(JSON.stringify({h:reply.headers.h}))
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
241 res.finish();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
242 });
1305
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
245 function sr_options_args(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
246 req.subrequest('/p/sub1', {args:'h=xxx'}, function(reply) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
247 res.status = 200;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
248 res.sendHeader();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
249 res.send(JSON.stringify({h:reply.headers.h}))
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
250 res.finish();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
251 });
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
252 }
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 function sr_options_method(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
255 req.subrequest('/p/method', {method:'POST'}, body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
256 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
257
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
258 function sr_options_body(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
259 req.subrequest('/p/body', {method:'POST', body:'["REQ-BODY"]'},
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
260 body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
261 }
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 function sr_options_method_head(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
264 req.subrequest('/p/method', {method:'HEAD'}, function(reply) {
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
265 res.status = 200;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
266 res.sendHeader();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
267 res.send(JSON.stringify({c:reply.status, s:reply.body.length}))
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
268 res.finish();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
269 });
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
270 }
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 function sr_body(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
273 req.subrequest('/p/sub1', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
274 }
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 function sr_body_special(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
277 req.subrequest('/p/sub2', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
278 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
279
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
280 function sr_background(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
281 req.subrequest('/p/background');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
282 req.subrequest('/p/background', 'a=xxx');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
283 req.subrequest('/p/background', {args: 'a=yyy', method:'POST'});
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
284
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
285 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
286 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
287 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
288 }
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 function body(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
291 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
292 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
293 res.send(req.variables.request_body);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
294 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
295 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
296
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
297 function delayed(req) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
298 setTimeout(function(res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
299 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
300 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
301 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
302 }, 100, req.response);
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
305 function background(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
306 req.log("BACKGROUND: " + req.variables.request_method
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
307 + " args: " + req.variables.args);
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 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
310 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
311 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
312 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
313
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
314 function sr_in_variable_handler(req, res) {
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
317 function async_var(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
318 req.subrequest('/p/delayed', function(reply) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
319 res.status = 200;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
320 res.sendHeader();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
321 res.send(JSON.stringify(["CB-VAR"]))
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
322 res.finish();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
323 })
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
324
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
325 return "";
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
326 }
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 function sr_file(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
329 req.subrequest('/file/t', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
330 }
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 function sr_cache(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
333 req.subrequest('/p/t', body_fwd_cb);
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 sr_unavail(req) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
337 subrequest_fn(req, ['/unavail'], ['uri', 'status']);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
338 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
339
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
340 function sr_broken(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
341 req.subrequest('/daemon/unfinished',
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
342 function(reply) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
343 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
344 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
345 res.send(JSON.stringify({code:reply.status}))
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
346 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
347 });
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
348 }
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 function sr_too_large(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
351 req.subrequest('/too_large/t', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
352 }
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 function sr_in_sr(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
355 req.subrequest('/sr', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
356 }
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 function sr_js_in_subrequest(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
359 req.subrequest('/js_sub', body_fwd_cb);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
360 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
361
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
362 function sr_out_of_order(req) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
363 subrequest_fn(req, ['/p/delayed', '/p/sub1', '/unknown'],
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
364 ['uri', 'status']);
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
365 }
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 function subrequest_fn(req, subs, props) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
368 var r, replies = [];
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
369
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
370 subs.forEach(function(sr) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
371 req.subrequest(sr, function(reply) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
372 req.log("subrequest handler: " + reply.uri
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
373 + " status: " + reply.status)
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
374
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
375 r = {};
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
376 props.forEach(function (p) {r[p] = reply[p]});
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
377
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
378 replies.push(r);
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
379
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
380 if (replies.length == subs.length) {
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
381 var res = req.response;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
382 res.status = 200;
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
383 res.sendHeader();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
384 res.send(JSON.stringify(replies));
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
385 res.finish();
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
386 }
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
387 });
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
388 });
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
389 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
390
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
391 function sr_except_not_a_func(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
392 req.subrequest('/sub1', 'a=1', 'b');
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
393 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
394
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
395 function sr_except_failed_to_convert_arg(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
396 req.subrequest('/sub1', req.args, function(){});
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
397 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
398
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
399 function sr_except_failed_to_convert_options_arg(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
400 req.subrequest('/sub1', {args:req.args}, function(){});
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
401 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
402
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
403 function sr_except_invalid_options_method(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
404 req.subrequest('/sub1', {method:'UNKNOWN_METHOD'}, function(){});
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
405 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
406
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
407 function sr_uri_except(req, res) {
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
408 req.subrequest(req, 'a=1', 'b');
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
409 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
410
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
411 function body_fwd_cb(reply) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
412 var res = reply.parent.response;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
413 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
414 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
415 res.send(JSON.stringify(JSON.parse(reply.body)));
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
416 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
417 }
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 function js_sub(req, res) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
420 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
421 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
422 res.send('["JS-SUB"]');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
423 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
424 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
425
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
426 EOF
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
427
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
428 $t->write_file('t', '["SEE-THIS"]');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
429
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
430 $t->run_daemon(\&http_daemon);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
431 $t->try_run('no njs available')->plan(23);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
432
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
433 ###############################################################################
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
434
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
435 is(get_json('/sr'), '[{"status":404,"uri":"/p/sub2"}]', 'sr');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
436 is(get_json('/sr_args'), '{"h":"xxx"}', 'sr_args');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
437 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
438 is(get_json('/sr_options_method'), '["POST"]', 'sr_options_method');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
439 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
440 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
441 'sr_options_method_head');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
442 is(get_json('/sr_body'), '{"a":{"b":1}}', 'sr_body');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
443 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
444 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
445 is(get_json('/sr_file'), '["SEE-THIS"]', 'sr_file');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
446 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
447 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
448 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
449 is(get_json('/sr_unavail'), '[{"status":502,"uri":"/unavail"}]',
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
450 'sr_unavail');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
451 is(get_json('/sr_out_of_order'),
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
452 '[{"status":404,"uri":"/unknown"},' .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
453 '{"status":206,"uri":"/p/sub1"},' .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
454 '{"status":200,"uri":"/p/delayed"}]',
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
455 'sr_multi');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
456
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
457 http_get('/sr_background');
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 http_get('/sr_broken');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
460 http_get('/sr_in_sr');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
461 http_get('/sr_in_variable_handler');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
462 http_get('/sr_error_page');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
463 http_get('/sr_too_large');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
464 http_get('/sr_except_not_a_func');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
465 http_get('/sr_except_failed_to_convert_arg');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
466 http_get('/sr_except_failed_to_convert_options_arg');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
467 http_get('/sr_except_invalid_options_method');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
468 http_get('/sr_uri_except');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
469
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
470 $t->stop();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
471
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
472 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
473 'subrequest cb exception');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
474 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
475 'subrequest uri exception');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
476 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
477 'subrequest invalid args exception');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
478 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
479 'subrequest unknown method exception');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
480 ok(index($t->read_file('error.log'), 'BACKGROUND') > 0,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
481 'background subrequest');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
482 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
483 'subrequest too large body');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
484 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
485 'subrequest creation failed');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
486 ok(index($t->read_file('error.log'),
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
487 'js subrequest: failed to get the parent context') > 0,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
488 'zero parent ctx');
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
489
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
490 ###############################################################################
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
491
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
492 sub recode {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
493 my $json;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
494 eval { $json = JSON::PP::decode_json(shift) };
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
495
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
496 if ($@) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
497 return "<failed to parse JSON>";
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
498 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
499
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
500 JSON::PP->new()->canonical()->encode($json);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
501 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
502
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
503 sub get_json {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
504 http_get(shift) =~ /\x0d\x0a?\x0d\x0a?(.*)/ms;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
505 recode($1);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
506 }
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 ###############################################################################
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
509
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
510 sub http_daemon {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
511 my $server = IO::Socket::INET->new(
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
512 Proto => 'tcp',
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
513 LocalAddr => '127.0.0.1:' . port(8082),
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
514 Listen => 5,
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
515 Reuse => 1
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
516 )
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
517 or die "Can't create listening socket: $!\n";
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
518
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
519 local $SIG{PIPE} = 'IGNORE';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
520
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
521 while (my $client = $server->accept()) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
522 $client->autoflush(1);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
523
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
524 my $headers = '';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
525 my $uri = '';
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
526
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
527 while (<$client>) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
528 $headers .= $_;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
529 last if (/^\x0d?\x0a?$/);
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
530 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
531
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
532 $uri = $1 if $headers =~ /^\S+\s+([^ ]+)\s+HTTP/i;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
533
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
534 if ($uri eq '/unfinished') {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
535 print $client
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
536 "HTTP/1.1 200 OK" . CRLF .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
537 "Transfer-Encoding: chunked" . CRLF .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
538 "Content-Length: 100" . CRLF .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
539 CRLF .
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
540 "unfinished" . CRLF;
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
541 close($client);
1305
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
542 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
543 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
544 }
1338
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
545
adb306c10169 Tests: style.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1337
diff changeset
546 ###############################################################################