diff options
author | Eric Wong <normalperson@yhbt.net> | 2010-01-08 16:44:44 -0800 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2010-01-08 17:01:27 -0800 |
commit | 0b6fe07c10278266e2f428a4355b7edfc13781cd (patch) | |
tree | 917e3510c0ea47fd27f858ada0076cc0864afd1f /t/t0500-cramp-streaming.sh | |
parent | 23bf8da0774b21d8c55786b4b386faba4b53c97f (diff) | |
download | rainbows-0b6fe07c10278266e2f428a4355b7edfc13781cd.tar.gz |
Tested with cramp-0.7 and eventmachine 0.12.10
Diffstat (limited to 't/t0500-cramp-streaming.sh')
-rwxr-xr-x | t/t0500-cramp-streaming.sh | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/t/t0500-cramp-streaming.sh b/t/t0500-cramp-streaming.sh new file mode 100755 index 0000000..0c18875 --- /dev/null +++ b/t/t0500-cramp-streaming.sh @@ -0,0 +1,77 @@ +#!/bin/sh +. ./test-lib.sh +case $model in +EventMachine) ;; +*) + t_info "skipping $T since it's not compatible with $model" + exit 0 + ;; +esac +require_check cramp Cramp::VERSION + +t_plan 7 "streaming test for Cramp" + +CONFIG_RU=cramp/streaming.ru + +t_begin "setup and start" && { + rainbows_setup + rtmpfiles a b c curl_err expect + + # requiring Rubygems for this test only since Cramp depends on + # pre versions of several gems + # Like the rest of the EM/async stuff, it's not Rack::Lint compatible + rainbows -E deployment -D $CONFIG_RU -c $unicorn_config + rainbows_wait_start +} + +# this will spew any unexpected input to stdout and be silent on success +check () { + ( + t0=$(date +%s) + i=0 + while read hello world + do + t1=$(date +%s) + diff=$(($t1 - $t0)) + t_info "i=$i diff=$diff hello=$hello world=$world" + test $diff -ge 1 || echo "$i: diff: $diff < 1 second" + t0=$t1 + test xHello = x"$hello" || echo "$i: Hello != $hello" + test xWorld = x"$world" || echo "$i: World != $world" + i=$(($i + 1)) + test $i -le 3 || echo "$i: $i > 3" + done + ) +} + +t_begin "send async requests off in parallel" && { + t0=$(date +%s) + curl --no-buffer -sSf http://$listen/ 2>> $curl_err | check >$a 2>&1 & + curl --no-buffer -sSf http://$listen/ 2>> $curl_err | check >$b 2>&1 & + curl --no-buffer -sSf http://$listen/ 2>> $curl_err | check >$c 2>&1 & +} + +t_begin "wait for curl terminations" && { + wait + t1=$(date +%s) + elapsed=$(( $t1 - $t0 )) + t_info "elapsed=$elapsed (should be 4-5s)" +} + +t_begin "termination signal sent" && { + kill $rainbows_pid +} + +t_begin "no errors from curl" && { + test ! -s $curl_err +} + +t_begin "no errors in stderr" && check_stderr + +t_begin "silence is golden" && { + test ! -s $a + test ! -s $b + test ! -s $c +} + +t_done |