Date | Commit message (Collapse) |
|
Ensure the output fits in a standard ANSI terminal so it's easy
to read for all users regardless of what interface they're
working from.
|
|
Since not all rackup command-line options can be supported by
Unicorn, disable this gross hack to avoid potentially
unpredictable or undefined behavior. config.ru will not be able
to specify the config file for unicorn-specific options; but the
unicorn-specific config files themselves will be allowed to
override the default config.ru location.
|
|
|
|
This was accidentally left in there during 1.9
compatibility testing.
|
|
People can screw config files up, it's not my fault
if they do, but they do... Don't let the original
process get wedged if we can help it..
|
|
Apparently the at_exit handlers were not triggering for an
execed process.
|
|
Add a install-test for doing a mock install with private http11
and bin/unicorn and appropriate PATH/RUBYLIB env.
Also add a normal install target so we can just type
"make install" and just be done with a regular
installation (and it'll revert files if using git).
I use the following local.mk to augment my GNUmakefile. It
allows me to run "make -j full-test" and run both 1.8 and 1.9
tests in parallel.
--------------------------- 8< -------------------------
DLEXT := so
rack_ver := 0.9.1
ifeq ($(r19),)
ruby := $(HOME)/bin/ruby
RUBYLIB := $(HOME)/lib/ruby/gems/1.8/gems/rack-$(rack_ver)/lib
else
export PATH := $(HOME)/ruby-1.9/bin:$(PATH)
ruby := $(HOME)/ruby-1.9/bin/ruby
RUBYLIB := $(HOME)/ruby-1.9/lib/ruby/gems/1.9.1/gems/rack-$(rack_ver)/lib
endif
SHELL := /bin/bash -e -o pipefail
full-test: test-18 test-19
test-18:
$(MAKE) test 2>&1 | sed -u -e 's!^!1.8 !'
test-19:
$(MAKE) test r19=1 2>&1 | sed -u -e 's!^!1.9 !'
--------------------------- 8< -------------------------
|
|
This adds a bunch of execution tests that require the "unicorn"
binary to be in PATH as well as rack being directly
"require"-able ("rubygems" will not be loaded for you). The
tester is responsible for setting up PATH and RUBYLIB
appropriately.
|
|
We don't need these dependencies slowing down load times
on our tests..
|
|
Reset connections can also return EPIPE under Linux, not just
ECONNRESET; so be sure to trap that error, too.
|
|
Prevent the GC from trying to close it (and hitting the wrong
descriptor) when @random is reopened for running tests.
|
|
This also fixes a subtle bug in header generation when the +$,+
($OFS) variable is defined to something other than nil or ""
I'm really wondering what kind of drugs I was on (or _not_ on)
when I modified some of this from the Mongrel source.
|
|
Ruby 1.9 Tempfile objects can be passed directly to File.rename
(instead of the pathname). This doesn't work in 1.8, so always
just pass the pathname to File.rename.
|
|
Tempfile reuse was over-engineered and the problem was not
nearly as big a problem as initially thought.
Additionally, it could lead to a subtle bug in an applications
that link(2)s or rename(2)s the temporary file to a permanent
location _without_ closing it after the request is done.
Applications that suffer from the problem of directory bloat are
still free to modify ENV['TMPDIR'] to influence the creation of
Tempfiles.
|
|
unused_port is more reliable as it actually tries to bind
a port and retries if it fails. This is also safe across
parallel unicorn tests running in different directories.
|
|
Makes it much easier to track down failures if you know
something failed in the first place. A failed test early on
could be hidden because noise from successful tests drowned it
out.
|
|
We're not using them and they don't seem useful in any
shape or form...
|
|
While we'll support anything that exposes a Rack-like interface
(a very good one IMHO), we shouldn't have a hard dependency on
Rack to simplify testing.
While we're at it, I'm not using Daemons anymore, either,
since that does too many things behind our back as far as
daemonization goes.
As a result of not depending on Rubygems, either, I've sped
up my "make -j" test ~1.5 seconds
|
|
Just stuff what little logic we had for it into HttpResponse
since Rack takes care of the rest for us.
Put the HTTP_STATUS_HEADERS hash in HttpResponse since we're the
only user of it. Also, change HttpResponse.send to
HttpResponse.write to avoid overriding the default method.
|
|
Use select(2) to multiplex non-blocking accept(2) calls between
them. Additionally, aggressively make a bet after accepting
clients where we'll try to do a non-blocking accept(2) against
the full set of descriptors. This is based on the assumption
that if we just accepted connections, we're probably reasonably
busy.
This should lead to lower latency under high load; but some
wasted cycles when requests come in intermitently. By this same
logic, we don't really care for the thundering herd problem,
either; since it is only noticeable with many (hundreds) of
processes when most of them are idle.
|
|
The previous API was very flexible, but I don't think many
people really cared for it... We now repeatedly use the
same HeaderOut in each process since I completely don't
care for multithreading.
|
|
All tests for threading and semaphores have been removed. One
test was changed because it depended on a shared variable.
Tests will be replaced with tests to do process management
instead.
|
|
Avoid conflicting with existing Mongrel libraries since
we'll be incompatible and break things w/o disrupting
Mongrel installations.
|
|
Some of the tests here are horrifically slow due to sleeps,
allow using gmake to run these tests in parallel. My Core2 Duo
runs "make -j" over 10s faster than "rake".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Breaks world.
Added option to throttle number of concurrent threads processing requests.
Conflicts:
bin/mongrel_rails
lib/mongrel.rb
lib/mongrel/configurator.rb
lib/mongrel/rails.rb
test/unit/test_ws.rb
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This seems to have gotten accidentally dropped during a merge: r1020
Some broken web browsers don't properly escape ", <, and > characters
in URLs, however these URLs to occasionally legitimate and sometimes
show up.
This patch was submitted by Eden Li here:
http://rubyforge.org/pipermail/mongrel-users/2006-October/001845.html
This patch was accepted by Zed Shaw here:
http://rubyforge.org/pipermail/mongrel-users/2006-October/001847.html
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@1031 19e92222-5c0b-0410-8929-a290d50e31e9
|
|
ref: http://thread.gmane.org/gmane.comp.lang.ruby.mongrel.devel/37/focus=45
We got 'pen' mixed up with 'pound' in that thread but the gist
of it is still relevant: these nasty headers are irrelevant.
'pound' is the only thing that's known to send these nasty
headers and I (Eric Wong) don't consider pound relevant at all.
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@1030 19e92222-5c0b-0410-8929-a290d50e31e9
|