about summary refs log tree commit homepage
path: root/t
DateCommit message (Collapse)
2009-10-24tests: add a TAP producer shell library
This will eventually allow our test output to be consumed by any TAP[1]-compatible consumers. Like the rest of our shell scripts, this only relies on POSIX behavior and has no bashisms. mktemp(1) is a requirement only if using the verbose output in this library. This library aims to be useful outside of Rainbows! [1]: Test Anything Protocol: http://testanything.org/
2009-10-24tests: common setup and wait_start functions
Instead of sleeping and waiting for a PID file to appear, just use a named-pipe and block on it in the test scripts since we know Unicorn won't attempt to fork until sockets are already bound.
2009-10-24tests: prefer "RUBY" to lowercased "ruby"
It's more common form for externally-visible/modifiable variables in Makefiles and shell scripts.
2009-10-24tests: avoid race condition in reopen logs test
Ensure our workers are capable of processing requests before we can continue to setup signal handlers. The later "kill -USR1" signal may fire in our test script before the workers have a chance to setup the handlers. So by the time we receive a positive response, we _know_ signal handlers are ready.
2009-10-22tests: hopefully fix stalls in input trailer tests
utee is line-oriented on _read_, so avoid messing with that for this. Additionally, spawn our FIFO cats before we start writing gobs of data out since it could cause the writers to block otherwise.
2009-10-20tests: avoid needlessly remaking "rainbows"
The cmp test was completely unnecessary and pointless.
2009-10-19rev: fix static file responses under HTTP/0.9
Since HTTP/0.9 responses have no headers to write, the on_write_complete handler we rely on never got triggered, leading to additional reads to never get queued up. Additionally, we need to explicitly detect and close client sockets if we've written the last response body since HTTP/0.9 clients never know when it's time to close a connection.
2009-10-19test-lib: avoid stalling due to bad FIFO handling
Don't try to clobber FIFOs at startup since sometimes traps may not fire. And while we're at it, avoid trying to unlink them twice.
2009-10-19tests: more correct HTTP/0.9 test
The extra CRLF is not needed for HTTP/0.9
2009-10-18tests: predictable and simpler tempfile management
Instead of using completely random names, we'll use predictable ones since we already depend on them for exit codes and such. This drops our ability to run the same test for the same version of Ruby in the same working tree, but that's an unlikely scenario. While we're at it, avoid remove tempfiles if a test failed. This should make debugging easier.
2009-10-18tests: DWIM FIFO creation
If we're going to name a variable "fifo", it'll be for descriptive reasons...
2009-10-18tests: more reliable error checking
We now check for SIGKILL, too
2009-10-18rev: async response bodies with DevFdResponse middleware
This new middleware should be a no-op for non-Rev concurrency models (or by explicitly setting env['rainbows.autochunk'] to false). Setting env['rainbows.autochunk'] to true (the default when Rev is used) allows (e)poll-able IO objects (sockets, pipes) to be sent asynchronously after app.call(env) returns. This also has a fortunate side effect of introducing a code path which allows large, static files to be sent without slurping them into a Rev IO::Buffer, too. This new change works even without the DevFdResponse middleware, so you won't have to reconfigure your app. This lets us epoll on response bodies that come in from a pipe or even a socket and send them either straight through or with chunked encoding.
2009-10-17tests: for log reopening for all concurrency models
2009-10-17tests: rack.input hammer concurrency testing
2009-10-17tests: common basic HTTP tests for all models
We support pipelining, keepalive, and even HTTP/0.9!
2009-10-17tests: DRY require tests for Rev/Revactor
2009-10-17test-lib: quiet down pipefail error message
We'll spit out a proper warning later anyways...
2009-10-17tests: DRY Ruby requires based on model
2009-10-17tests: DRY setting of the "model" environment var
2009-10-17tests: factor out a common parser error "library"
2009-10-17tests: fix random_blob dependency
2009-10-17tests: fix issues with non-portable shell constructs
At least these tests all run with dash now, but ksh93 or bash is still recommended for pipefail
2009-10-17tests: rack.input trailer tests for all models
Just in case we break something. Also add staggered blob test to simulate slow client uploads.
2009-10-17tests: add unbuffered tee(1)-like helper
Buffering enabled in tee(1) was making tests more difficult to debug.
2009-10-17tests: introduce require_for_model function
This makes it easier to write/share code for multi-model tests.
2009-10-17refactor graceful shutdowns again, harder
We use the "G" global constant from the Rev model everywhere to simplify things a little. Test cases are more consistent now, too.
2009-10-17tests: sleep.ru slurps rack.input stream
Since we do "Expect: 100-continue" handling, make sure we read anything in the request body the client will send us.
2009-10-17test-lib: dbgcat adds headers with key name
Makes it easier to track down empty files this way
2009-10-17tests: sleep.ru handles "Expect: 100-continue"
2009-10-17Revactor tests can sleep more easily
Since we export "rainbows.model" to Rack now, we don't have to worry about setting the "SLEEP_CLASS" env for the application.
2009-10-15t4003: chmod +x
oops
2009-10-15Add Rainbows::AppPool Rack middleware
2009-10-14tests: enforce rack.multithread and rainbows.model
Help ensure apps get the correct Rack environment to make choices (if any) with.
2009-10-14t3003: set executable bit
all test files should have the executable bit set
2009-10-14Rev: fix error handling for parser errors
We should try to send 400s back to the client if possible.
2009-10-14preliminary Rev support
There is no TeeInput (streaming request body) support, yet, as that does not seem fun nor easy to do (or even possible without using Threads or Fibers or something to save/restore the stack...)
2009-10-12tests: add reopen logs test for revactor
Just in case Rev/Revactor does weird things when faced with signals.
2009-10-12tests: check for common exceptions with "Error"
And fix existing tests that use "grep -v" since that is almost always true...
2009-10-11Fix graceful shutdowns for threaded models
They were completely broken in the refactoring :x
2009-10-11revactor: fix graceful shutdown timeouts
2009-10-10tests: create a bad exit code by default
In case the test doesn't complete and somehow doesn't write the exit code, we always want to start with one.
2009-10-10tests: update TRACER examples in makefile
2009-10-10tests: TEST_OPTS => SH_TEST_OPTS
These variables are only for shells in tests
2009-10-10README for test suite
2009-10-10tests: enable pipefail shell option if possible
pipefail is extremely useful for detecting bad exits _anywhere_ in pipelines, not just the last command. Combined with "set -e", pipefail leads to very unforgiving scripts that bail out at the first sign of error, exactly what we want in tests.
2009-10-08tests: add revactor pipelining/keepalive test
Revactor model uses a different process_client method than our Thread* models.
2009-10-08tests: add dbgcat() utility method
Useful for prefixing individual lines of a temporary file while catting it to stdout. This helps make tests easier to write and test.
2009-10-08tests: simplify temporary file management
Since we rely heavily on temporary files in tests, make sure management of them is easy and reliable.
2009-10-07t0000: basic test includes keepalive + pipelining