blob: b7c1308cf01ed9a5c9f44735da60dcbfaa6c41c5 [file] [log] [blame] [raw]
# 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