unicorn 4.6.0pre1 → 4.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Documentation/unicorn.1.txt +8 -4
- data/GIT-VERSION-GEN +1 -1
- data/t/t0000-http-basic.sh +1 -1
- data/t/t0004-heartbeat-timeout.sh +3 -3
- data/t/t0006-reopen-logs.sh +4 -4
- data/t/t0019-max_header_len.sh +1 -1
- data/t/t0100-rack-input-tests.sh +10 -10
- data/t/t9000-preread-input.sh +2 -2
- data/t/test-lib.sh +16 -1
- metadata +5 -6
- data/t/bin/utee +0 -12
data/Documentation/unicorn.1.txt
CHANGED
@@ -61,6 +61,10 @@ with rackup(1) but strongly discouraged.
|
|
61
61
|
For production deployments, specifying the "listen" directive in
|
62
62
|
CONFIG_FILE is recommended as it allows fine-tuning of socket
|
63
63
|
options.
|
64
|
+
-N, \--no-default-middleware
|
65
|
+
: Disables loading middleware implied by RACK_ENV. This bypasses the
|
66
|
+
configuration documented in the RACK ENVIRONMENT section, but still
|
67
|
+
allows RACK_ENV to be used for application/framework-specific purposes.
|
64
68
|
|
65
69
|
# RACKUP COMPATIBILITY OPTIONS
|
66
70
|
-o, \--host HOST
|
@@ -144,10 +148,10 @@ As of Unicorn 0.94.0, RACK_ENV is exported as a process-wide environment
|
|
144
148
|
variable as well. While not current a part of the Rack specification as
|
145
149
|
of Rack 1.0.1, this has become a de facto standard in the Rack world.
|
146
150
|
|
147
|
-
Note
|
148
|
-
|
149
|
-
individually specified in the
|
150
|
-
not require them.
|
151
|
+
Note the Rack::ContentLength and Rack::Chunked middlewares are also
|
152
|
+
loaded by "deployment" and "development", but no other values of
|
153
|
+
RACK_ENV. If needed, they must be individually specified in the
|
154
|
+
RACKUP_FILE, some frameworks do not require them.
|
151
155
|
|
152
156
|
# ENVIRONMENT VARIABLES
|
153
157
|
|
data/GIT-VERSION-GEN
CHANGED
data/t/t0000-http-basic.sh
CHANGED
@@ -23,9 +23,9 @@ t_begin "sleep for a bit, ensure worker PID does not change" && {
|
|
23
23
|
|
24
24
|
t_begin "block the worker process to force it to die" && {
|
25
25
|
rm $ok
|
26
|
-
t0=$(
|
26
|
+
t0=$(unix_time)
|
27
27
|
err="$(curl -sSf http://$listen/block-forever 2>&1 || > $ok)"
|
28
|
-
t1=$(
|
28
|
+
t1=$(unix_time)
|
29
29
|
elapsed=$(($t1 - $t0))
|
30
30
|
t_info "elapsed=$elapsed err=$err"
|
31
31
|
test x"$err" != x"Should never get here"
|
@@ -34,7 +34,7 @@ t_begin "block the worker process to force it to die" && {
|
|
34
34
|
|
35
35
|
t_begin "ensure worker was killed" && {
|
36
36
|
test -e $ok
|
37
|
-
test 1 -eq $(grep timeout $r_err | grep killing |
|
37
|
+
test 1 -eq $(grep timeout $r_err | grep killing | count_lines)
|
38
38
|
}
|
39
39
|
|
40
40
|
t_begin "ensure timeout took at least 3 seconds" && {
|
data/t/t0006-reopen-logs.sh
CHANGED
@@ -62,11 +62,11 @@ t_begin "rotated stderr is clean" && {
|
|
62
62
|
}
|
63
63
|
|
64
64
|
t_begin "server is now writing logs to new stderr" && {
|
65
|
-
before_rot=$(
|
66
|
-
before_err=$(
|
65
|
+
before_rot=$(count_bytes < $r_rot)
|
66
|
+
before_err=$(count_bytes < $r_err)
|
67
67
|
test xtrue = x$(curl -sSf http://$listen/ 2> $curl_err)
|
68
|
-
after_rot=$(
|
69
|
-
after_err=$(
|
68
|
+
after_rot=$(count_bytes < $r_rot)
|
69
|
+
after_err=$(count_bytes < $r_err)
|
70
70
|
test $after_rot -eq $before_rot
|
71
71
|
test $after_err -gt $before_err
|
72
72
|
}
|
data/t/t0019-max_header_len.sh
CHANGED
@@ -5,7 +5,7 @@ t_plan 5 "max_header_len setting (only intended for Rainbows!)"
|
|
5
5
|
t_begin "setup and start" && {
|
6
6
|
unicorn_setup
|
7
7
|
req='GET / HTTP/1.0\r\n\r\n'
|
8
|
-
len=$(printf "$req" |
|
8
|
+
len=$(printf "$req" | count_bytes)
|
9
9
|
echo Unicorn::HttpParser.max_header_len = $len >> $unicorn_config
|
10
10
|
unicorn -D -c $unicorn_config env.ru
|
11
11
|
unicorn_wait_start
|
data/t/t0100-rack-input-tests.sh
CHANGED
@@ -8,9 +8,9 @@ t_begin "setup and startup" && {
|
|
8
8
|
rtmpfiles curl_out curl_err
|
9
9
|
unicorn_setup
|
10
10
|
unicorn -E none -D rack-input-tests.ru -c $unicorn_config
|
11
|
-
|
12
|
-
blob_size=$(
|
13
|
-
|
11
|
+
blob_sha1=$(rsha1 < random_blob)
|
12
|
+
blob_size=$(count_bytes < random_blob)
|
13
|
+
t_info "blob_sha1=$blob_sha1"
|
14
14
|
unicorn_wait_start
|
15
15
|
}
|
16
16
|
|
@@ -24,7 +24,7 @@ t_begin "corked identity request" && {
|
|
24
24
|
wait
|
25
25
|
echo ok > $ok
|
26
26
|
) | ( sleep 1 && socat - TCP4:$listen > $fifo )
|
27
|
-
test 1 -eq $(grep $blob_sha1 $tmp |
|
27
|
+
test 1 -eq $(grep $blob_sha1 $tmp |count_lines)
|
28
28
|
test x"$(cat $ok)" = xok
|
29
29
|
}
|
30
30
|
|
@@ -36,7 +36,7 @@ t_begin "corked chunked request" && {
|
|
36
36
|
wait
|
37
37
|
echo ok > $ok
|
38
38
|
) | ( sleep 1 && socat - TCP4:$listen > $fifo )
|
39
|
-
test 1 -eq $(grep $blob_sha1 $tmp |
|
39
|
+
test 1 -eq $(grep $blob_sha1 $tmp |count_lines)
|
40
40
|
test x"$(cat $ok)" = xok
|
41
41
|
}
|
42
42
|
|
@@ -50,7 +50,7 @@ t_begin "corked identity request (input#size first)" && {
|
|
50
50
|
wait
|
51
51
|
echo ok > $ok
|
52
52
|
) | ( sleep 1 && socat - TCP4:$listen > $fifo )
|
53
|
-
test 1 -eq $(grep $blob_sha1 $tmp |
|
53
|
+
test 1 -eq $(grep $blob_sha1 $tmp |count_lines)
|
54
54
|
test x"$(cat $ok)" = xok
|
55
55
|
}
|
56
56
|
|
@@ -64,7 +64,7 @@ t_begin "corked identity request (input#rewind first)" && {
|
|
64
64
|
wait
|
65
65
|
echo ok > $ok
|
66
66
|
) | ( sleep 1 && socat - TCP4:$listen > $fifo )
|
67
|
-
test 1 -eq $(grep $blob_sha1 $tmp |
|
67
|
+
test 1 -eq $(grep $blob_sha1 $tmp |count_lines)
|
68
68
|
test x"$(cat $ok)" = xok
|
69
69
|
}
|
70
70
|
|
@@ -81,8 +81,8 @@ t_begin "corked chunked request (input#size first)" && {
|
|
81
81
|
wait
|
82
82
|
echo ok > $ok
|
83
83
|
) | ( sleep 1 && socat - TCP4:$listen > $fifo )
|
84
|
-
test 1 -eq $(grep $blob_sha1 $tmp |
|
85
|
-
test 1 -eq $(grep $blob_sha1 $tmp |
|
84
|
+
test 1 -eq $(grep $blob_sha1 $tmp |count_lines)
|
85
|
+
test 1 -eq $(grep $blob_sha1 $tmp |count_lines)
|
86
86
|
test x"$(cat $ok)" = xok
|
87
87
|
}
|
88
88
|
|
@@ -99,7 +99,7 @@ t_begin "corked chunked request (input#rewind first)" && {
|
|
99
99
|
wait
|
100
100
|
echo ok > $ok
|
101
101
|
) | ( sleep 1 && socat - TCP4:$listen > $fifo )
|
102
|
-
test 1 -eq $(grep $blob_sha1 $tmp |
|
102
|
+
test 1 -eq $(grep $blob_sha1 $tmp |count_lines)
|
103
103
|
test x"$(cat $ok)" = xok
|
104
104
|
}
|
105
105
|
|
data/t/t9000-preread-input.sh
CHANGED
@@ -26,7 +26,7 @@ t_begin "sha1 matches" && {
|
|
26
26
|
}
|
27
27
|
|
28
28
|
t_begin "app only dispatched twice" && {
|
29
|
-
test 2 -eq "$(grep 'app dispatch:' < $r_err |
|
29
|
+
test 2 -eq "$(grep 'app dispatch:' < $r_err | count_lines )"
|
30
30
|
}
|
31
31
|
|
32
32
|
t_begin "aborted chunked request" && {
|
@@ -38,7 +38,7 @@ t_begin "aborted chunked request" && {
|
|
38
38
|
}
|
39
39
|
|
40
40
|
t_begin "app only dispatched twice" && {
|
41
|
-
test 2 -eq "$(grep 'app dispatch:' < $r_err |
|
41
|
+
test 2 -eq "$(grep 'app dispatch:' < $r_err | count_lines )"
|
42
42
|
}
|
43
43
|
|
44
44
|
t_begin "killing succeeds" && {
|
data/t/test-lib.sh
CHANGED
@@ -32,6 +32,21 @@ wait_for_pid () {
|
|
32
32
|
done
|
33
33
|
}
|
34
34
|
|
35
|
+
# "unix_time" is not in POSIX, but in GNU, and FreeBSD 9.0 (possibly earlier)
|
36
|
+
unix_time () {
|
37
|
+
$RUBY -e 'puts Time.now.to_i'
|
38
|
+
}
|
39
|
+
|
40
|
+
# "wc -l" outputs leading whitespace on *BSDs, filter it out for portability
|
41
|
+
count_lines () {
|
42
|
+
wc -l | tr -d '[:space:]'
|
43
|
+
}
|
44
|
+
|
45
|
+
# "wc -c" outputs leading whitespace on *BSDs, filter it out for portability
|
46
|
+
count_bytes () {
|
47
|
+
wc -c | tr -d '[:space:]'
|
48
|
+
}
|
49
|
+
|
35
50
|
# given a list of variable names, create temporary files and assign
|
36
51
|
# the pathnames to those variables
|
37
52
|
rtmpfiles () {
|
@@ -49,7 +64,7 @@ rtmpfiles () {
|
|
49
64
|
;;
|
50
65
|
*socket)
|
51
66
|
_tmp="$(mktemp -t $id.$$.XXXXXXXX)"
|
52
|
-
if test $(printf "$_tmp" |
|
67
|
+
if test $(printf "$_tmp" |count_bytes) -gt 108
|
53
68
|
then
|
54
69
|
echo >&2 "$_tmp too long, tests may fail"
|
55
70
|
echo >&2 "Try to set TMPDIR to a shorter path"
|
metadata
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
name: !binary |-
|
3
3
|
dW5pY29ybg==
|
4
4
|
version: !ruby/object:Gem::Version
|
5
|
-
version: 4.6.
|
6
|
-
prerelease:
|
5
|
+
version: 4.6.0
|
6
|
+
prerelease:
|
7
7
|
platform: ruby
|
8
8
|
authors:
|
9
9
|
- Unicorn hackers
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-02-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: !binary |-
|
@@ -250,7 +250,6 @@ files:
|
|
250
250
|
- t/bin/content-md5-put
|
251
251
|
- t/bin/sha1sum.rb
|
252
252
|
- t/bin/unused_listen
|
253
|
-
- t/bin/utee
|
254
253
|
- t/broken-app.ru
|
255
254
|
- t/detach.ru
|
256
255
|
- t/env.ru
|
@@ -351,9 +350,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
351
350
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
352
351
|
none: false
|
353
352
|
requirements:
|
354
|
-
- - ! '
|
353
|
+
- - ! '>='
|
355
354
|
- !ruby/object:Gem::Version
|
356
|
-
version:
|
355
|
+
version: '0'
|
357
356
|
requirements: []
|
358
357
|
rubyforge_project: !binary |-
|
359
358
|
bW9uZ3JlbA==
|
data/t/bin/utee
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# -*- encoding: binary -*-
|
3
|
-
# tee(1) as distributed on most(all?) systems is buffered in luserspace
|
4
|
-
# this only does unbuffered writes (with line-buffered input) to make
|
5
|
-
# test output appear in real-time
|
6
|
-
$stdin.binmode
|
7
|
-
$stdout.binmode
|
8
|
-
fp = File.open(ARGV.shift, "wb")
|
9
|
-
$stdin.each_line do |line|
|
10
|
-
fp.syswrite line
|
11
|
-
$stdout.syswrite line
|
12
|
-
end
|