about summary refs log tree commit homepage
path: root/t
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2010-06-04 07:11:47 +0000
committerEric Wong <normalperson@yhbt.net>2010-06-04 07:36:57 +0000
commit8ac80b06424350fd6088c1363661a12620040ae8 (patch)
treea9fab7ad21af4d782c1e50f6f7c6691aab4e48c0 /t
parent9dd7e943707608d9c98240b33c859d3c09fac577 (diff)
downloadrainbows-8ac80b06424350fd6088c1363661a12620040ae8.tar.gz
Apparently this document was completely forgotten over the
course of development and never properly put on the website.

The test suite is one of my favorite parts of Rainbows! and
allows us to test the server as real clients would hit it.
Diffstat (limited to 't')
-rw-r--r--t/README25
1 files changed, 21 insertions, 4 deletions
diff --git a/t/README b/t/README
index 4a6430a..83b0501 100644
--- a/t/README
+++ b/t/README
@@ -1,19 +1,21 @@
-= Rainbows! test suite
+= \Rainbows! test suite - YES OUR TEST SUITE IS CONCURRENT!
 
 These are all integration tests that start the server on random, unused
 TCP ports or Unix domain sockets.  They're all designed to run
 concurrently with other tests to minimize test time, but tests may be
 run independently as well.
 
-We write our tests in Bourne shell because that's what we're
-comfortable writing integration tests with.
+We write our tests primarily in Bourne shell because that's what we're
+comfortable writing integration tests with.  This test suite is also
+easily portable to non-Ruby web servers.
 
 == Requirements
 
 * {Ruby 1.8 or 1.9}[http://www.ruby-lang.org/] (duh!)
+* {isolate ~> 2.0.2}[http://github.com/jbarnette/isolate] - for dependencies
 * {GNU make}[http://www.gnu.org/software/make/]
 * {socat}[http://www.dest-unreach.org/socat/]
-* {curl}[http://curl.haxx.se/]
+* {curl >= 7.18.0}[http://curl.haxx.se/]
 * standard UNIX shell utilities (Bourne sh, awk, sed, grep, ...)
 
 We do not use bashisms or any non-portable, non-POSIX constructs
@@ -24,6 +26,8 @@ with {dash}[http://gondor.apana.org.au/~herbert/dash/] and
 
 == Running Tests
 
+*BSD users: use "gmake" instead of "make"
+
 To run the entire test suite with 8 tests running at once:
 
   make -j8
@@ -36,6 +40,10 @@ To run one individual test for one concurrency model:
 
   make Revactor.t0000-simple-http.sh
 
+To run all tests for one concurrency model:
+
+  make EventMachine
+
 You may also increase verbosity by setting the "V" variable for
 GNU make.  To disable trapping of stdout/stderr:
 
@@ -44,3 +52,12 @@ GNU make.  To disable trapping of stdout/stderr:
 To enable the "set -x" option in shell scripts to trace execution
 
   make V=2
+
+== Performance
+
+Some of the tests are rather I/O intensive due to the rewindability
+requirement of "rack.input" in the Rack specification and the somewhat
+complicated (but awesome!) nature of the TeeInput class leading us to
+test it very heavily.  If you have lots of RAM and a large tmpfs
+partition, it is advisable to set your TMPDIR and also make the t/trash/
+directory a symlink to a directory inside in your TMPDIR.