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