1# vi:filetype= 2 3use lib 'lib'; 4use Test::Nginx::Socket; 5 6plan tests => 2 * blocks(); 7 8run_tests(); 9 10__DATA__ 11 12=== TEST 1: sanity 13--- config 14 location /echo { 15 echo_sleep 1; 16 } 17--- request 18 GET /echo 19--- response_body 20 21 22 23=== TEST 2: fractional delay 24--- config 25 location /echo { 26 echo_sleep 0.01; 27 } 28--- request 29 GET /echo 30--- response_body 31 32 33 34=== TEST 3: leading echo 35--- config 36 location /echo { 37 echo before...; 38 echo_sleep 0.01; 39 } 40--- request 41 GET /echo 42--- response_body 43before... 44 45 46 47=== TEST 4: trailing echo 48--- config 49 location /echo { 50 echo_sleep 0.01; 51 echo after...; 52 } 53--- request 54 GET /echo 55--- response_body 56after... 57 58 59 60=== TEST 5: two echos around sleep 61--- config 62 location /echo { 63 echo before...; 64 echo_sleep 0.01; 65 echo after...; 66 } 67--- request 68 GET /echo 69--- response_body 70before... 71after... 72 73 74 75=== TEST 6: interleaving sleep and echo 76--- config 77 location /echo { 78 echo 1; 79 echo_sleep 0.01; 80 echo 2; 81 echo_sleep 0.01; 82 } 83--- request 84 GET /echo 85--- response_body 861 872 88 89 90 91=== TEST 7: interleaving sleep and echo with echo at the end... 92--- config 93 location /echo { 94 echo 1; 95 echo_sleep 0.01; 96 echo 2; 97 echo_sleep 0.01; 98 echo 3; 99 } 100--- request 101 GET /echo 102--- response_body 1031 1042 1053 106 107 108 109=== TEST 8: flush before sleep 110we didn't really test the actual effect of "echo_flush" here... 111merely checks if it croaks if appears. 112--- config 113 location /flush { 114 echo hi; 115 echo_flush; 116 echo_sleep 0.01; 117 echo trees; 118 } 119--- request 120 GET /flush 121--- response_body 122hi 123trees 124 125 126 127=== TEST 9: flush does not increment opcode pointer itself 128--- config 129 location /flush { 130 echo hi; 131 echo_flush; 132 echo trees; 133 } 134--- request 135 GET /flush 136--- response_body 137hi 138trees 139 140 141 142=== TEST 10: sleep through a proxy 143this reveals a bug in v0.19 and the bug is fixed in v0.20. 144--- config 145 location /proxy { 146 proxy_pass $scheme://127.0.0.1:$server_port/entry'; 147 } 148 location /entry { 149 echo_sleep 0.001; 150 echo done; 151 } 152--- request 153 GET /proxy 154--- response_body_like 155done 156 157 158 159=== TEST 11: abnormally quit 160--- config 161 location /quit { 162 echo before; 163 echo_flush; 164 echo_sleep 1; 165 echo after; 166 } 167--- request 168 GET /quit 169--- response_body 170before 171after 172 173 174 175=== TEST 12: two echos around sleep (HEAD) 176--- config 177 location /echo { 178 echo before...; 179 echo_sleep 0.01; 180 echo after...; 181 } 182--- request 183 HEAD /echo 184--- response_body 185 186 187 188=== TEST 13: sleep by variable 189--- config 190 location ~ ^/sleep/(.+) { 191 echo before...; 192 echo_sleep $1; 193 echo after...; 194 } 195--- request 196 GET /sleep/0.01 197--- response_body 198before... 199after... 200 201