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