rainbows 0.94.0 → 0.95.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +1 -0
- data/.manifest +18 -0
- data/ChangeLog +394 -226
- data/GIT-VERSION-FILE +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +6 -4
- data/NEWS +18 -0
- data/README +13 -5
- data/Static_Files +71 -0
- data/TODO +12 -0
- data/Test_Suite +1 -1
- data/bin/rainbows +1 -4
- data/lib/rainbows/actor_spawn.rb +1 -1
- data/lib/rainbows/app_pool.rb +1 -1
- data/lib/rainbows/base.rb +79 -89
- data/lib/rainbows/byte_slice.rb +17 -0
- data/lib/rainbows/configurator.rb +46 -0
- data/lib/rainbows/const.rb +2 -2
- data/lib/rainbows/dev_fd_response.rb +52 -44
- data/lib/rainbows/error.rb +1 -0
- data/lib/rainbows/ev_core.rb +3 -2
- data/lib/rainbows/event_machine.rb +26 -24
- data/lib/rainbows/fiber/base.rb +30 -40
- data/lib/rainbows/fiber/body.rb +34 -0
- data/lib/rainbows/fiber/io.rb +28 -8
- data/lib/rainbows/fiber/queue.rb +1 -0
- data/lib/rainbows/fiber/rev.rb +4 -2
- data/lib/rainbows/fiber.rb +1 -0
- data/lib/rainbows/fiber_pool.rb +2 -2
- data/lib/rainbows/fiber_spawn.rb +2 -2
- data/lib/rainbows/http_response.rb +20 -31
- data/lib/rainbows/http_server.rb +3 -4
- data/lib/rainbows/max_body.rb +1 -0
- data/lib/rainbows/never_block/event_machine.rb +2 -0
- data/lib/rainbows/never_block.rb +5 -4
- data/lib/rainbows/queue_pool.rb +1 -0
- data/lib/rainbows/response/body.rb +119 -0
- data/lib/rainbows/response.rb +43 -0
- data/lib/rainbows/rev/client.rb +79 -9
- data/lib/rainbows/rev/core.rb +4 -0
- data/lib/rainbows/rev/deferred_response.rb +1 -44
- data/lib/rainbows/rev/heartbeat.rb +1 -0
- data/lib/rainbows/rev/master.rb +1 -0
- data/lib/rainbows/rev/sendfile.rb +26 -0
- data/lib/rainbows/rev/thread.rb +2 -1
- data/lib/rainbows/rev.rb +2 -0
- data/lib/rainbows/rev_fiber_spawn.rb +3 -1
- data/lib/rainbows/rev_thread_pool.rb +7 -5
- data/lib/rainbows/rev_thread_spawn.rb +2 -2
- data/lib/rainbows/revactor.rb +146 -146
- data/lib/rainbows/sendfile.rb +10 -21
- data/lib/rainbows/server_token.rb +39 -0
- data/lib/rainbows/stream_file.rb +14 -0
- data/lib/rainbows/tee_input.rb +1 -0
- data/lib/rainbows/thread_pool.rb +12 -7
- data/lib/rainbows/thread_spawn.rb +2 -3
- data/lib/rainbows/writer_thread_pool.rb +13 -7
- data/lib/rainbows/writer_thread_spawn.rb +12 -9
- data/lib/rainbows.rb +16 -45
- data/rainbows.gemspec +8 -8
- data/t/.gitignore +1 -1
- data/t/GNUmakefile +26 -16
- data/t/README +1 -1
- data/t/async-response-no-autochunk.ru +0 -1
- data/t/async-response.ru +0 -1
- data/t/cramp/rainsocket.ru +26 -0
- data/t/fork-sleep.ru +0 -1
- data/t/my-tap-lib.sh +3 -2
- data/t/simple-http_ActorSpawn.ru +9 -0
- data/t/t0009-broken-app.sh +1 -1
- data/t/t0009.ru +0 -1
- data/t/t0011-close-on-exec-set.sh +1 -1
- data/t/t0015-working_directory.sh +56 -0
- data/t/t0016-onenine-encoding-is-tricky.sh +28 -0
- data/t/t0016.rb +15 -0
- data/t/t0020-large-sendfile-response.sh +141 -0
- data/t/t0300-async_sinatra.sh +0 -6
- data/t/t0501-cramp-rainsocket.sh +38 -0
- data/t/t9001-sendfile-to-path.sh +5 -4
- data/t/t9002-server-token.sh +37 -0
- data/t/t9002.ru +4 -0
- data/t/test-lib.sh +1 -1
- data/t/test_isolate.rb +14 -11
- metadata +87 -18
data/t/t9001-sendfile-to-path.sh
CHANGED
@@ -4,25 +4,26 @@
|
|
4
4
|
t_plan 7 "Sendfile middleware test for $model"
|
5
5
|
|
6
6
|
t_begin "configure and start" && {
|
7
|
-
rtmpfiles
|
7
|
+
rtmpfiles curl_err
|
8
8
|
rainbows_setup
|
9
9
|
|
10
10
|
# do not allow default middleware to be loaded since it may
|
11
11
|
# kill body#to_path
|
12
12
|
rainbows -E none -D t9001.ru -c $unicorn_config
|
13
13
|
rainbows_wait_start
|
14
|
+
random_blob_sha1=$(rsha1 < random_blob)
|
14
15
|
}
|
15
16
|
|
16
17
|
t_begin "hit with curl" && {
|
17
|
-
curl -sSfv http://$listen/ > $
|
18
|
+
sha1=$(curl -sSfv http://$listen/ 2> $curl_err | rsha1)
|
18
19
|
}
|
19
20
|
|
20
21
|
t_begin "kill server" && {
|
21
22
|
kill $rainbows_pid
|
22
23
|
}
|
23
24
|
|
24
|
-
t_begin "
|
25
|
-
|
25
|
+
t_begin "SHA1 matches source" && {
|
26
|
+
test x$random_blob_sha1 = x$sha1
|
26
27
|
}
|
27
28
|
|
28
29
|
t_begin "no errors in Rainbows! stderr" && {
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
. ./test-lib.sh
|
3
|
+
case $model in
|
4
|
+
Base) ;;
|
5
|
+
*) exit 0 ;; # don't waste cycles on trivial stuff :P
|
6
|
+
esac
|
7
|
+
|
8
|
+
t_plan 6 "ServerToken Rack middleware test for $model"
|
9
|
+
|
10
|
+
t_begin "configure and start" && {
|
11
|
+
rtmpfiles curl_out curl_err
|
12
|
+
rainbows_setup
|
13
|
+
rainbows -D t9002.ru -c $unicorn_config
|
14
|
+
rainbows_wait_start
|
15
|
+
}
|
16
|
+
|
17
|
+
t_begin "hit with curl" && {
|
18
|
+
curl -sSfiI http://$listen/ > $curl_out 2> $curl_err
|
19
|
+
}
|
20
|
+
|
21
|
+
t_begin "kill server" && {
|
22
|
+
kill $rainbows_pid
|
23
|
+
}
|
24
|
+
|
25
|
+
t_begin "no errors in curl stderr" && {
|
26
|
+
test ! -s $curl_err
|
27
|
+
}
|
28
|
+
|
29
|
+
t_begin "no errors in Rainbows! stderr" && {
|
30
|
+
check_stderr
|
31
|
+
}
|
32
|
+
|
33
|
+
t_begin "Server: token added" && {
|
34
|
+
grep Server: $curl_out
|
35
|
+
}
|
36
|
+
|
37
|
+
t_done
|
data/t/t9002.ru
ADDED
data/t/test-lib.sh
CHANGED
data/t/test_isolate.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'isolate'
|
3
|
+
engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'
|
3
4
|
|
4
|
-
path = "tmp/isolate
|
5
|
+
path = "tmp/isolate/#{engine}-#{RUBY_VERSION}"
|
5
6
|
opts = {
|
6
7
|
:system => false,
|
7
8
|
# we want "ruby-1.8.7" and not "ruby-1.8", so disable multiruby
|
@@ -14,25 +15,27 @@ $stdout.reopen($stderr)
|
|
14
15
|
|
15
16
|
Isolate.now!(opts) do
|
16
17
|
gem 'rack', '1.1.0'
|
17
|
-
gem 'unicorn', '
|
18
|
+
gem 'unicorn', '1.1.0'
|
18
19
|
|
19
|
-
|
20
|
-
|
20
|
+
if engine == "ruby"
|
21
|
+
gem 'sendfile', '1.0.0' # next Rubinius should support this
|
21
22
|
|
22
|
-
|
23
|
+
gem 'iobuffer', '0.1.3'
|
24
|
+
gem 'rev', '0.3.2'
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
+
gem 'eventmachine', '0.12.10'
|
27
|
+
gem 'sinatra', '1.0.0'
|
28
|
+
gem 'async_sinatra', '0.2.1'
|
26
29
|
|
27
|
-
|
30
|
+
gem 'neverblock', '0.1.6.2'
|
31
|
+
gem 'cramp', '0.11'
|
32
|
+
end
|
28
33
|
|
29
|
-
if defined?(::Fiber)
|
34
|
+
if defined?(::Fiber) && engine == "ruby"
|
30
35
|
gem 'case', '0.5'
|
31
36
|
gem 'revactor', '0.1.5'
|
32
37
|
gem 'rack-fiber_pool', '0.9.0'
|
33
38
|
end
|
34
|
-
|
35
|
-
gem 'cramp', '0.11'
|
36
39
|
end
|
37
40
|
|
38
41
|
$stdout.reopen(old_out)
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rainbows
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 355
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 95
|
9
|
+
- 0
|
10
|
+
version: 0.95.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Rainbows! hackers
|
@@ -9,38 +15,68 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2010-
|
18
|
+
date: 2010-07-10 00:00:00 +00:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
22
|
+
name: rack
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 13
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 1
|
33
|
+
version: "1.1"
|
17
34
|
type: :runtime
|
18
|
-
|
19
|
-
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: unicorn
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
20
41
|
requirements:
|
21
42
|
- - ">="
|
22
43
|
- !ruby/object:Gem::Version
|
23
|
-
|
44
|
+
hash: 19
|
45
|
+
segments:
|
46
|
+
- 1
|
47
|
+
- 1
|
48
|
+
- 0
|
49
|
+
version: 1.1.0
|
24
50
|
- - <
|
25
51
|
- !ruby/object:Gem::Version
|
52
|
+
hash: 15
|
53
|
+
segments:
|
54
|
+
- 2
|
55
|
+
- 0
|
56
|
+
- 0
|
26
57
|
version: 2.0.0
|
27
|
-
|
58
|
+
type: :runtime
|
59
|
+
version_requirements: *id002
|
28
60
|
- !ruby/object:Gem::Dependency
|
29
61
|
name: isolate
|
30
|
-
|
31
|
-
|
32
|
-
|
62
|
+
prerelease: false
|
63
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
33
65
|
requirements:
|
34
66
|
- - ~>
|
35
67
|
- !ruby/object:Gem::Version
|
36
|
-
|
37
|
-
|
68
|
+
hash: 11
|
69
|
+
segments:
|
70
|
+
- 2
|
71
|
+
- 1
|
72
|
+
- 0
|
73
|
+
version: 2.1.0
|
74
|
+
type: :development
|
75
|
+
version_requirements: *id003
|
38
76
|
description: |-
|
39
77
|
\Rainbows! is an HTTP server for sleepy Rack applications. It is based on
|
40
78
|
Unicorn, but designed to handle applications that expect long
|
41
|
-
request/response times and/or slow clients.
|
42
|
-
heavily bound by slow external network dependencies, consider Unicorn
|
43
|
-
instead as it simpler and easier to debug.
|
79
|
+
request/response times and/or slow clients.
|
44
80
|
email: rainbows-talk@rubyforge.org
|
45
81
|
executables:
|
46
82
|
- rainbows
|
@@ -54,6 +90,8 @@ extra_rdoc_files:
|
|
54
90
|
- lib/rainbows/actor_spawn.rb
|
55
91
|
- lib/rainbows/app_pool.rb
|
56
92
|
- lib/rainbows/base.rb
|
93
|
+
- lib/rainbows/byte_slice.rb
|
94
|
+
- lib/rainbows/configurator.rb
|
57
95
|
- lib/rainbows/const.rb
|
58
96
|
- lib/rainbows/dev_fd_response.rb
|
59
97
|
- lib/rainbows/error.rb
|
@@ -61,6 +99,7 @@ extra_rdoc_files:
|
|
61
99
|
- lib/rainbows/event_machine.rb
|
62
100
|
- lib/rainbows/fiber.rb
|
63
101
|
- lib/rainbows/fiber/base.rb
|
102
|
+
- lib/rainbows/fiber/body.rb
|
64
103
|
- lib/rainbows/fiber/io.rb
|
65
104
|
- lib/rainbows/fiber/queue.rb
|
66
105
|
- lib/rainbows/fiber/rev.rb
|
@@ -72,18 +111,23 @@ extra_rdoc_files:
|
|
72
111
|
- lib/rainbows/never_block.rb
|
73
112
|
- lib/rainbows/never_block/event_machine.rb
|
74
113
|
- lib/rainbows/queue_pool.rb
|
114
|
+
- lib/rainbows/response.rb
|
115
|
+
- lib/rainbows/response/body.rb
|
75
116
|
- lib/rainbows/rev.rb
|
76
117
|
- lib/rainbows/rev/client.rb
|
77
118
|
- lib/rainbows/rev/core.rb
|
78
119
|
- lib/rainbows/rev/deferred_response.rb
|
79
120
|
- lib/rainbows/rev/heartbeat.rb
|
80
121
|
- lib/rainbows/rev/master.rb
|
122
|
+
- lib/rainbows/rev/sendfile.rb
|
81
123
|
- lib/rainbows/rev/thread.rb
|
82
124
|
- lib/rainbows/rev_fiber_spawn.rb
|
83
125
|
- lib/rainbows/rev_thread_pool.rb
|
84
126
|
- lib/rainbows/rev_thread_spawn.rb
|
85
127
|
- lib/rainbows/revactor.rb
|
86
128
|
- lib/rainbows/sendfile.rb
|
129
|
+
- lib/rainbows/server_token.rb
|
130
|
+
- lib/rainbows/stream_file.rb
|
87
131
|
- lib/rainbows/tee_input.rb
|
88
132
|
- lib/rainbows/thread_pool.rb
|
89
133
|
- lib/rainbows/thread_spawn.rb
|
@@ -98,6 +142,7 @@ extra_rdoc_files:
|
|
98
142
|
- vs_Unicorn
|
99
143
|
- Summary
|
100
144
|
- Test_Suite
|
145
|
+
- Static_Files
|
101
146
|
files:
|
102
147
|
- .document
|
103
148
|
- .gitignore
|
@@ -119,6 +164,7 @@ files:
|
|
119
164
|
- README
|
120
165
|
- Rakefile
|
121
166
|
- SIGNALS
|
167
|
+
- Static_Files
|
122
168
|
- Summary
|
123
169
|
- TODO
|
124
170
|
- TUNING
|
@@ -128,6 +174,8 @@ files:
|
|
128
174
|
- lib/rainbows/actor_spawn.rb
|
129
175
|
- lib/rainbows/app_pool.rb
|
130
176
|
- lib/rainbows/base.rb
|
177
|
+
- lib/rainbows/byte_slice.rb
|
178
|
+
- lib/rainbows/configurator.rb
|
131
179
|
- lib/rainbows/const.rb
|
132
180
|
- lib/rainbows/dev_fd_response.rb
|
133
181
|
- lib/rainbows/error.rb
|
@@ -135,6 +183,7 @@ files:
|
|
135
183
|
- lib/rainbows/event_machine.rb
|
136
184
|
- lib/rainbows/fiber.rb
|
137
185
|
- lib/rainbows/fiber/base.rb
|
186
|
+
- lib/rainbows/fiber/body.rb
|
138
187
|
- lib/rainbows/fiber/io.rb
|
139
188
|
- lib/rainbows/fiber/queue.rb
|
140
189
|
- lib/rainbows/fiber/rev.rb
|
@@ -146,18 +195,23 @@ files:
|
|
146
195
|
- lib/rainbows/never_block.rb
|
147
196
|
- lib/rainbows/never_block/event_machine.rb
|
148
197
|
- lib/rainbows/queue_pool.rb
|
198
|
+
- lib/rainbows/response.rb
|
199
|
+
- lib/rainbows/response/body.rb
|
149
200
|
- lib/rainbows/rev.rb
|
150
201
|
- lib/rainbows/rev/client.rb
|
151
202
|
- lib/rainbows/rev/core.rb
|
152
203
|
- lib/rainbows/rev/deferred_response.rb
|
153
204
|
- lib/rainbows/rev/heartbeat.rb
|
154
205
|
- lib/rainbows/rev/master.rb
|
206
|
+
- lib/rainbows/rev/sendfile.rb
|
155
207
|
- lib/rainbows/rev/thread.rb
|
156
208
|
- lib/rainbows/rev_fiber_spawn.rb
|
157
209
|
- lib/rainbows/rev_thread_pool.rb
|
158
210
|
- lib/rainbows/rev_thread_spawn.rb
|
159
211
|
- lib/rainbows/revactor.rb
|
160
212
|
- lib/rainbows/sendfile.rb
|
213
|
+
- lib/rainbows/server_token.rb
|
214
|
+
- lib/rainbows/stream_file.rb
|
161
215
|
- lib/rainbows/tee_input.rb
|
162
216
|
- lib/rainbows/thread_pool.rb
|
163
217
|
- lib/rainbows/thread_spawn.rb
|
@@ -183,6 +237,7 @@ files:
|
|
183
237
|
- t/bin/utee
|
184
238
|
- t/content-md5.ru
|
185
239
|
- t/cramp/README
|
240
|
+
- t/cramp/rainsocket.ru
|
186
241
|
- t/cramp/streaming.ru
|
187
242
|
- t/env.ru
|
188
243
|
- t/env_rack_env.ru
|
@@ -193,6 +248,7 @@ files:
|
|
193
248
|
- t/rack-fiber_pool/app.ru
|
194
249
|
- t/sha1-random-size.ru
|
195
250
|
- t/sha1.ru
|
251
|
+
- t/simple-http_ActorSpawn.ru
|
196
252
|
- t/simple-http_Base.ru
|
197
253
|
- t/simple-http_EventMachine.ru
|
198
254
|
- t/simple-http_FiberPool.ru
|
@@ -226,6 +282,10 @@ files:
|
|
226
282
|
- t/t0012-spurious-wakeups-quiet.sh
|
227
283
|
- t/t0013-reload-bad-config.sh
|
228
284
|
- t/t0014-config-conflict.sh
|
285
|
+
- t/t0015-working_directory.sh
|
286
|
+
- t/t0016-onenine-encoding-is-tricky.sh
|
287
|
+
- t/t0016.rb
|
288
|
+
- t/t0020-large-sendfile-response.sh
|
229
289
|
- t/t0100-rack-input-hammer-chunked.sh
|
230
290
|
- t/t0100-rack-input-hammer-content-length.sh
|
231
291
|
- t/t0101-rack-input-trailer.sh
|
@@ -239,12 +299,15 @@ files:
|
|
239
299
|
- t/t0400-em-async-app.sh
|
240
300
|
- t/t0401-em-async-tailer.sh
|
241
301
|
- t/t0500-cramp-streaming.sh
|
302
|
+
- t/t0501-cramp-rainsocket.sh
|
242
303
|
- t/t0600-rack-fiber_pool.sh
|
243
304
|
- t/t0700-app-deferred.sh
|
244
305
|
- t/t9000-rack-app-pool.sh
|
245
306
|
- t/t9000.ru
|
246
307
|
- t/t9001-sendfile-to-path.sh
|
247
308
|
- t/t9001.ru
|
309
|
+
- t/t9002-server-token.sh
|
310
|
+
- t/t9002.ru
|
248
311
|
- t/test-lib.sh
|
249
312
|
- t/test_isolate.rb
|
250
313
|
- t/worker-follows-master-to-death.ru
|
@@ -261,21 +324,27 @@ rdoc_options:
|
|
261
324
|
require_paths:
|
262
325
|
- lib
|
263
326
|
required_ruby_version: !ruby/object:Gem::Requirement
|
327
|
+
none: false
|
264
328
|
requirements:
|
265
329
|
- - ">="
|
266
330
|
- !ruby/object:Gem::Version
|
331
|
+
hash: 3
|
332
|
+
segments:
|
333
|
+
- 0
|
267
334
|
version: "0"
|
268
|
-
version:
|
269
335
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
336
|
+
none: false
|
270
337
|
requirements:
|
271
338
|
- - ">="
|
272
339
|
- !ruby/object:Gem::Version
|
340
|
+
hash: 3
|
341
|
+
segments:
|
342
|
+
- 0
|
273
343
|
version: "0"
|
274
|
-
version:
|
275
344
|
requirements: []
|
276
345
|
|
277
346
|
rubyforge_project: rainbows
|
278
|
-
rubygems_version: 1.3.
|
347
|
+
rubygems_version: 1.3.7
|
279
348
|
signing_key:
|
280
349
|
specification_version: 3
|
281
350
|
summary: Unicorn for sleepy apps and slow clients
|