about summary refs log tree commit homepage
path: root/t/t0021-sendfile-wrap-to_path.sh
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2010-07-19 10:10:08 +0000
committerEric Wong <normalperson@yhbt.net>2010-07-19 17:04:39 -0700
commit9c8372c3a4972cacf0eb15ad85d34cb33293672e (patch)
tree1998fa98415c7331c56c06de69d06069fd55154b /t/t0021-sendfile-wrap-to_path.sh
parentfa4eb71b8208f7fc4148a7f8dd916c2e0cd1cc8a (diff)
downloadrainbows-9c8372c3a4972cacf0eb15ad85d34cb33293672e.tar.gz
We need to remember to close response bodies even if
a client aborts the connection, since body.close can
trigger interesting things like logging and such...
Diffstat (limited to 't/t0021-sendfile-wrap-to_path.sh')
-rwxr-xr-x[-rw-r--r--]t/t0021-sendfile-wrap-to_path.sh22
1 files changed, 20 insertions, 2 deletions
diff --git a/t/t0021-sendfile-wrap-to_path.sh b/t/t0021-sendfile-wrap-to_path.sh
index 4ae5929..6baa890 100644..100755
--- a/t/t0021-sendfile-wrap-to_path.sh
+++ b/t/t0021-sendfile-wrap-to_path.sh
@@ -9,10 +9,10 @@ ruby) ;;
         ;;
 esac
 
-t_plan 7 "sendfile wrap body response for $model"
+t_plan 10 "sendfile wrap body response for $model"
 
 t_begin "setup and startup" && {
-        rtmpfiles out err
+        rtmpfiles out err http_fifo sub_ok
         rainbows_setup $model
         echo 'require "sendfile"' >> $unicorn_config
         echo 'def (::IO).copy_stream(*x); abort "NO"; end' >> $unicorn_config
@@ -42,6 +42,24 @@ t_begin "body.close called" && {
         grep CLOSING $out || die "body.close not logged"
 }
 
+t_begin "start FIFO reader for abortive request" && {
+        cat $fifo > $out &
+}
+
+t_begin "send abortive request" && {
+        (
+                printf 'GET /random_blob\r\n'
+                dd bs=4096 count=1 < $http_fifo >/dev/null
+                echo ok > $ok
+        ) | socat - TCP:$listen > $http_fifo || :
+        test xok = x$(cat $ok)
+}
+
+t_begin "body.close called for aborted request" && {
+        wait # for cat $fifo
+        grep CLOSING $out || die "body.close not logged"
+}
+
 t_begin "shutdown server" && {
         kill -QUIT $rainbows_pid
 }