about summary refs log tree commit homepage
path: root/t
DateCommit message (Collapse)
2011-04-30oob_gc: reimplement to fix breakage and add tests
This was broken since v3.3.1[1] and v1.1.6[2] 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 [2] - commit b7a0074284d33352bb9e732c660b29162f34bf0e (cherry picked from commit faeb3223636c39ea8df4017dc9a9d39ac649b26d) Conflicts: examples/big_app_gc.rb lib/unicorn/oob_gc.rb
2011-01-05close client socket after closing response body
Response bodies may capture the block passed to each and save it for body.close, so don't close the socket before we have a chance to call body.close (cherry picked from commit b72a86f66c722d56a6d77ed1d2779ace6ad103ed) Conflicts: lib/unicorn/http_server.rb test/unit/test_response.rb
2010-10-27configurator: reloading with unset values restores default
If a configuration directive is set at startup and later unset, it correctly restores the original default value as if it had never been set in the first place. This applies to the majority of the configuration values with a few exceptions: * This only applies to stderr_path and stdout_path when daemonized (the usual case, they'll be redirected to "/dev/null"). When NOT daemonized, we cannot easily redirect back to the original stdout/stderr destinations. * Unsetting working_directory does not restore the original working directory where Unicorn was started. As far as we can tell unsetting this after setting it is rarely desirable and greatly increases the probability of user error. (cherry picked from commit 51b2b90284000aee8d79b37a5406173c45ae212d)
2010-10-04update Rails 3 tests to use Rails 3 final
Rails 3 is out, and requires no code changes on our end to work (as far as our tests show :) (cherry picked from commit da272fc48ffaa808456fe94dd7a3e01bc9799832)
2010-10-04avoid unlinking actively listening sockets
While we've always unlinked dead sockets from nuked/leftover processes, blindly unlinking them can cause unnecessary failures when an active process is already listening on them. We now make a simple connect(2) check to ensure the socket is not in use before unlinking it. Thanks to Jordan Ritter for the detailed bug report leading to this fix. ref: http://mid.gmane.org/8D95A44B-A098-43BE-B532-7D74BD957F31@darkridge.com (cherry picked from commit 1a2363b17b1d06be6b35d347ebcaed6a0c940200)
2010-08-28update Rails3 tests to use 3.0.0rc2
No code changes needed, thankfully. (cherry picked from commit 18968f6aff2fa5ba5a7e3e3d47c9cc05cd6c260d)
2010-07-16SIGTTIN works after SIGWINCH
In addition to SIGHUP, it should be possible to gradually bring workers back up (to avoid overloading the machine) when rolling back upgrades after SIGWINCH. Noticed-by: Lawrence Pit ref: http://mid.gmane.org/4C3F8C9F.2090903@gmail.com (cherry picked from commit f1d33c80dd6c5650f960f7087f4e08f809754d34)
2010-07-13SIGHUP deals w/ dual master pid path scenario
As described in our SIGNALS documentation, sending SIGHUP to the old master (to respawn SIGWINCH-ed children) while the new master (spawned from SIGUSR2) is active is useful for backing out of an upgrade before sending SIGQUIT to the new master. Unfortunately, the SIGHUP signal to the old master will cause the ".oldbin" pid file to be reset to the non-".oldbin" version and thus attempt to clobber the pid file in use by the to-be-terminated new master process. Thanks to the previous commit to prevent redaemonization in the new master, the old master can reliably detect if the new master is active while it is reloading the config file. Thanks to Lawrence Pit for discovering this bug. ref: http://mid.gmane.org/4C3BEACF.7040301@gmail.com (cherry picked from commit c13bec3449396b21795966101367838161612d61)
2010-06-17t030[34]: proper temporary UNIX domain socket handling
test-lib handles variables named "*socket" (and "*fifo") differently than ordinary variables.
2010-06-17tests: extra working_directory integration cases
Our fugly code can't handle embedded command-line options in config.ru when using Rubinius yet. So add some related tests to the ones marked RBX_SKIP that don't rely on embedded command-line options.
2010-06-15workaround rbx not reopening logs to stderr/stdout
While log reopening worked reliably for newly-created File objects in the unit tests, the $stderr and $stdout handles that get redirected did not get reopened reliably under Rubinius. We work around this by relying on Rubinius internals and directly setting the @path instance variable. This is harmless for MRI and should be harmless for other any other Ruby implementations we'll eventually support. ref: http://github.com/evanphx/rubinius/issues/360
2010-06-11t0005: Ruby 1.9.2 $LOAD_PATH fix
Ruby 1.9.2 no longer adds the current directory to $LOAD_PATH automatically.
2010-06-10test to ensure "unicorn fooapp.rb" respects working_directory
2010-06-10add test for erroring out when config.ru is bad
2010-06-10t0303: extra test for multiple listeners
We share the same array from the original bin/* down into the Configurator.
2010-06-10tests: fix sha1 calculation for non-random_blob
This was commit abc207b2918606867094f2820bab58223e99aac4 from rainbows.git
2010-06-10t0303: set executable bit
2010-06-10my-tap-lib: fix race condition in verbose mode
Don't try to redirect until we know our FIFO consumers are ready for us. This only seems to happen with bash and not ksh...
2010-06-10tests: skip config.ru parsing tests under rbx
eval("...", TOPLEVEL_BINDING) is broken for us in Rubinius (And our code is extremely nasty as well :x) ref: http://github.com/evanphx/rubinius/issues/357
2010-06-10fix alt-working_directory behavior for Rails 3
2010-06-10unicorn_rails: no need to load ActionDispatch::Static
Rails 3 will automatically load it for us.
2010-06-10tests: split out host/port extraction from listen
more tests may use it
2010-06-10tests: update Rails 3 tests to Rails 3 beta4
2010-06-10respect "working_directory" wrt config.ru
Since we added support for the "working_directory" parameter, it often became unclear where/when certain paths would be bound. There are some extremely nasty dependencies and ordering issues when doing this. It's all pretty fragile, but works for now and we even have a full integration test to keep it working. I plan on cleaning this up 2.x.x to be less offensive to look at (Rainbows! and Zbatery are a bit tied to this at the moment). Thanks to Pierre Baillet for reporting this. ref: http://mid.gmane.org/AANLkTimKb7JARr_69nfVrJLvMZH3Gvs1o_KwZFLKfuxy@mail.gmail.com
2010-06-10tests: set NO_PROXY when running tests
It's a good idea to use a caching http_proxy to save bandwidth when isolating gems for different Ruby versions.
2010-06-08tests: add Rails 3 test for the missing config.ru case
In case we have weird Rails 3 users who choose to ignore config.ru, we'll be ready.
2010-06-08tests: libify common rails3 setup code
We'll be adding more Rails 3 tests..
2010-06-08t0300: Rails 3 test actually uses unicorn_rails
Oops, but unicorn_rails appears to work well here
2010-06-08update test infrastructure to run Rubinius tests
In parallel with other of Rubies, of course. We need to rely on RUBY_ENGINE since RUBY_VERSION is 1.8.7 and that conflicts with the most popular MRI version. Since Rubinius doesn't support some command-line options, we still need to rely on MRI for a few things. Also fixing an embarrassing UUoC in the process.
2010-06-03test: rails 3: automatically run isolate if needed
should be safe enough...
2010-06-03tests: add preliminary Rails 3 tests
We'll be switching to Isolate and shell-based tests since the old test/unit-based Rails test was basically a shell script written in Ruby.
2010-02-18Unicorn::builder to wrap our Rack::Builder usage
This should make it easier to reuse code in derivative servers like Rainbows! and Zbatery. Unfortunately, we can't depend on Rack::Builder/Rack::Server yet since Rack 1.1 just got them and notable frameworks (like Rails 2.3.x) do not fully work with Rack 1.1 yet). This also fixes subtle issue with config.ru files that could have variables that conflict with the Unicorn-specific namespace (this bug still affects "unicorn_rails", which could use some reworking as well).
2010-02-18graceful handling of bad config.ru + HUP w/ preload_app
If preload_app is true and Unicorn is HUP-ed with a bad config.ru, then it would be possible to have Unicorn in a bad state and constantly throw 500 errors. We now detect syntax and load errors since they're likely to appear in modified Rackup files, and will restore the original app if reloading failed.
2010-02-17test-lib: don't croak if "error" is in the test name
2010-02-17tests: import basic TAP library from Rainbows!