Skip to content


Subversion checkout URL

You can clone with
Download ZIP

ensure body is closed during hijack

Middlewares such as Rack::Lock (used by Rails) break badly unless
the response body is closed on hijack, so we will close it to follow
the lead of other popular Rack servers.

While it's unclear if there's anybody using rack.hijack with unicorn,
we'll try to emulate the behavior of other servers as much as

ref: ngauthier/tubesock#10
latest commit 02a0727349
Eric Wong authored
Failed to load latest commit information.
.gitignore remove SSL tests
README add broken app test from Rainbows! tests: import basic TAP library from Rainbows! add heartbeat timeout test from Rainbows! ensure body is closed during hijack my-tap-lib: fix race condition in verbose mode tests: limit oobgc check to accepted sockets t/ relax test for rack 1.6.0 add test for erroring out when is bad support for Rack hijack in request and response tests: extra working_directory integration cases SIGHUP deals w/ dual master pid path scenario add broken app test from Rainbows! log ERROR messages if workers exit with failure tests: set executable bit on integration shell scripts t0012: fix race condition in reload configurator: enable "rewindable_input" directive add missing test files tests: set executable bit on integration shell scripts bind listeners after loading for preload_app users allow client_buffer_body_size to be tuned ensure body is closed during hijack tests: "wc -l" portability for *BSDs close client socket after closing response body


= Unicorn integration test suite

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.

== Requirements

* {Ruby 1.9.3+}[] (duh!)
* {GNU make}[]
* {socat}[]
* {curl}[]
* standard UNIX shell utilities (Bourne sh, awk, sed, grep, ...)

We do not use bashisms or any non-portable, non-POSIX constructs
in our shell code.  We use the "pipefail" option if available and
mainly test with {ksh}[], but occasionally
with {dash}[] and
{bash}[], too.

== Running Tests

To run the entire test suite with 8 tests running at once:

  make -j8

To run one individual test:


You may also increase verbosity by setting the "V" variable for
GNU make.  To disable trapping of stdout/stderr:

  make V=1

To enable the "set -x" option in shell scripts to trace execution

  make V=2
Something went wrong with that request. Please try again.