about summary refs log tree commit homepage
path: root/t/t0700-app-deferred.sh
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2010-05-04 13:23:38 -0700
committerEric Wong <normalperson@yhbt.net>2010-05-04 13:33:19 -0700
commit57909fb76dd0bcf95bed94ec41933ec85afda885 (patch)
tree0f91a27229fd513d32b4387416221b5d1601184f /t/t0700-app-deferred.sh
parentdcf280239978e00435760470b5ddf67254312c75 (diff)
downloadrainbows-57909fb76dd0bcf95bed94ec41933ec85afda885.tar.gz
Merb (and possibly other) frameworks that support conditionally
deferred app dispatch can now use it just like Ebb and Thin.

http://brainspl.at/articles/2008/04/18/deferred-requests-with-merb-ebb-and-thin
Diffstat (limited to 't/t0700-app-deferred.sh')
-rwxr-xr-xt/t0700-app-deferred.sh45
1 files changed, 45 insertions, 0 deletions
diff --git a/t/t0700-app-deferred.sh b/t/t0700-app-deferred.sh
new file mode 100755
index 0000000..8d4b4e2
--- /dev/null
+++ b/t/t0700-app-deferred.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+. ./test-lib.sh
+case $model in
+EventMachine) ;;
+*)
+        t_info "skipping $T since it's not compatible with $model"
+        exit 0
+        ;;
+esac
+
+t_plan 5 "basic test for app.deferred? usage"
+
+CONFIG_RU=app_deferred.ru
+
+t_begin "setup and start" && {
+        rainbows_setup
+        rtmpfiles deferred_err deferred_out sync_err sync_out
+        rainbows -D -c $unicorn_config $CONFIG_RU
+        rainbows_wait_start
+}
+
+t_begin "synchronous requests run in the same thread" && {
+        curl --no-buffer -sSf http://$listen/ >> $sync_out 2>> $sync_err &
+        curl --no-buffer -sSf http://$listen/ >> $sync_out 2>> $sync_err &
+        curl --no-buffer -sSf http://$listen/ >> $sync_out 2>> $sync_err &
+        wait
+        test ! -s $sync_err
+        test 3 -eq "$(wc -l < $sync_out)"
+        test 1 -eq "$(uniq < $sync_out | wc -l)"
+}
+
+t_begin "deferred requests run in a different thread" && {
+        curl -sSf http://$listen/deferred >> $deferred_out 2>> $deferred_err
+        test ! -s $deferred_err
+        sync_thread="$(uniq < $sync_out)"
+        test x"$(uniq < $deferred_out)" != x"$sync_thread"
+}
+
+t_begin "termination signal sent" && {
+        kill $rainbows_pid
+}
+
+t_begin "no errors in stderr" && check_stderr
+
+t_done