# vi:filetype= | |
use lib 'lib'; | |
use Test::Nginx::Socket; | |
repeat_each(2); | |
plan tests => repeat_each() * (2 * blocks() + 1); | |
#$Test::Nginx::LWP::LogLevel = 'debug'; | |
run_tests(); | |
__DATA__ | |
=== TEST 1: exec normal location | |
--- config | |
location /main { | |
echo_exec /bar; | |
echo end; | |
} | |
location = /bar { | |
echo "$echo_request_uri:"; | |
echo bar; | |
} | |
--- request | |
GET /main | |
--- response_body | |
/bar: | |
bar | |
=== TEST 2: location with args (inlined in uri) | |
--- config | |
location /main { | |
echo_exec /bar?a=32; | |
echo end; | |
} | |
location /bar { | |
echo "a: [$arg_a]"; | |
} | |
--- request | |
GET /main | |
--- response_body | |
a: [32] | |
=== TEST 3: location with args (in separate arg) | |
--- config | |
location /main { | |
echo_exec /bar a=56; | |
echo end; | |
} | |
location /bar { | |
echo "a: [$arg_a]"; | |
} | |
--- request | |
GET /main | |
--- response_body | |
a: [56] | |
=== TEST 4: exec named location | |
--- config | |
location /main { | |
echo_exec @bar; | |
echo end; | |
} | |
location @bar { | |
echo bar; | |
} | |
--- request | |
GET /main | |
--- response_body | |
bar | |
=== TEST 5: query string ignored for named locations | |
--- config | |
location /main { | |
echo_exec @bar?a=32; | |
echo end; | |
} | |
location @bar { | |
echo "a: [$arg_a]"; | |
} | |
--- request | |
GET /main | |
--- response_body | |
a: [] | |
--- error_log | |
querystring a=32 ignored when exec'ing named location @bar | |
=== TEST 6: query string ignored for named locations | |
--- config | |
location /foo { | |
echo_exec @bar; | |
} | |
location @bar { | |
echo "uri: [$echo_request_uri]"; | |
} | |
--- request | |
GET /foo | |
--- response_body | |
uri: [/foo] | |
=== TEST 7: exec(named location) in subrequests | |
--- config | |
location /entry { | |
echo_location /foo; | |
echo_sleep 0.001; | |
echo_location /foo2; | |
} | |
location /foo { | |
echo_exec @bar; | |
} | |
location /foo2 { | |
echo_exec @bar; | |
} | |
location @bar { | |
proxy_pass http://127.0.0.1:$server_port/bar; | |
} | |
location /bar { | |
echo_sleep 0.01; | |
echo hello; | |
} | |
--- request | |
GET /entry | |
--- response_body | |
hello | |
hello | |
=== TEST 8: exec(normal loctions) in subrequests | |
--- config | |
location /entry { | |
echo_location /foo; | |
echo_sleep 0.001; | |
echo_location /foo2; | |
} | |
location /foo { | |
echo_exec /baz; | |
} | |
location /foo2 { | |
echo_exec /baz; | |
} | |
location /baz { | |
proxy_pass http://127.0.0.1:$server_port/bar; | |
} | |
location /bar { | |
echo_sleep 0.01; | |
echo hello; | |
} | |
--- request | |
GET /entry | |
--- response_body | |
hello | |
hello | |
=== TEST 9: exec should clear ctx | |
--- config | |
location @bar { | |
echo hello; | |
echo world; | |
echo heh; | |
} | |
location /foo { | |
#echo_sleep 0.001; | |
echo_reset_timer; | |
echo_exec @bar; | |
} | |
--- request | |
GET /foo | |
--- response_body | |
hello | |
world | |
heh | |
=== TEST 10: reset ctx | |
--- config | |
location @proxy { | |
rewrite_by_lua return; | |
echo hello; | |
} | |
location /main { | |
rewrite_by_lua return; | |
echo_exec @proxy; | |
} | |
--- request | |
GET /main | |
--- response_body | |
hello | |
=== TEST 11: yield before exec | |
--- config | |
location @bar { | |
echo hello; | |
echo world; | |
echo heh; | |
} | |
location /foo { | |
echo_sleep 0.001; | |
echo_exec @bar; | |
} | |
--- request | |
GET /foo | |
--- response_body | |
hello | |
world | |
heh | |