about summary refs log tree commit homepage
path: root/t/t0004-heartbeat-timeout.sh
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-10-30 18:14:37 -0700
committerEric Wong <normalperson@yhbt.net>2009-10-30 18:14:37 -0700
commitb96822f15c9ede2a0053afeb1a5f43d3df7d7d3d (patch)
tree15be0d666a48ebd0e82e9fd8e0245195d6d9faf9 /t/t0004-heartbeat-timeout.sh
parentf7189b5074ea99519a2a005c8b0f369bc1fd3a39 (diff)
downloadrainbows-b96822f15c9ede2a0053afeb1a5f43d3df7d7d3d.tar.gz
This module will be reused in upcoming Rev-derived concurrency
models.
Diffstat (limited to 't/t0004-heartbeat-timeout.sh')
-rwxr-xr-xt/t0004-heartbeat-timeout.sh62
1 files changed, 62 insertions, 0 deletions
diff --git a/t/t0004-heartbeat-timeout.sh b/t/t0004-heartbeat-timeout.sh
new file mode 100755
index 0000000..64ad207
--- /dev/null
+++ b/t/t0004-heartbeat-timeout.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+. ./test-lib.sh
+
+t_plan 9 "heartbeat/timeout test for $model"
+
+t_begin "setup and startup" && {
+        rainbows_setup $model
+        echo timeout 3 >> $unicorn_config
+        echo preload_app true >> $unicorn_config
+        FIFO_PATH=$fifo rainbows -D heartbeat-timeout.ru -c $unicorn_config
+        rainbows_wait_start
+}
+
+t_begin "read worker PID" && {
+        worker_pid=$(curl -sSf http://$listen/)
+        t_info "worker_pid=$worker_pid"
+}
+
+t_begin "sleep for a bit, ensure worker PID does not change" && {
+        sleep 4
+        test $(curl -sSf http://$listen/) -eq $worker_pid
+}
+
+t_begin "block the worker process to force it to die" && {
+        t0=$(date +%s)
+        err="$(curl -sSf http://$listen/block-forever 2>&1 || :)"
+        t1=$(date +%s)
+        elapsed=$(($t1 - $t0))
+        t_info "elapsed=$elapsed err=$err"
+        test x"$err" != x"Should never get here"
+        test x"$err" != x"$worker_pid"
+}
+
+t_begin "ensure timeout took 2-6 seconds" && {
+        test $elapsed -ge 2
+        test $elapsed -le 6 # give it some slack in case box is bogged down
+}
+
+t_begin "wait for new worker to start up" && {
+        test x = x"$(cat $fifo)"
+}
+
+t_begin "we get a fresh new worker process" && {
+        new_worker_pid=$(curl -sSf http://$listen/)
+        test $new_worker_pid -ne $worker_pid
+}
+
+t_begin "SIGSTOP and SIGCONT on rainbows master does not kill worker" && {
+        kill -STOP $rainbows_pid
+        sleep 4
+        kill -CONT $rainbows_pid
+        sleep 2
+        test $new_worker_pid -eq $(curl -sSf http://$listen/)
+}
+
+t_begin "stop server" && {
+        kill $rainbows_pid
+}
+
+dbgcat r_err
+
+t_done