stream_response_epoll: our most "special" concurrency option yet
[rainbows.git] / t / t0009-broken-app.sh
blobefa9ea1b582ef2e73a398c9b2409ee4b268b0e20
1 #!/bin/sh
2 . ./test-lib.sh
3 skip_models StreamResponseEpoll
5 t_plan 9 "graceful handling of broken apps for $model"
7 t_begin "setup and start" && {
8 rainbows_setup $model 1
9 rainbows -E none -D t0009.ru -c $unicorn_config
10 rainbows_wait_start
13 t_begin "normal response is alright" && {
14 test xOK = x"$(curl -sSf http://$listen/)"
17 t_begin "app raised exception" && {
18 curl -sSf http://$listen/raise 2> $tmp || :
19 grep -F 500 $tmp
20 > $tmp
23 t_begin "app exception logged and backtrace not swallowed" && {
24 grep -F 'app error' $r_err
25 grep -A1 -F 'app error' $r_err | tail -1 | grep t0009.ru:
26 dbgcat r_err
27 > $r_err
30 t_begin "trigger bad response" && {
31 curl -sSf http://$listen/nil 2> $tmp || :
32 grep -F 500 $tmp
33 > $tmp
36 t_begin "app exception logged" && {
37 grep -F 'app error' $r_err
38 > $r_err
41 t_begin "normal responses alright afterwards" && {
42 > $tmp
43 curl -sSf http://$listen/ >> $tmp &
44 curl -sSf http://$listen/ >> $tmp &
45 curl -sSf http://$listen/ >> $tmp &
46 curl -sSf http://$listen/ >> $tmp &
47 wait
48 test xOK = x$(sort < $tmp | uniq)
51 t_begin "teardown" && {
52 kill $rainbows_pid
55 t_begin "check stderr" && check_stderr
57 t_done