# 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