mongrel 1.1.5-x86-mingw32 → 1.2.0.pre2-x86-mingw32
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/History.txt +68 -0
- data/{Manifest → Manifest.txt} +15 -15
- data/{README → README.txt} +6 -0
- data/Rakefile +8 -0
- data/bin/mongrel_rails +5 -4
- data/examples/camping/blog.rb +0 -0
- data/ext/{http11_java → http11}/Http11Service.java +0 -0
- data/ext/http11/ext_help.h +1 -0
- data/ext/http11/http11.c +152 -20
- data/ext/http11/http11_parser.c +262 -240
- data/ext/http11/http11_parser.java.rl +3 -14
- data/ext/http11/http11_parser.rl +19 -18
- data/ext/http11/http11_parser_common.rl +1 -1
- data/ext/{http11_java → http11}/org/jruby/mongrel/Http11.java +37 -62
- data/ext/http11/org/jruby/mongrel/Http11Parser.java +486 -0
- data/lib/1.8/http11.so +0 -0
- data/lib/1.9/http11.so +0 -0
- data/lib/mongrel.rb +16 -5
- data/lib/mongrel/cgi.rb +2 -2
- data/lib/mongrel/command.rb +1 -3
- data/lib/mongrel/configurator.rb +5 -5
- data/lib/mongrel/const.rb +1 -1
- data/lib/mongrel/handlers.rb +5 -5
- data/lib/mongrel/http_request.rb +1 -1
- data/lib/mongrel/http_response.rb +4 -1
- data/lib/mongrel/rails.rb +1 -1
- data/tasks/gem.rake +28 -0
- data/tasks/native.rake +24 -0
- data/tasks/ragel.rake +20 -0
- data/test/test_conditional.rb +2 -2
- data/test/test_configurator.rb +4 -5
- data/test/test_handlers.rb +33 -24
- data/test/test_redirect_handler.rb +2 -3
- data/test/test_request_progress.rb +4 -5
- data/test/test_ws.rb +2 -0
- data/test/testhelp.rb +1 -9
- metadata +86 -86
- data.tar.gz.sig +0 -4
- data/CHANGELOG +0 -18
- data/examples/mongrel_simple_ctrl.rb +0 -92
- data/examples/mongrel_simple_service.rb +0 -116
- data/ext/http11_java/org/jruby/mongrel/Http11Parser.java +0 -572
- data/lib/http11.so +0 -0
- data/mongrel-public_cert.pem +0 -20
- data/mongrel.gemspec +0 -242
- metadata.gz.sig +0 -1
data/lib/1.8/http11.so
ADDED
Binary file
|
data/lib/1.9/http11.so
ADDED
Binary file
|
data/lib/mongrel.rb
CHANGED
@@ -9,7 +9,13 @@ require 'uri'
|
|
9
9
|
require 'stringio'
|
10
10
|
|
11
11
|
# Compiled Mongrel extension
|
12
|
-
|
12
|
+
# support multiple ruby version (fat binaries under windows)
|
13
|
+
begin
|
14
|
+
require 'http11'
|
15
|
+
rescue LoadError
|
16
|
+
RUBY_VERSION =~ /(\d+.\d+)/
|
17
|
+
require "#{$1}/http11"
|
18
|
+
end
|
13
19
|
|
14
20
|
# Gem conditional loader
|
15
21
|
require 'mongrel/gems'
|
@@ -200,7 +206,7 @@ module Mongrel
|
|
200
206
|
STDERR.puts "#{Time.now}: Client error: #{e.inspect}"
|
201
207
|
STDERR.puts e.backtrace.join("\n")
|
202
208
|
end
|
203
|
-
request.body.
|
209
|
+
request.body.close! if request and request.body.class == Tempfile
|
204
210
|
end
|
205
211
|
end
|
206
212
|
|
@@ -320,10 +326,15 @@ module Mongrel
|
|
320
326
|
def register(uri, handler, in_front=false)
|
321
327
|
begin
|
322
328
|
@classifier.register(uri, [handler])
|
323
|
-
rescue URIClassifier::RegistrationError
|
329
|
+
rescue URIClassifier::RegistrationError => e
|
324
330
|
handlers = @classifier.resolve(uri)[2]
|
325
|
-
|
326
|
-
|
331
|
+
if handlers
|
332
|
+
# Already registered
|
333
|
+
method_name = in_front ? 'unshift' : 'push'
|
334
|
+
handlers.send(method_name, handler)
|
335
|
+
else
|
336
|
+
raise
|
337
|
+
end
|
327
338
|
end
|
328
339
|
handler.listener = self
|
329
340
|
end
|
data/lib/mongrel/cgi.rb
CHANGED
@@ -26,7 +26,7 @@ module Mongrel
|
|
26
26
|
# Refer to DirHandler#can_serve for more information on this.
|
27
27
|
class CGIWrapper < ::CGI
|
28
28
|
public :env_table
|
29
|
-
attr_reader :
|
29
|
+
attr_reader :head
|
30
30
|
attr_accessor :handler
|
31
31
|
# Set this to false if you want calls to CGIWrapper.out to not actually send
|
32
32
|
# the response until you force it.
|
@@ -105,7 +105,7 @@ module Mongrel
|
|
105
105
|
when Hash
|
106
106
|
cookie.each_value {|c| to['Set-Cookie'] = c.to_s}
|
107
107
|
else
|
108
|
-
to['Set-Cookie'] =
|
108
|
+
to['Set-Cookie'] = head['cookie'].to_s
|
109
109
|
end
|
110
110
|
|
111
111
|
@head.delete('cookie')
|
data/lib/mongrel/command.rb
CHANGED
@@ -61,9 +61,7 @@ module Mongrel
|
|
61
61
|
# I need to add my own -v definition to prevent the -v from exiting by default as well.
|
62
62
|
@opt.on_tail("--version", "Show version") do
|
63
63
|
@done_validating = true
|
64
|
-
|
65
|
-
puts "Version #{Mongrel::Const::MONGREL_VERSION}"
|
66
|
-
end
|
64
|
+
puts "Version #{Mongrel::Const::MONGREL_VERSION}"
|
67
65
|
end
|
68
66
|
|
69
67
|
@opt.parse! argv
|
data/lib/mongrel/configurator.rb
CHANGED
@@ -81,13 +81,13 @@ module Mongrel
|
|
81
81
|
|
82
82
|
# Writes the PID file if we're not on Windows.
|
83
83
|
def write_pid_file
|
84
|
-
if RUBY_PLATFORM !~ /mswin
|
84
|
+
if RUBY_PLATFORM !~ /mingw|mswin/
|
85
85
|
log "Writing PID file to #{@pid_file}"
|
86
86
|
open(@pid_file,"w") {|f| f.write(Process.pid) }
|
87
87
|
open(@pid_file,"w") do |f|
|
88
88
|
f.write(Process.pid)
|
89
89
|
File.chmod(0644, @pid_file)
|
90
|
-
end
|
90
|
+
end
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
@@ -185,7 +185,7 @@ module Mongrel
|
|
185
185
|
def daemonize(options={})
|
186
186
|
ops = resolve_defaults(options)
|
187
187
|
# save this for later since daemonize will hose it
|
188
|
-
if RUBY_PLATFORM !~ /mswin
|
188
|
+
if RUBY_PLATFORM !~ /mingw|mswin/
|
189
189
|
require 'daemons/daemonize'
|
190
190
|
|
191
191
|
logfile = ops[:log_file]
|
@@ -344,7 +344,7 @@ module Mongrel
|
|
344
344
|
# it reads it in and does an eval on the contents passing in the right
|
345
345
|
# binding so they can put their own Configurator statements.
|
346
346
|
def run_config(script)
|
347
|
-
open(script) {|f| eval(f.read, proc {self}) }
|
347
|
+
open(script) {|f| eval(f.read, proc {self}.binding) }
|
348
348
|
end
|
349
349
|
|
350
350
|
# Sets up the standard signal handlers that are used on most Ruby
|
@@ -366,7 +366,7 @@ module Mongrel
|
|
366
366
|
# clean up the pid file always
|
367
367
|
at_exit { remove_pid_file }
|
368
368
|
|
369
|
-
if RUBY_PLATFORM !~ /mswin
|
369
|
+
if RUBY_PLATFORM !~ /mingw|mswin/
|
370
370
|
# graceful shutdown
|
371
371
|
trap("TERM") { log "TERM signal received."; stop }
|
372
372
|
trap("USR1") { log "USR1 received, toggling $mongrel_debug_client to #{!$mongrel_debug_client}"; $mongrel_debug_client = !$mongrel_debug_client }
|
data/lib/mongrel/const.rb
CHANGED
data/lib/mongrel/handlers.rb
CHANGED
@@ -205,11 +205,11 @@ module Mongrel
|
|
205
205
|
# test to see if this is a conditional request, and test if
|
206
206
|
# the response would be identical to the last response
|
207
207
|
same_response = case
|
208
|
-
when modified_since && !last_response_time = Time.httpdate(modified_since) rescue nil
|
209
|
-
when modified_since && last_response_time > Time.now
|
210
|
-
when modified_since && mtime > last_response_time
|
211
|
-
when none_match && none_match == '*'
|
212
|
-
when none_match && !none_match.strip.split(/\s*,\s*/).include?(etag)
|
208
|
+
when modified_since && !last_response_time = Time.httpdate(modified_since) rescue nil then false
|
209
|
+
when modified_since && last_response_time > Time.now then false
|
210
|
+
when modified_since && mtime > last_response_time then false
|
211
|
+
when none_match && none_match == '*' then false
|
212
|
+
when none_match && !none_match.strip.split(/\s*,\s*/).include?(etag) then false
|
213
213
|
else modified_since || none_match # validation successful if we get this far and at least one of the header exists
|
214
214
|
end
|
215
215
|
|
data/lib/mongrel/http_request.rb
CHANGED
@@ -93,7 +93,7 @@ module Mongrel
|
|
93
93
|
STDERR.puts e.backtrace.join("\n")
|
94
94
|
# any errors means we should delete the file, including if the file is dumped
|
95
95
|
@socket.close rescue nil
|
96
|
-
@body.
|
96
|
+
@body.close! if @body.class == Tempfile
|
97
97
|
@body = nil # signals that there was a problem
|
98
98
|
end
|
99
99
|
end
|
@@ -75,7 +75,10 @@ module Mongrel
|
|
75
75
|
elsif @header_sent
|
76
76
|
raise "You have already sent the request headers."
|
77
77
|
else
|
78
|
-
|
78
|
+
# XXX Dubious ( http://mongrel.rubyforge.org/ticket/19 )
|
79
|
+
@header.out.close
|
80
|
+
@header = HeaderOut.new(StringIO.new)
|
81
|
+
|
79
82
|
@body.close
|
80
83
|
@body = StringIO.new
|
81
84
|
end
|
data/lib/mongrel/rails.rb
CHANGED
data/tasks/gem.rake
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'hoe'
|
2
|
+
|
3
|
+
HOE = Hoe.spec 'mongrel' do
|
4
|
+
self.rubyforge_name = 'mongrel'
|
5
|
+
developer 'Zed A. Shaw', 'mongrel-users@rubyforge.org'
|
6
|
+
|
7
|
+
spec_extras[:required_ruby_version] = Gem::Requirement.new('>= 1.8.6')
|
8
|
+
|
9
|
+
spec_extras[:extensions] = ["ext/http11/extconf.rb"]
|
10
|
+
spec_extras[:executables] = ['mongrel_rails']
|
11
|
+
|
12
|
+
extra_rdoc_files << 'LICENSE'
|
13
|
+
|
14
|
+
extra_deps << ['gem_plugin', '~> 0.2.3']
|
15
|
+
extra_deps << ['daemons', '~> 1.0.10']
|
16
|
+
|
17
|
+
extra_dev_deps << ['rake-compiler', "~> 0.7.0"]
|
18
|
+
|
19
|
+
clean_globs.push('test_*.log', 'log')
|
20
|
+
end
|
21
|
+
|
22
|
+
file "#{HOE.spec.name}.gemspec" => ['Rakefile', 'tasks/gem.rake'] do |t|
|
23
|
+
puts "Generating #{t.name}"
|
24
|
+
File.open(t.name, 'w') { |f| f.puts HOE.spec.to_yaml }
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "Generate or update the standalone gemspec file for the project"
|
28
|
+
task :gemspec => ["#{HOE.spec.name}.gemspec"]
|
data/tasks/native.rake
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# use rake-compiler for building the extension
|
2
|
+
require 'rake/extensiontask'
|
3
|
+
|
4
|
+
# build http11 C extension
|
5
|
+
Rake::ExtensionTask.new('http11', HOE.spec) do |ext|
|
6
|
+
# define target for extension (supporting fat binaries)
|
7
|
+
if RUBY_PLATFORM =~ /mingw|mswin/ then
|
8
|
+
RUBY_VERSION =~ /(\d+\.\d+)/
|
9
|
+
ext.lib_dir = "lib/#{$1}"
|
10
|
+
end
|
11
|
+
|
12
|
+
# define cross-compilation tasks when not on Windows.
|
13
|
+
unless RUBY_PLATFORM =~ /mingw|mswin/ then
|
14
|
+
ext.cross_compile = true
|
15
|
+
ext.cross_platform = ['i386-mswin32', 'i386-mingw32']
|
16
|
+
|
17
|
+
ext.cross_compiling do |gs|
|
18
|
+
gs.dependencies.delete gs.dependencies.find { |d| d.name == 'daemons' }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# ensure things are built prior testing
|
24
|
+
task :test => [:compile]
|
data/tasks/ragel.rake
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
# the following tasks ease the build of C file from Ragel one
|
3
|
+
|
4
|
+
file 'ext/http11/http11_parser.c' => ['ext/http11/http11_parser.rl'] do |t|
|
5
|
+
begin
|
6
|
+
sh "ragel #{t.prerequisites.last} -C -G2 -o #{t.name}"
|
7
|
+
rescue
|
8
|
+
fail "Could not build wrapper using Ragel (it failed or not installed?)"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
file 'ext/http11/org/jruby/mongrel/Http11Parser.java' => ['ext/http11/http11_parser.java.rl'] do |t|
|
13
|
+
begin
|
14
|
+
sh "ragel #{t.prerequisites.last} -J -G2 -o #{t.name}"
|
15
|
+
rescue
|
16
|
+
fail "Could not build wrapper using Ragel (it failed or not installed?)"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
task :ragel => (defined?(JRUBY_VERSION) ? 'ext/http11/org/jruby/mongrel/Http11Parser.java' : 'ext/http11/http11_parser.c')
|
data/test/test_conditional.rb
CHANGED
@@ -10,14 +10,14 @@ include Mongrel
|
|
10
10
|
|
11
11
|
class ConditionalResponseTest < Test::Unit::TestCase
|
12
12
|
def setup
|
13
|
-
@server = HttpServer.new('127.0.0.1',
|
13
|
+
@server = HttpServer.new('127.0.0.1', 3501)
|
14
14
|
@server.register('/', Mongrel::DirHandler.new('.'))
|
15
15
|
@server.run
|
16
16
|
|
17
17
|
@http = Net::HTTP.new(@server.host, @server.port)
|
18
18
|
|
19
19
|
# get the ETag and Last-Modified headers
|
20
|
-
@path = '/README'
|
20
|
+
@path = '/README.txt'
|
21
21
|
res = @http.start { |http| http.get(@path) }
|
22
22
|
assert_not_nil @etag = res['ETag']
|
23
23
|
assert_not_nil @last_modified = res['Last-Modified']
|
data/test/test_configurator.rb
CHANGED
@@ -30,11 +30,10 @@ class ConfiguratorTest < Test::Unit::TestCase
|
|
30
30
|
|
31
31
|
def test_base_handler_config
|
32
32
|
@config = nil
|
33
|
-
@port = process_based_port
|
34
33
|
|
35
34
|
redirect_test_io do
|
36
35
|
@config = Mongrel::Configurator.new :host => "localhost" do
|
37
|
-
listener :port =>
|
36
|
+
listener :port => 4501 do
|
38
37
|
# 2 in front should run, but the sentinel shouldn't since dirhandler processes the request
|
39
38
|
uri "/", :handler => plugin("/handlers/testplugin")
|
40
39
|
uri "/", :handler => plugin("/handlers/testplugin")
|
@@ -65,12 +64,12 @@ class ConfiguratorTest < Test::Unit::TestCase
|
|
65
64
|
assert listener.classifier.uris.include?("/test"), "/test not registered"
|
66
65
|
end
|
67
66
|
|
68
|
-
res = Net::HTTP.get(URI.parse(
|
67
|
+
res = Net::HTTP.get(URI.parse('http://localhost:4501/test'))
|
69
68
|
assert res != nil, "Didn't get a response"
|
70
69
|
assert $test_plugin_fired == 3, "Test filter plugin didn't run 3 times."
|
71
70
|
|
72
71
|
redirect_test_io do
|
73
|
-
res = Net::HTTP.get(URI.parse(
|
72
|
+
res = Net::HTTP.get(URI.parse('http://localhost:4501/'))
|
74
73
|
|
75
74
|
assert res != nil, "Didn't get a response"
|
76
75
|
assert $test_plugin_fired == 6, "Test filter plugin didn't run 6 times."
|
@@ -81,7 +80,7 @@ class ConfiguratorTest < Test::Unit::TestCase
|
|
81
80
|
end
|
82
81
|
|
83
82
|
assert_raise Errno::EBADF, Errno::ECONNREFUSED do
|
84
|
-
res = Net::HTTP.get(URI.parse("http://localhost
|
83
|
+
res = Net::HTTP.get(URI.parse("http://localhost:4501/"))
|
85
84
|
end
|
86
85
|
end
|
87
86
|
|
data/test/test_handlers.rb
CHANGED
@@ -34,11 +34,10 @@ end
|
|
34
34
|
class HandlersTest < Test::Unit::TestCase
|
35
35
|
|
36
36
|
def setup
|
37
|
-
@port = process_based_port
|
38
37
|
stats = Mongrel::StatisticsFilter.new(:sample_rate => 1)
|
39
38
|
|
40
|
-
@config = Mongrel::Configurator.new :host => '127.0.0.1' do
|
41
|
-
listener
|
39
|
+
@config = Mongrel::Configurator.new :host => '127.0.0.1', :port => 9998 do
|
40
|
+
listener do
|
42
41
|
uri "/", :handler => SimpleHandler.new
|
43
42
|
uri "/", :handler => stats
|
44
43
|
uri "/404", :handler => Mongrel::Error404Handler.new("Not found")
|
@@ -51,10 +50,8 @@ class HandlersTest < Test::Unit::TestCase
|
|
51
50
|
end
|
52
51
|
end
|
53
52
|
|
54
|
-
|
55
|
-
|
56
|
-
File.open("/#{@test_file}", 'w') do
|
57
|
-
# Do nothing
|
53
|
+
unless windows?
|
54
|
+
File.open("/tmp/testfile", 'w') { } # Do nothing
|
58
55
|
end
|
59
56
|
|
60
57
|
@config.run
|
@@ -62,40 +59,52 @@ class HandlersTest < Test::Unit::TestCase
|
|
62
59
|
|
63
60
|
def teardown
|
64
61
|
@config.stop(false, true)
|
65
|
-
File.delete "
|
62
|
+
File.delete "/tmp/testfile" unless windows?
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_registration_exception_is_not_lost
|
66
|
+
assert_raises(Mongrel::URIClassifier::RegistrationError) do
|
67
|
+
@config = Mongrel::Configurator.new do
|
68
|
+
listener do
|
69
|
+
uri "bogus", :handler => SimpleHandler.new
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
66
73
|
end
|
67
74
|
|
68
75
|
def test_more_web_server
|
69
|
-
res = hit([ "http://localhost
|
70
|
-
"http://localhost
|
71
|
-
"http://localhost
|
72
|
-
"http://localhost
|
73
|
-
"http://localhost
|
74
|
-
"http://localhost
|
75
|
-
"http://localhost
|
76
|
-
"http://localhost
|
76
|
+
res = hit([ "http://localhost:9998/test",
|
77
|
+
"http://localhost:9998/dumb",
|
78
|
+
"http://localhost:9998/404",
|
79
|
+
"http://localhost:9998/files/rdoc/index.html",
|
80
|
+
"http://localhost:9998/files/rdoc/nothere.html",
|
81
|
+
"http://localhost:9998/files/rdoc/",
|
82
|
+
"http://localhost:9998/files_nodir/rdoc/",
|
83
|
+
"http://localhost:9998/status",
|
77
84
|
])
|
78
85
|
check_status res, String
|
79
86
|
end
|
80
87
|
|
81
88
|
def test_nil_dirhandler
|
89
|
+
return if windows?
|
90
|
+
|
82
91
|
# Camping uses this internally
|
83
92
|
handler = Mongrel::DirHandler.new(nil, false)
|
84
|
-
assert handler.can_serve("
|
93
|
+
assert handler.can_serve("/tmp/testfile")
|
85
94
|
# Not a bug! A nil @file parameter is the only circumstance under which
|
86
95
|
# we are allowed to serve any existing file
|
87
|
-
assert handler.can_serve("
|
96
|
+
assert handler.can_serve("../../../../../../../../../../tmp/testfile")
|
88
97
|
end
|
89
98
|
|
90
99
|
def test_non_nil_dirhandler_is_not_vulnerable_to_path_traversal
|
91
100
|
# The famous security bug of Mongrel 1.1.2
|
92
101
|
handler = Mongrel::DirHandler.new("/doc", false)
|
93
|
-
assert_nil handler.can_serve("
|
94
|
-
assert_nil handler.can_serve("
|
102
|
+
assert_nil handler.can_serve("/tmp/testfile")
|
103
|
+
assert_nil handler.can_serve("../../../../../../../../../../tmp/testfile")
|
95
104
|
end
|
96
105
|
|
97
106
|
def test_deflate
|
98
|
-
Net::HTTP.start("localhost",
|
107
|
+
Net::HTTP.start("localhost", 9998) do |h|
|
99
108
|
# Test that no accept-encoding returns a non-deflated response
|
100
109
|
req = h.get("/dumb")
|
101
110
|
assert(
|
@@ -113,14 +122,14 @@ class HandlersTest < Test::Unit::TestCase
|
|
113
122
|
|
114
123
|
# TODO: find out why this fails on win32 but nowhere else
|
115
124
|
#def test_posting_fails_dirhandler
|
116
|
-
# req = Net::HTTP::Post.new("http://localhost
|
125
|
+
# req = Net::HTTP::Post.new("http://localhost:9998/files/rdoc/")
|
117
126
|
# req.set_form_data({'from'=>'2005-01-01', 'to'=>'2005-03-31'}, ';')
|
118
|
-
# res = hit [["http://localhost
|
127
|
+
# res = hit [["http://localhost:9998/files/rdoc/",req]]
|
119
128
|
# check_status res, Net::HTTPNotFound
|
120
129
|
#end
|
121
130
|
|
122
131
|
def test_unregister
|
123
|
-
@config.listeners["127.0.0.1
|
132
|
+
@config.listeners["127.0.0.1:9998"].unregister("/")
|
124
133
|
end
|
125
134
|
end
|
126
135
|
|
@@ -9,12 +9,11 @@ require 'test/testhelp'
|
|
9
9
|
class RedirectHandlerTest < Test::Unit::TestCase
|
10
10
|
|
11
11
|
def setup
|
12
|
-
@port = process_based_port
|
13
12
|
redirect_test_io do
|
14
|
-
@server = Mongrel::HttpServer.new('127.0.0.1',
|
13
|
+
@server = Mongrel::HttpServer.new('127.0.0.1', 9998)
|
15
14
|
end
|
16
15
|
@server.run
|
17
|
-
@client = Net::HTTP.new('127.0.0.1',
|
16
|
+
@client = Net::HTTP.new('127.0.0.1', 9998)
|
18
17
|
end
|
19
18
|
|
20
19
|
def teardown
|
@@ -38,9 +38,8 @@ end
|
|
38
38
|
|
39
39
|
class RequestProgressTest < Test::Unit::TestCase
|
40
40
|
def setup
|
41
|
-
@port = process_based_port
|
42
41
|
redirect_test_io do
|
43
|
-
@server = Mongrel::HttpServer.new("127.0.0.1",
|
42
|
+
@server = Mongrel::HttpServer.new("127.0.0.1", 9998)
|
44
43
|
end
|
45
44
|
@handler = UploadBeginHandler.new
|
46
45
|
@server.register("/upload", @handler)
|
@@ -52,7 +51,7 @@ class RequestProgressTest < Test::Unit::TestCase
|
|
52
51
|
end
|
53
52
|
|
54
53
|
def test_begin_end_progress
|
55
|
-
Net::HTTP.get("localhost", "/upload",
|
54
|
+
Net::HTTP.get("localhost", "/upload", 9998)
|
56
55
|
assert @handler.request_began
|
57
56
|
assert @handler.request_progressed
|
58
57
|
assert @handler.request_processed
|
@@ -63,7 +62,7 @@ class RequestProgressTest < Test::Unit::TestCase
|
|
63
62
|
handlers.each { |h| h.reset }
|
64
63
|
|
65
64
|
# make the call
|
66
|
-
Net::HTTP.get("localhost", "/upload",
|
65
|
+
Net::HTTP.get("localhost", "/upload", 9998)
|
67
66
|
|
68
67
|
# assert that each one was fired
|
69
68
|
handlers.each { |h|
|
@@ -89,7 +88,7 @@ class RequestProgressTest < Test::Unit::TestCase
|
|
89
88
|
# remove handlers to make sure they've all gone away
|
90
89
|
@server.unregister("/upload")
|
91
90
|
handlers.each { |h| h.reset }
|
92
|
-
Net::HTTP.get("localhost", "/upload",
|
91
|
+
Net::HTTP.get("localhost", "/upload", 9998)
|
93
92
|
handlers.each { |h|
|
94
93
|
assert !h.request_began && !h.request_progressed && !h.request_processed
|
95
94
|
}
|