about summary refs log tree commit homepage
path: root/t/t0400-em-async-app.sh
diff options
context:
space:
mode:
Diffstat (limited to 't/t0400-em-async-app.sh')
-rwxr-xr-xt/t0400-em-async-app.sh57
1 files changed, 57 insertions, 0 deletions
diff --git a/t/t0400-em-async-app.sh b/t/t0400-em-async-app.sh
new file mode 100755
index 0000000..34da2ad
--- /dev/null
+++ b/t/t0400-em-async-app.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+nr=${nr-5}
+. ./test-lib.sh
+case $model in
+NeverBlock|EventMachine) ;;
+*)
+        t_info "skipping $T since it's not compatible with $model"
+        exit 0
+        ;;
+esac
+
+t_plan 7 "async_app test for test for EM"
+
+CONFIG_RU=async_examples/async_app.ru
+
+t_begin "setup and start" && {
+        rainbows_setup
+        rtmpfiles a b c curl_err expect
+
+        # this does not does not support Rack::Lint
+        rainbows -E deployment -D $CONFIG_RU -c $unicorn_config
+        rainbows_wait_start
+}
+
+t_begin "send async requests off in parallel" && {
+        t0=$(date +%s)
+        curl --no-buffer -sSf http://$listen/ > $a 2>> $curl_err &
+        curl --no-buffer -sSf http://$listen/ > $b 2>> $curl_err &
+        curl --no-buffer -sSf http://$listen/ > $c 2>> $curl_err &
+}
+
+t_begin "wait for curl terminations" && {
+        wait
+        t1=$(date +%s)
+        elapsed=$(( $t1 - $t0 ))
+        t_info "elapsed=$elapsed"
+}
+
+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 "responses match expected" && {
+        echo 'Woah, async!' > $expect
+        printf 'Cheers then!' >> $expect
+        cmp $expect $a
+        cmp $expect $b
+        cmp $expect $c
+}
+
+t_done