Rainbows! 0.90.1
[rainbows.git] / t / t0200-async-response.sh
blobf3ead0baf3172f28a1847347e7bf686ba249c361
1 #!/bin/sh
2 CONFIG_RU=${CONFIG_RU-'async-response.ru'}
3 . ./test-lib.sh
5 case $CONFIG_RU in
6 *no-autochunk.ru)
7 t_plan 7 "async response w/o autochunk for $model"
8 skip_autochunk=true
9 ;;
11 t_plan 6 "async response for $model"
12 skip_autochunk=false
14 esac
16 t_begin "setup and start" && {
17 rainbows_setup
18 rtmpfiles a b c curl_err
19 # can't load Rack::Lint here since it'll cause Rev to slurp
20 rainbows -E none -D $CONFIG_RU -c $unicorn_config
21 rainbows_wait_start
24 t_begin "send async requests off in parallel" && {
25 t0=$(date +%s)
26 ( curl --no-buffer -sSf http://$listen/ 2>> $curl_err | utee $a) &
27 ( curl --no-buffer -sSf http://$listen/ 2>> $curl_err | utee $b) &
28 ( curl --no-buffer -sSf http://$listen/ 2>> $curl_err | utee $c) &
29 wait
30 t1=$(date +%s)
33 t_begin "ensure elapsed requests were processed in parallel" && {
34 elapsed=$(( $t1 - $t0 ))
35 echo "elapsed=$elapsed < 30"
36 test $elapsed -lt 30
39 t_begin "termination signal sent" && {
40 kill $rainbows_pid
43 dbgcat a
44 dbgcat b
45 dbgcat c
46 dbgcat r_err
47 dbgcat curl_err
49 t_begin "no errors from curl" && {
50 test ! -s $curl_err
53 t_begin "no errors in stderr" && check_stderr
55 dbgcat r_err
57 if $skip_autochunk
58 then
59 t_begin "no responses are chunked" && {
60 test x"$(cat $a)" = x0123456789
61 test x"$(cat $b)" = x0123456789
62 test x"$(cat $c)" = x0123456789
66 t_done