diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-10-30 18:14:37 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-10-30 18:14:37 -0700 |
commit | b96822f15c9ede2a0053afeb1a5f43d3df7d7d3d (patch) | |
tree | 15be0d666a48ebd0e82e9fd8e0245195d6d9faf9 /t/t0004-heartbeat-timeout.sh | |
parent | f7189b5074ea99519a2a005c8b0f369bc1fd3a39 (diff) | |
download | rainbows-b96822f15c9ede2a0053afeb1a5f43d3df7d7d3d.tar.gz |
This module will be reused in upcoming Rev-derived concurrency models.
Diffstat (limited to 't/t0004-heartbeat-timeout.sh')
-rwxr-xr-x | t/t0004-heartbeat-timeout.sh | 62 |
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 |