annotate js_subrequests.t @ 1328:a682c219af45

Tests: updated ssl_engine_keys.t test. After merge with libp11, pkcs11 engine shared object was renamed from "engine_pkcs11.so" to "pkcs11.so". Changed configuration accordingly. Additionally, changed "init" to "1" in the engine configuration. This keeps pkcs11 engine loaded and prevents segmentation faults observed during nginx shutdown. While here, restored correct order of ssl_certificate and ssl_certificate_key.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 22 May 2018 17:46:59 +0300
parents 8e593b068fc0
children bab9dd2654c3
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
224 return 444;
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
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) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
238 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
239 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
240 res.send(JSON.stringify({h:reply.headers.h}))
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
241 res.finish();
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
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) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
247 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
248 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
249 res.send(JSON.stringify({h:reply.headers.h}))
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
250 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
251 });
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) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
264 req.subrequest('/p/method', {method:'HEAD'}, function(reply){
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
265 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
266 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
267 res.send(JSON.stringify({c:reply.status, s:reply.body.length}))
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
268 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
269 });
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) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
319 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
320 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
321 res.send(JSON.stringify(["CB-VAR"]))
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
322 res.finish();
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
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
325 return "";
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'],
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
364 ['uri', 'status'])
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) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
372 req.log("subrequest handler: " + reply.uri
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
373 + " status: " + reply.status)
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
374
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
375 r = {};
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
376 props.forEach(function (p) {r[p] = reply[p]});
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
377
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
378 replies.push(r);
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 if (replies.length == subs.length) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
381 var res = req.response;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
382 res.status = 200;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
383 res.sendHeader();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
384 res.send(JSON.stringify(replies));
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
385 res.finish();
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
386 }
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
387 });
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
388 })
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) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
392 req.subrequest('/sub1', 'a=1', 'b')
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) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
396 req.subrequest('/sub1', req.args, function(){})
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) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
400 req.subrequest('/sub1', {args:req.args}, function(){})
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) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
404 req.subrequest('/sub1', {method:'UNKNOWN_METHOD'}, function(){})
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) {
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
408 req.subrequest(req, 'a=1', 'b')
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;
8e593b068fc0 Tests: added njs subrequest tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
541 close($client);
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 }