unicorn 1.1.7 → 2.0.0pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +14 -5
- data/Rakefile +3 -28
- data/TODO +7 -0
- data/bin/unicorn +9 -13
- data/bin/unicorn_rails +12 -14
- data/examples/big_app_gc.rb +33 -2
- data/ext/unicorn_http/global_variables.h +3 -1
- data/ext/unicorn_http/unicorn_http.rl +15 -6
- data/lib/unicorn.rb +67 -820
- data/lib/unicorn/app/exec_cgi.rb +3 -4
- data/lib/unicorn/configurator.rb +20 -25
- data/lib/unicorn/const.rb +26 -25
- data/lib/unicorn/http_request.rb +64 -57
- data/lib/unicorn/http_response.rb +16 -35
- data/lib/unicorn/http_server.rb +700 -0
- data/lib/unicorn/launcher.rb +4 -3
- data/lib/unicorn/oob_gc.rb +50 -61
- data/lib/unicorn/socket_helper.rb +4 -4
- data/lib/unicorn/tee_input.rb +18 -26
- data/lib/unicorn/tmpio.rb +29 -0
- data/lib/unicorn/util.rb +51 -85
- data/lib/unicorn/worker.rb +40 -0
- data/local.mk.sample +0 -9
- data/script/isolate_for_tests +43 -0
- data/t/GNUmakefile +8 -1
- data/t/t0003-working_directory.sh +0 -5
- data/t/t0010-reap-logging.sh +55 -0
- data/t/t0303-rails3-alt-working_directory_config.ru.sh +0 -5
- data/t/test-rails3.sh +1 -1
- data/test/exec/test_exec.rb +1 -1
- data/test/unit/test_http_parser_ng.rb +11 -0
- data/test/unit/test_request.rb +12 -0
- data/test/unit/test_response.rb +23 -21
- data/test/unit/test_signals.rb +1 -1
- data/test/unit/test_tee_input.rb +21 -19
- data/unicorn.gemspec +3 -2
- metadata +47 -25
- data/t/oob_gc.ru +0 -21
- data/t/oob_gc_path.ru +0 -21
- data/t/t0012-reload-empty-config.sh +0 -82
- data/t/t0018-write-on-close.sh +0 -23
- data/t/t9001-oob_gc.sh +0 -47
- data/t/t9002-oob_gc-path.sh +0 -75
- data/t/write-on-close.ru +0 -11
data/unicorn.gemspec
CHANGED
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
|
|
36
36
|
s.homepage = %q{http://unicorn.bogomips.org/}
|
37
37
|
|
38
38
|
summary = %q{Rack HTTP server for fast clients and Unix}
|
39
|
-
s.rdoc_options = [ "-t", "Unicorn: #{summary}" ]
|
39
|
+
s.rdoc_options = [ "-Na", "-t", "Unicorn: #{summary}" ]
|
40
40
|
s.require_paths = %w(lib ext)
|
41
41
|
s.rubyforge_project = %q{mongrel}
|
42
42
|
s.summary = summary
|
@@ -48,8 +48,9 @@ Gem::Specification.new do |s|
|
|
48
48
|
# commented out. Nevertheless, upgrading to Rails 2.3.4 or later is
|
49
49
|
# *strongly* recommended for security reasons.
|
50
50
|
s.add_dependency(%q<rack>)
|
51
|
+
s.add_dependency(%q<kgio>, '~> 1.2.0')
|
51
52
|
|
52
|
-
s.add_development_dependency('isolate', '~>
|
53
|
+
s.add_development_dependency('isolate', '~> 2.1.2')
|
53
54
|
|
54
55
|
# s.licenses = %w(GPLv2 Ruby) # licenses= method is not in older RubyGems
|
55
56
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unicorn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: -766259887
|
5
|
+
prerelease: true
|
6
6
|
segments:
|
7
|
-
-
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version:
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
- 0pre1
|
10
|
+
version: 2.0.0pre1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Unicorn hackers
|
@@ -15,7 +15,8 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2010-10-06 00:00:00 +00:00
|
19
|
+
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: rack
|
@@ -32,21 +33,37 @@ dependencies:
|
|
32
33
|
type: :runtime
|
33
34
|
version_requirements: *id001
|
34
35
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
36
|
+
name: kgio
|
36
37
|
prerelease: false
|
37
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
39
|
none: false
|
39
40
|
requirements:
|
40
41
|
- - ~>
|
41
42
|
- !ruby/object:Gem::Version
|
42
|
-
hash:
|
43
|
+
hash: 31
|
43
44
|
segments:
|
44
|
-
-
|
45
|
-
-
|
45
|
+
- 1
|
46
|
+
- 2
|
46
47
|
- 0
|
47
|
-
version:
|
48
|
-
type: :
|
48
|
+
version: 1.2.0
|
49
|
+
type: :runtime
|
49
50
|
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: isolate
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ~>
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 15
|
60
|
+
segments:
|
61
|
+
- 2
|
62
|
+
- 1
|
63
|
+
- 2
|
64
|
+
version: 2.1.2
|
65
|
+
type: :development
|
66
|
+
version_requirements: *id003
|
50
67
|
description: |-
|
51
68
|
Unicorn is an HTTP server for Rack applications designed to only serve
|
52
69
|
fast clients on low-latency, high-bandwidth connections and take
|
@@ -83,11 +100,14 @@ extra_rdoc_files:
|
|
83
100
|
- lib/unicorn/const.rb
|
84
101
|
- lib/unicorn/http_request.rb
|
85
102
|
- lib/unicorn/http_response.rb
|
103
|
+
- lib/unicorn/http_server.rb
|
86
104
|
- lib/unicorn/launcher.rb
|
87
105
|
- lib/unicorn/oob_gc.rb
|
88
106
|
- lib/unicorn/socket_helper.rb
|
89
107
|
- lib/unicorn/tee_input.rb
|
108
|
+
- lib/unicorn/tmpio.rb
|
90
109
|
- lib/unicorn/util.rb
|
110
|
+
- lib/unicorn/worker.rb
|
91
111
|
- ext/unicorn_http/unicorn_http.c
|
92
112
|
- ISSUES
|
93
113
|
- Sandbox
|
@@ -150,14 +170,18 @@ files:
|
|
150
170
|
- lib/unicorn/const.rb
|
151
171
|
- lib/unicorn/http_request.rb
|
152
172
|
- lib/unicorn/http_response.rb
|
173
|
+
- lib/unicorn/http_server.rb
|
153
174
|
- lib/unicorn/launcher.rb
|
154
175
|
- lib/unicorn/oob_gc.rb
|
155
176
|
- lib/unicorn/socket_helper.rb
|
156
177
|
- lib/unicorn/tee_input.rb
|
178
|
+
- lib/unicorn/tmpio.rb
|
157
179
|
- lib/unicorn/util.rb
|
180
|
+
- lib/unicorn/worker.rb
|
158
181
|
- local.mk.sample
|
159
182
|
- man/man1/unicorn.1
|
160
183
|
- man/man1/unicorn_rails.1
|
184
|
+
- script/isolate_for_tests
|
161
185
|
- setup.rb
|
162
186
|
- t/.gitignore
|
163
187
|
- t/GNUmakefile
|
@@ -168,8 +192,6 @@ files:
|
|
168
192
|
- t/bin/utee
|
169
193
|
- t/env.ru
|
170
194
|
- t/my-tap-lib.sh
|
171
|
-
- t/oob_gc.ru
|
172
|
-
- t/oob_gc_path.ru
|
173
195
|
- t/pid.ru
|
174
196
|
- t/rails3-app/.gitignore
|
175
197
|
- t/rails3-app/Gemfile
|
@@ -213,19 +235,15 @@ files:
|
|
213
235
|
- t/t0007-working_directory_no_embed_cli.sh
|
214
236
|
- t/t0008-back_out_of_upgrade.sh
|
215
237
|
- t/t0009-winch_ttin.sh
|
238
|
+
- t/t0010-reap-logging.sh
|
216
239
|
- t/t0011-active-unix-socket.sh
|
217
|
-
- t/t0012-reload-empty-config.sh
|
218
|
-
- t/t0018-write-on-close.sh
|
219
240
|
- t/t0300-rails3-basic.sh
|
220
241
|
- t/t0301-rails3-missing-config-ru.sh
|
221
242
|
- t/t0302-rails3-alt-working_directory.sh
|
222
243
|
- t/t0303-rails3-alt-working_directory_config.ru.sh
|
223
244
|
- t/t0304-rails3-alt-working_directory_no_embed_cli.sh
|
224
|
-
- t/t9001-oob_gc.sh
|
225
|
-
- t/t9002-oob_gc-path.sh
|
226
245
|
- t/test-lib.sh
|
227
246
|
- t/test-rails3.sh
|
228
|
-
- t/write-on-close.ru
|
229
247
|
- test/aggregate.rb
|
230
248
|
- test/benchmark/README
|
231
249
|
- test/benchmark/dd.ru
|
@@ -321,11 +339,13 @@ files:
|
|
321
339
|
- test/unit/test_upload.rb
|
322
340
|
- test/unit/test_util.rb
|
323
341
|
- unicorn.gemspec
|
342
|
+
has_rdoc: true
|
324
343
|
homepage: http://unicorn.bogomips.org/
|
325
344
|
licenses: []
|
326
345
|
|
327
346
|
post_install_message:
|
328
347
|
rdoc_options:
|
348
|
+
- -Na
|
329
349
|
- -t
|
330
350
|
- "Unicorn: Rack HTTP server for fast clients and Unix"
|
331
351
|
require_paths:
|
@@ -343,16 +363,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
343
363
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
344
364
|
none: false
|
345
365
|
requirements:
|
346
|
-
- - "
|
366
|
+
- - ">"
|
347
367
|
- !ruby/object:Gem::Version
|
348
|
-
hash:
|
368
|
+
hash: 25
|
349
369
|
segments:
|
350
|
-
-
|
351
|
-
|
370
|
+
- 1
|
371
|
+
- 3
|
372
|
+
- 1
|
373
|
+
version: 1.3.1
|
352
374
|
requirements: []
|
353
375
|
|
354
376
|
rubyforge_project: mongrel
|
355
|
-
rubygems_version: 1.7
|
377
|
+
rubygems_version: 1.3.7
|
356
378
|
signing_key:
|
357
379
|
specification_version: 3
|
358
380
|
summary: Rack HTTP server for fast clients and Unix
|
data/t/oob_gc.ru
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
#\-E none
|
2
|
-
require 'unicorn/oob_gc'
|
3
|
-
use Rack::ContentLength
|
4
|
-
use Rack::ContentType, "text/plain"
|
5
|
-
use Unicorn::OobGC
|
6
|
-
$gc_started = false
|
7
|
-
|
8
|
-
# Mock GC.start
|
9
|
-
def GC.start
|
10
|
-
ObjectSpace.each_object(BasicSocket) do |x|
|
11
|
-
next if Unicorn::HttpServer::LISTENERS.include?(x)
|
12
|
-
x.closed? or abort "not closed #{x}"
|
13
|
-
end
|
14
|
-
$gc_started = true
|
15
|
-
end
|
16
|
-
run lambda { |env|
|
17
|
-
if "/gc_reset" == env["PATH_INFO"] && "POST" == env["REQUEST_METHOD"]
|
18
|
-
$gc_started = false
|
19
|
-
end
|
20
|
-
[ 200, {}, [ "#$gc_started\n" ] ]
|
21
|
-
}
|
data/t/oob_gc_path.ru
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
#\-E none
|
2
|
-
require 'unicorn/oob_gc'
|
3
|
-
use Rack::ContentLength
|
4
|
-
use Rack::ContentType, "text/plain"
|
5
|
-
use Unicorn::OobGC, 5, /BAD/
|
6
|
-
$gc_started = false
|
7
|
-
|
8
|
-
# Mock GC.start
|
9
|
-
def GC.start
|
10
|
-
ObjectSpace.each_object(BasicSocket) do |x|
|
11
|
-
next if Unicorn::HttpServer::LISTENERS.include?(x)
|
12
|
-
x.closed? or abort "not closed #{x}"
|
13
|
-
end
|
14
|
-
$gc_started = true
|
15
|
-
end
|
16
|
-
run lambda { |env|
|
17
|
-
if "/gc_reset" == env["PATH_INFO"] && "POST" == env["REQUEST_METHOD"]
|
18
|
-
$gc_started = false
|
19
|
-
end
|
20
|
-
[ 200, {}, [ "#$gc_started\n" ] ]
|
21
|
-
}
|
@@ -1,82 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
. ./test-lib.sh
|
3
|
-
t_plan 9 "reloading unset config resets defaults"
|
4
|
-
|
5
|
-
t_begin "setup and start" && {
|
6
|
-
unicorn_setup
|
7
|
-
rtmpfiles unicorn_config_orig before_reload after_reload
|
8
|
-
cat $unicorn_config > $unicorn_config_orig
|
9
|
-
cat >> $unicorn_config <<EOF
|
10
|
-
logger Logger.new(STDOUT)
|
11
|
-
preload_app true
|
12
|
-
timeout 0x7fffffff
|
13
|
-
worker_processes 2
|
14
|
-
after_fork { |s,w| }
|
15
|
-
\$dump_cfg = lambda { |fp,srv|
|
16
|
-
defaults = Unicorn::Configurator::DEFAULTS
|
17
|
-
defaults.keys.map { |x| x.to_s }.sort.each do |key|
|
18
|
-
next if key =~ %r{\Astd(?:err|out)_path\z}
|
19
|
-
key = key.to_sym
|
20
|
-
def_value = defaults[key]
|
21
|
-
srv_value = srv.__send__(key)
|
22
|
-
fp << "#{key}|#{srv_value}|#{def_value}\\n"
|
23
|
-
end
|
24
|
-
}
|
25
|
-
before_fork { |s,w|
|
26
|
-
File.open("$before_reload", "a") { |fp| \$dump_cfg.call(fp, s) }
|
27
|
-
}
|
28
|
-
before_exec { |s| }
|
29
|
-
EOF
|
30
|
-
unicorn -D -c $unicorn_config env.ru
|
31
|
-
unicorn_wait_start
|
32
|
-
}
|
33
|
-
|
34
|
-
t_begin "ensure worker is started" && {
|
35
|
-
curl -sSf http://$listen/ > $tmp
|
36
|
-
}
|
37
|
-
|
38
|
-
t_begin "replace config file with original(-ish)" && {
|
39
|
-
grep -v ^pid < $unicorn_config_orig > $unicorn_config
|
40
|
-
cat >> $unicorn_config <<EOF
|
41
|
-
before_fork { |s,w|
|
42
|
-
File.open("$after_reload", "a") { |fp| \$dump_cfg.call(fp, s) }
|
43
|
-
}
|
44
|
-
EOF
|
45
|
-
}
|
46
|
-
|
47
|
-
t_begin "reload signal succeeds" && {
|
48
|
-
kill -HUP $unicorn_pid
|
49
|
-
while ! egrep '(done|error) reloading' $r_err >/dev/null
|
50
|
-
do
|
51
|
-
sleep 1
|
52
|
-
done
|
53
|
-
|
54
|
-
grep 'done reloading' $r_err >/dev/null
|
55
|
-
}
|
56
|
-
|
57
|
-
t_begin "ensure worker is started" && {
|
58
|
-
curl -sSf http://$listen/ > $tmp
|
59
|
-
}
|
60
|
-
|
61
|
-
t_begin "pid file no longer exists" && {
|
62
|
-
if test -f $pid
|
63
|
-
then
|
64
|
-
die "pid=$pid should not exist"
|
65
|
-
fi
|
66
|
-
}
|
67
|
-
|
68
|
-
t_begin "killing succeeds" && {
|
69
|
-
kill $unicorn_pid
|
70
|
-
}
|
71
|
-
|
72
|
-
t_begin "check stderr" && {
|
73
|
-
check_stderr
|
74
|
-
}
|
75
|
-
|
76
|
-
t_begin "ensure reloading restored settings" && {
|
77
|
-
awk < $after_reload -F'|' '
|
78
|
-
$1 != "before_fork" && $2 != $3 { print $0; exit(1) }
|
79
|
-
'
|
80
|
-
}
|
81
|
-
|
82
|
-
t_done
|
data/t/t0018-write-on-close.sh
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
. ./test-lib.sh
|
3
|
-
t_plan 4 "write-on-close tests for funky response-bodies"
|
4
|
-
|
5
|
-
t_begin "setup and start" && {
|
6
|
-
unicorn_setup
|
7
|
-
unicorn -D -c $unicorn_config write-on-close.ru
|
8
|
-
unicorn_wait_start
|
9
|
-
}
|
10
|
-
|
11
|
-
t_begin "write-on-close response body succeeds" && {
|
12
|
-
test xGoodbye = x"$(curl -sSf http://$listen/)"
|
13
|
-
}
|
14
|
-
|
15
|
-
t_begin "killing succeeds" && {
|
16
|
-
kill $unicorn_pid
|
17
|
-
}
|
18
|
-
|
19
|
-
t_begin "check stderr" && {
|
20
|
-
check_stderr
|
21
|
-
}
|
22
|
-
|
23
|
-
t_done
|
data/t/t9001-oob_gc.sh
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
. ./test-lib.sh
|
3
|
-
t_plan 9 "OobGC test"
|
4
|
-
|
5
|
-
t_begin "setup and start" && {
|
6
|
-
unicorn_setup
|
7
|
-
unicorn -D -c $unicorn_config oob_gc.ru
|
8
|
-
unicorn_wait_start
|
9
|
-
}
|
10
|
-
|
11
|
-
t_begin "test default interval (4 requests)" && {
|
12
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
13
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
14
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
15
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
16
|
-
}
|
17
|
-
|
18
|
-
t_begin "GC starting-request returns immediately" && {
|
19
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
20
|
-
}
|
21
|
-
|
22
|
-
t_begin "GC is started after 5 requests" && {
|
23
|
-
test xtrue = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
24
|
-
}
|
25
|
-
|
26
|
-
t_begin "reset GC" && {
|
27
|
-
test xfalse = x$(curl -vsSf -X POST http://$listen/gc_reset 2>> $tmp)
|
28
|
-
}
|
29
|
-
|
30
|
-
t_begin "test default interval again (3 requests)" && {
|
31
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
32
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
33
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
34
|
-
}
|
35
|
-
|
36
|
-
t_begin "GC is started after 5 requests" && {
|
37
|
-
test xtrue = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
38
|
-
}
|
39
|
-
|
40
|
-
t_begin "killing succeeds" && {
|
41
|
-
kill -QUIT $unicorn_pid
|
42
|
-
}
|
43
|
-
|
44
|
-
t_begin "check_stderr" && check_stderr
|
45
|
-
dbgcat r_err
|
46
|
-
|
47
|
-
t_done
|
data/t/t9002-oob_gc-path.sh
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
. ./test-lib.sh
|
3
|
-
t_plan 12 "OobGC test with limited path"
|
4
|
-
|
5
|
-
t_begin "setup and start" && {
|
6
|
-
unicorn_setup
|
7
|
-
unicorn -D -c $unicorn_config oob_gc_path.ru
|
8
|
-
unicorn_wait_start
|
9
|
-
}
|
10
|
-
|
11
|
-
t_begin "test default is noop" && {
|
12
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
13
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
14
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
15
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
16
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
17
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
18
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
19
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
20
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
21
|
-
}
|
22
|
-
|
23
|
-
t_begin "4 bad requests to bump counter" && {
|
24
|
-
test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
|
25
|
-
test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
|
26
|
-
test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
|
27
|
-
test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
|
28
|
-
}
|
29
|
-
|
30
|
-
t_begin "GC-starting request returns immediately" && {
|
31
|
-
test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
|
32
|
-
}
|
33
|
-
|
34
|
-
t_begin "GC was started after 5 requests" && {
|
35
|
-
test xtrue = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
36
|
-
}
|
37
|
-
|
38
|
-
t_begin "reset GC" && {
|
39
|
-
test xfalse = x$(curl -vsSf -X POST http://$listen/gc_reset 2>> $tmp)
|
40
|
-
}
|
41
|
-
|
42
|
-
t_begin "test default is noop" && {
|
43
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
44
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
45
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
46
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
47
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
48
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
49
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
50
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
51
|
-
test xfalse = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
52
|
-
}
|
53
|
-
|
54
|
-
t_begin "4 bad requests to bump counter" && {
|
55
|
-
test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
|
56
|
-
test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
|
57
|
-
test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
|
58
|
-
test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
|
59
|
-
}
|
60
|
-
|
61
|
-
t_begin "GC-starting request returns immediately" && {
|
62
|
-
test xfalse = x$(curl -vsSf http://$listen/BAD 2>> $tmp)
|
63
|
-
}
|
64
|
-
|
65
|
-
t_begin "GC was started after 5 requests" && {
|
66
|
-
test xtrue = x$(curl -vsSf http://$listen/ 2>> $tmp)
|
67
|
-
}
|
68
|
-
|
69
|
-
t_begin "killing succeeds" && {
|
70
|
-
kill -QUIT $unicorn_pid
|
71
|
-
}
|
72
|
-
|
73
|
-
t_begin "check_stderr" && check_stderr
|
74
|
-
|
75
|
-
t_done
|