about summary refs log tree commit homepage
path: root/t/lib-graceful.sh
diff options
context:
space:
mode:
Diffstat (limited to 't/lib-graceful.sh')
-rw-r--r--t/lib-graceful.sh47
1 files changed, 47 insertions, 0 deletions
diff --git a/t/lib-graceful.sh b/t/lib-graceful.sh
new file mode 100644
index 0000000..d2a6be8
--- /dev/null
+++ b/t/lib-graceful.sh
@@ -0,0 +1,47 @@
+model=$1
+. ./test-lib.sh
+echo "graceful test for model=$model"
+case $model in
+Rev) require_rev ;;
+Revactor) require_revactor ;;
+esac
+
+eval $(unused_listen)
+rtmpfiles unicorn_config curl_out pid r_err r_out fifo
+rm -f $fifo
+mkfifo $fifo
+
+cat > $unicorn_config <<EOF
+listen "$listen"
+stderr_path "$r_err"
+stdout_path "$r_out"
+pid "$pid"
+Rainbows! { use :$model }
+EOF
+
+rainbows -D sleep.ru -c $unicorn_config
+wait_for_pid $pid
+rainbows_pid=$(cat $pid)
+
+curl -sSfv -T- </dev/null http://$listen/5 > $curl_out 2> $fifo &
+
+awk -v rainbows_pid=$rainbows_pid '
+{ print $0 }
+/100 Continue/ {
+        print "awk: sending SIGQUIT to", rainbows_pid
+        system("kill -QUIT "rainbows_pid)
+}' $fifo
+wait
+
+dbgcat r_err
+
+test x"$(wc -l < $curl_out)" = x1
+nr=$(sort < $curl_out | uniq | wc -l)
+
+test "$nr" -eq 1
+test x$(sort < $curl_out | uniq) = xHello
+! grep Error $r_err
+while kill -0 $rainbows_pid >/dev/null 2>&1
+do
+        sleep 1
+done