stream_response_epoll: our most "special" concurrency option yet
[rainbows.git] / t / t0011-close-on-exec-set.sh
blob9c6657590a125913e98156701c30392314b35f07
1 #!/bin/sh
2 nr=${nr-"5"}
3 . ./test-lib.sh
4 skip_models StreamResponseEpoll
6 t_plan 7 "ensure close-on-exec flag is set for $model"
8 t_begin "setup and start" && {
9 rainbows_setup $model 1 1
10 nr=$nr rainbows -E none -D fork-sleep.ru -c $unicorn_config
11 rainbows_wait_start
14 t_begin "send keepalive req expect it to timeout in ~1s" && {
15 req='GET / HTTP/1.1\r\nHost: example.com\r\n\r\n'
16 t0=$(date +%s)
18 cat $fifo > $tmp &
19 printf "$req"
20 wait
21 date +%s > $ok
22 ) | socat - TCP:$listen > $fifo
23 now="$(cat $ok)"
24 elapsed=$(( $now - $t0 ))
25 t_info "elapsed=$elapsed (expecting >=1s)"
26 test $elapsed -ge 1
29 t_begin 'sleep process is still running' && {
30 sleep_pid="$(tail -1 $tmp)"
31 kill -0 $sleep_pid
34 t_begin 'keepalive not unreasonably long' && {
35 test $elapsed -lt $nr
38 t_begin "killing succeeds" && {
39 kill $rainbows_pid
42 t_begin "check stderr" && {
43 t_info "about to start waiting $nr seconds..."
44 sleep $nr
45 check_stderr
48 t_begin 'sleep process is NOT running' && {
49 if kill -0 $sleep_pid
50 then
51 die "sleep process should've died"
55 t_done