about summary refs log tree commit homepage
path: root/t/t9002-oob_gc-path.sh
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-04-29 15:48:35 -0700
committerEric Wong <normalperson@yhbt.net>2011-04-29 16:01:14 -0700
commitfaeb3223636c39ea8df4017dc9a9d39ac649b26d (patch)
treefce6b3ee71fc84e41ed3227ff2136b167b2d59b6 /t/t9002-oob_gc-path.sh
parentce4995a4daf1e4da7034dc87fd218a283c405410 (diff)
downloadunicorn-faeb3223636c39ea8df4017dc9a9d39ac649b26d.tar.gz
This was broken since v3.3.1[1] since nginx relies on a closed
socket (and not Content-Length/Transfer-Encoding) to detect
a response completion.  We have to close the client socket
before invoking GC to ensure the client sees the response
in a timely manner.

[1] - commit b72a86f66c722d56a6d77ed1d2779ace6ad103ed
Diffstat (limited to 't/t9002-oob_gc-path.sh')
-rw-r--r--t/t9002-oob_gc-path.sh75
1 files changed, 75 insertions, 0 deletions
diff --git a/t/t9002-oob_gc-path.sh b/t/t9002-oob_gc-path.sh
new file mode 100644
index 0000000..d4e795b
--- /dev/null
+++ b/t/t9002-oob_gc-path.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+. ./test-lib.sh
+t_plan 12 "OobGC test with limited path"
+
+t_begin "setup and start" && {
+        unicorn_setup
+        unicorn -D -c $unicorn_config oob_gc_path.ru
+        unicorn_wait_start
+}
+
+t_begin "test default is noop" && {
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+}
+
+t_begin "4 bad requests to bump counter" && {
+        test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
+}
+
+t_begin "GC-starting request returns immediately" && {
+        test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
+}
+
+t_begin "GC was started after 5 requests" && {
+        test xtrue = x$(curl -vsSf http://$listen/ 2>> $tmp)
+}
+
+t_begin "reset GC" && {
+        test xfalse = x$(curl -vsSf -X POST http://$listen/gc_reset 2>> $tmp)
+}
+
+t_begin "test default is noop" && {
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
+}
+
+t_begin "4 bad requests to bump counter" && {
+        test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
+        test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
+}
+
+t_begin "GC-starting request returns immediately" && {
+        test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
+}
+
+t_begin "GC was started after 5 requests" && {
+        test xtrue = x$(curl -vsSf http://$listen/ 2>> $tmp)
+}
+
+t_begin "killing succeeds" && {
+        kill -QUIT $unicorn_pid
+}
+
+t_begin "check_stderr" && check_stderr
+
+t_done