1# vi:filetype= 2 3use lib 'lib'; 4use Test::Nginx::Socket; 5 6repeat_each(2); 7 8plan tests => repeat_each() * (2 * blocks() + 1); 9 10#$Test::Nginx::LWP::LogLevel = 'debug'; 11 12run_tests(); 13 14__DATA__ 15 16=== TEST 1: exec normal location 17--- config 18 location /main { 19 echo_exec /bar; 20 echo end; 21 } 22 location = /bar { 23 echo "$echo_request_uri:"; 24 echo bar; 25 } 26--- request 27 GET /main 28--- response_body 29/bar: 30bar 31 32 33 34=== TEST 2: location with args (inlined in uri) 35--- config 36 location /main { 37 echo_exec /bar?a=32; 38 echo end; 39 } 40 location /bar { 41 echo "a: [$arg_a]"; 42 } 43--- request 44 GET /main 45--- response_body 46a: [32] 47 48 49 50=== TEST 3: location with args (in separate arg) 51--- config 52 location /main { 53 echo_exec /bar a=56; 54 echo end; 55 } 56 location /bar { 57 echo "a: [$arg_a]"; 58 } 59--- request 60 GET /main 61--- response_body 62a: [56] 63 64 65 66=== TEST 4: exec named location 67--- config 68 location /main { 69 echo_exec @bar; 70 echo end; 71 } 72 location @bar { 73 echo bar; 74 } 75--- request 76 GET /main 77--- response_body 78bar 79 80 81 82=== TEST 5: query string ignored for named locations 83--- config 84 location /main { 85 echo_exec @bar?a=32; 86 echo end; 87 } 88 location @bar { 89 echo "a: [$arg_a]"; 90 } 91--- request 92 GET /main 93--- response_body 94a: [] 95--- error_log 96querystring a=32 ignored when exec'ing named location @bar 97 98 99 100=== TEST 6: query string ignored for named locations 101--- config 102 location /foo { 103 echo_exec @bar; 104 } 105 location @bar { 106 echo "uri: [$echo_request_uri]"; 107 } 108--- request 109 GET /foo 110--- response_body 111uri: [/foo] 112 113 114 115=== TEST 7: exec(named location) in subrequests 116--- config 117 location /entry { 118 echo_location /foo; 119 echo_sleep 0.001; 120 echo_location /foo2; 121 } 122 location /foo { 123 echo_exec @bar; 124 } 125 location /foo2 { 126 echo_exec @bar; 127 } 128 129 location @bar { 130 proxy_pass http://127.0.0.1:$server_port/bar; 131 } 132 location /bar { 133 echo_sleep 0.01; 134 echo hello; 135 } 136--- request 137 GET /entry 138--- response_body 139hello 140hello 141 142 143 144=== TEST 8: exec(normal loctions) in subrequests 145--- config 146 location /entry { 147 echo_location /foo; 148 echo_sleep 0.001; 149 echo_location /foo2; 150 } 151 location /foo { 152 echo_exec /baz; 153 } 154 location /foo2 { 155 echo_exec /baz; 156 } 157 158 location /baz { 159 proxy_pass http://127.0.0.1:$server_port/bar; 160 } 161 location /bar { 162 echo_sleep 0.01; 163 echo hello; 164 } 165--- request 166 GET /entry 167--- response_body 168hello 169hello 170 171 172 173=== TEST 9: exec should clear ctx 174--- config 175 location @bar { 176 echo hello; 177 echo world; 178 echo heh; 179 } 180 location /foo { 181 #echo_sleep 0.001; 182 echo_reset_timer; 183 echo_exec @bar; 184 } 185--- request 186 GET /foo 187--- response_body 188hello 189world 190heh 191 192 193 194=== TEST 10: reset ctx 195--- config 196 location @proxy { 197 rewrite_by_lua return; 198 echo hello; 199 } 200 location /main { 201 rewrite_by_lua return; 202 echo_exec @proxy; 203 } 204--- request 205 GET /main 206--- response_body 207hello 208 209 210 211=== TEST 11: yield before exec 212--- config 213 location @bar { 214 echo hello; 215 echo world; 216 echo heh; 217 } 218 location /foo { 219 echo_sleep 0.001; 220 echo_exec @bar; 221 } 222--- request 223 GET /foo 224--- response_body 225hello 226world 227heh 228 229