Use the package name to infer module location. This will make it easier to script our maintaining tasks.
228 lines
3.3 KiB
Perl
228 lines
3.3 KiB
Perl
# 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
|
|
|