mongrel 0.3.11 → 0.3.12
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +4 -2
- data/bin/mongrel_rails +65 -101
- data/bin/mongrel_rails_service +1 -1
- data/bin/mongrel_rails_svc +131 -115
- data/doc/rdoc/classes/Class.html +197 -0
- data/doc/rdoc/classes/Class.src/M000001.html +24 -0
- data/doc/rdoc/classes/Class.src/M000002.html +62 -0
- data/doc/rdoc/classes/Class.src/M000003.html +21 -0
- data/doc/rdoc/classes/Class.src/M000004.html +20 -0
- data/doc/rdoc/classes/IO.html +170 -0
- data/doc/rdoc/classes/IO.src/M000005.html +19 -0
- data/doc/rdoc/classes/IO.src/M000006.html +19 -0
- data/doc/rdoc/classes/Kernel.html +159 -0
- data/doc/rdoc/classes/Kernel.src/M000025.html +19 -0
- data/doc/rdoc/classes/Kernel.src/M000026.html +25 -0
- data/doc/rdoc/classes/Mongrel.html +181 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.html +383 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000090.html +24 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000091.html +47 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000092.html +34 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000093.html +27 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000094.html +25 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000095.html +18 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000096.html +18 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000097.html +18 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000098.html +19 -0
- data/doc/rdoc/classes/Mongrel/Camping.html +177 -0
- data/doc/rdoc/classes/Mongrel/Camping.src/M000048.html +22 -0
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.html +165 -0
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000049.html +18 -0
- data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000050.html +27 -0
- data/doc/rdoc/classes/Mongrel/Command.html +119 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.html +337 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000029.html +24 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000030.html +41 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000031.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000032.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000033.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000034.html +22 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000035.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000036.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000037.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000038.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.html +192 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000039.html +20 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000040.html +25 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000041.html +46 -0
- data/doc/rdoc/classes/Mongrel/Configurator.html +563 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000099.html +24 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000100.html +23 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000101.html +18 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000102.html +32 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000103.html +19 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000104.html +31 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000105.html +33 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000106.html +18 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000107.html +25 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000108.html +19 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000109.html +22 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000110.html +21 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000111.html +18 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000112.html +27 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000113.html +46 -0
- data/doc/rdoc/classes/Mongrel/Configurator.src/M000114.html +18 -0
- data/doc/rdoc/classes/Mongrel/Const.html +286 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.html +288 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000058.html +20 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000059.html +42 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000060.html +40 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000061.html +51 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000062.html +40 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000063.html +18 -0
- data/doc/rdoc/classes/Mongrel/Error404Handler.html +171 -0
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/M000115.html +18 -0
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/M000116.html +18 -0
- data/doc/rdoc/classes/Mongrel/HeaderOut.html +185 -0
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000072.html +18 -0
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000073.html +18 -0
- data/doc/rdoc/classes/Mongrel/HttpHandler.html +152 -0
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/M000074.html +17 -0
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.html +169 -0
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000027.html +18 -0
- data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000028.html +17 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.html +271 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000051.html +28 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000052.html +29 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000053.html +29 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000054.html +41 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000055.html +27 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000056.html +27 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000057.html +28 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.html +222 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000117.html +28 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000118.html +20 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000119.html +20 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000120.html +32 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.html +371 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000075.html +26 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000076.html +20 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000077.html +25 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000078.html +22 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000079.html +22 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000080.html +23 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000081.html +18 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000082.html +20 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000083.html +18 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.html +360 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000064.html +24 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000065.html +65 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000066.html +24 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000067.html +60 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000068.html +28 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000069.html +18 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000070.html +22 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000071.html +18 -0
- data/doc/rdoc/classes/Mongrel/Rails.html +112 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.html +223 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000042.html +35 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000043.html +25 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000044.html +32 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.html +250 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000045.html +22 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000046.html +48 -0
- data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000047.html +23 -0
- data/doc/rdoc/classes/Mongrel/StopServer.html +117 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.html +301 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000084.html +18 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000085.html +18 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000086.html +39 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000087.html +51 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000088.html +36 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000089.html +83 -0
- data/doc/rdoc/classes/MongrelDbg.html +209 -0
- data/doc/rdoc/classes/MongrelDbg.src/M000020.html +19 -0
- data/doc/rdoc/classes/MongrelDbg.src/M000021.html +20 -0
- data/doc/rdoc/classes/MongrelDbg.src/M000022.html +22 -0
- data/doc/rdoc/classes/MongrelDbg.src/M000023.html +21 -0
- data/doc/rdoc/classes/MongrelDbg.src/M000024.html +18 -0
- data/doc/rdoc/classes/ObjectTracker.html +176 -0
- data/doc/rdoc/classes/ObjectTracker.src/M000016.html +22 -0
- data/doc/rdoc/classes/ObjectTracker.src/M000017.html +18 -0
- data/doc/rdoc/classes/ObjectTracker.src/M000018.html +18 -0
- data/doc/rdoc/classes/ObjectTracker.src/M000019.html +46 -0
- data/doc/rdoc/classes/RequestLog.html +113 -0
- data/doc/rdoc/classes/RequestLog/Files.html +144 -0
- data/doc/rdoc/classes/RequestLog/Files.src/M000121.html +19 -0
- data/doc/rdoc/classes/RequestLog/Objects.html +144 -0
- data/doc/rdoc/classes/RequestLog/Objects.src/M000122.html +19 -0
- data/doc/rdoc/classes/RequestLog/Params.html +144 -0
- data/doc/rdoc/classes/RequestLog/Params.src/M000123.html +19 -0
- data/doc/rdoc/classes/Stats.html +306 -0
- data/doc/rdoc/classes/Stats.src/M000009.html +19 -0
- data/doc/rdoc/classes/Stats.src/M000010.html +23 -0
- data/doc/rdoc/classes/Stats.src/M000011.html +26 -0
- data/doc/rdoc/classes/Stats.src/M000012.html +18 -0
- data/doc/rdoc/classes/Stats.src/M000013.html +18 -0
- data/doc/rdoc/classes/Stats.src/M000014.html +19 -0
- data/doc/rdoc/classes/Stats.src/M000015.html +20 -0
- data/doc/rdoc/classes/TCPServer.html +173 -0
- data/doc/rdoc/classes/TCPServer.src/M000007.html +19 -0
- data/doc/rdoc/created.rid +1 -0
- data/doc/rdoc/files/COPYING.html +756 -0
- data/doc/rdoc/files/LICENSE.html +756 -0
- data/doc/rdoc/files/README.html +302 -0
- data/doc/rdoc/files/ext/http11/http11_c.html +101 -0
- data/doc/rdoc/files/lib/mongrel/camping_rb.html +108 -0
- data/doc/rdoc/files/lib/mongrel/cgi_rb.html +108 -0
- data/doc/rdoc/files/lib/mongrel/command_rb.html +111 -0
- data/doc/rdoc/files/lib/mongrel/debug_rb.html +110 -0
- data/doc/rdoc/files/lib/mongrel/handlers_rb.html +109 -0
- data/doc/rdoc/files/lib/mongrel/init_rb.html +109 -0
- data/doc/rdoc/files/lib/mongrel/rails_rb.html +111 -0
- data/doc/rdoc/files/lib/mongrel/stats_rb.html +117 -0
- data/doc/rdoc/files/lib/mongrel/tcphack_rb.html +109 -0
- data/doc/rdoc/files/lib/mongrel_rb.html +118 -0
- data/doc/rdoc/fr_class_index.html +60 -0
- data/doc/rdoc/fr_file_index.html +40 -0
- data/doc/rdoc/fr_method_index.html +149 -0
- data/doc/rdoc/index.html +24 -0
- data/doc/rdoc/rdoc-style.css +208 -0
- data/examples/builder.rb +29 -0
- data/examples/camping/blog.rb +11 -2
- data/examples/simpletest.rb +20 -7
- data/ext/http11/http11.c +71 -14
- data/ext/http11/http11_parser.c +27 -24
- data/ext/http11/http11_parser.h +2 -1
- data/lib/http11.bundle +0 -0
- data/lib/mongrel.rb +498 -135
- data/lib/mongrel/command.rb +1 -1
- data/lib/mongrel/debug.rb +259 -0
- data/lib/mongrel/handlers.rb +76 -22
- data/lib/mongrel/rails.rb +165 -72
- data/lib/mongrel/stats.rb +71 -0
- data/test/test_configurator.rb +67 -0
- data/test/test_debug.rb +31 -0
- data/test/test_http11.rb +16 -0
- data/test/test_response.rb +5 -0
- data/test/test_stats.rb +28 -0
- metadata +224 -2
@@ -0,0 +1,71 @@
|
|
1
|
+
# A very simple little class for doing some basic fast statistics sampling.
|
2
|
+
# You feed it either samples of numeric data you want measured or you call
|
3
|
+
# Stats.tick to get it to add a time delta between the last time you called it.
|
4
|
+
# When you're done either call sum, sumsq, n, min, max, mean or sd to get
|
5
|
+
# the information. The other option is to just call dump and see everything.
|
6
|
+
#
|
7
|
+
# It does all of this very fast and doesn't take up any memory since the samples
|
8
|
+
# are not stored but instead all the values are calculated on the fly.
|
9
|
+
class Stats
|
10
|
+
attr_reader :sum, :sumsq, :n, :min, :max
|
11
|
+
|
12
|
+
def initialize(name)
|
13
|
+
@name = name
|
14
|
+
reset
|
15
|
+
end
|
16
|
+
|
17
|
+
# Resets the internal counters so you can start sampling again.
|
18
|
+
def reset
|
19
|
+
@sum = 0.0
|
20
|
+
@sumsq = 0.0
|
21
|
+
@last_time = Time.new
|
22
|
+
@n = 0.0
|
23
|
+
@min = 0.0
|
24
|
+
@max = 0.0
|
25
|
+
end
|
26
|
+
|
27
|
+
# Adds a sampling to the calculations.
|
28
|
+
def sample(s)
|
29
|
+
@sum += s
|
30
|
+
@sumsq += s * s
|
31
|
+
if @n == 0
|
32
|
+
@min = @max = s
|
33
|
+
else
|
34
|
+
@min = s if @min > s
|
35
|
+
@max = s if @max < s
|
36
|
+
end
|
37
|
+
@n+=1
|
38
|
+
end
|
39
|
+
|
40
|
+
# Dump this Stats object with an optional additional message.
|
41
|
+
def dump(msg = "")
|
42
|
+
STDERR.puts "[#{@name}] #{msg} : SUM=#@sum, SUMSQ=#@sumsq, N=#@n, MEAN=#{mean}, SD=#{sd}, MIN=#@min, MAX=#@max"
|
43
|
+
end
|
44
|
+
|
45
|
+
# Calculates and returns the mean for the data passed so far.
|
46
|
+
def mean
|
47
|
+
@sum / @n
|
48
|
+
end
|
49
|
+
|
50
|
+
# Calculates the standard deviation of the data so far.
|
51
|
+
def sd
|
52
|
+
# (sqrt( ((s).sumsq - ( (s).sum * (s).sum / (s).n)) / ((s).n-1) ))
|
53
|
+
Math.sqrt( (@sumsq - ( @sum * @sum / @n)) / (@n-1) )
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
# Adds a time delta between now and the last time you called this. This
|
58
|
+
# will give you the average time between two activities.
|
59
|
+
#
|
60
|
+
# An example is:
|
61
|
+
#
|
62
|
+
# t = Stats.new("do_stuff")
|
63
|
+
# 10000.times { do_stuff(); t.tick }
|
64
|
+
# t.dump("time")
|
65
|
+
#
|
66
|
+
def tick
|
67
|
+
now = Time.now
|
68
|
+
sample(now - @last_time)
|
69
|
+
@last_time = now
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'mongrel'
|
3
|
+
|
4
|
+
$test_plugin_fired = 0
|
5
|
+
|
6
|
+
class TestPlugin < GemPlugin::Plugin "/handlers"
|
7
|
+
include Mongrel::HttpHandlerPlugin
|
8
|
+
|
9
|
+
def process(request, response)
|
10
|
+
$test_plugin_fired += 1
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
class Sentinel < GemPlugin::Plugin "/handlers"
|
16
|
+
include Mongrel::HttpHandlerPlugin
|
17
|
+
|
18
|
+
def process(request, response)
|
19
|
+
raise "This Sentinel plugin shouldn't run."
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
class ConfiguratorTest < Test::Unit::TestCase
|
25
|
+
|
26
|
+
def test_base_handler_config
|
27
|
+
config = Mongrel::Configurator.new :host => "localhost" do
|
28
|
+
listener :port => 3111 do
|
29
|
+
# 2 in front should run, but the sentinel shouldn't since dirhandler processes the request
|
30
|
+
uri "/", :handler => plugin("/handlers/testplugin")
|
31
|
+
uri "/", :handler => plugin("/handlers/testplugin")
|
32
|
+
uri "/", :handler => Mongrel::DirHandler.new(".", load_mime_map("examples/mime.yaml"))
|
33
|
+
uri "/", :handler => plugin("/handlers/testplugin")
|
34
|
+
|
35
|
+
uri "/test", :handler => plugin("/handlers/testplugin")
|
36
|
+
uri "/test", :handler => plugin("/handlers/testplugin")
|
37
|
+
uri "/test", :handler => Mongrel::DirHandler.new(".", load_mime_map("examples/mime.yaml"))
|
38
|
+
uri "/test", :handler => plugin("/handlers/testplugin")
|
39
|
+
run
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
config.listeners.each do |host,listener|
|
45
|
+
puts "Registered URIs: #{listener.classifier.uris.inspect}"
|
46
|
+
assert listener.classifier.uris.length == 2, "Wrong number of registered URIs"
|
47
|
+
assert listener.classifier.uris.include?("/"), "/ not registered"
|
48
|
+
assert listener.classifier.uris.include?("/test"), "/test not registered"
|
49
|
+
end
|
50
|
+
|
51
|
+
res = Net::HTTP.get(URI.parse('http://localhost:3111/test'))
|
52
|
+
assert res != nil, "Didn't get a response"
|
53
|
+
assert $test_plugin_fired == 3, "Test filter plugin didn't run 3 times."
|
54
|
+
|
55
|
+
|
56
|
+
res = Net::HTTP.get(URI.parse('http://localhost:3111/'))
|
57
|
+
assert res != nil, "Didn't get a response"
|
58
|
+
assert $test_plugin_fired == 6, "Test filter plugin didn't run 6 times."
|
59
|
+
|
60
|
+
config.stop
|
61
|
+
|
62
|
+
assert_raise Errno::EBADF, Errno::ECONNREFUSED do
|
63
|
+
res = Net::HTTP.get(URI.parse("http://localhost:3111/"))
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
data/test/test_debug.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
FileUtils.mkdir_p "log/mongrel_debug"
|
3
|
+
|
4
|
+
require 'test/unit'
|
5
|
+
require 'mongrel/rails'
|
6
|
+
require 'mongrel/debug'
|
7
|
+
|
8
|
+
|
9
|
+
class MongrelDbgTest < Test::Unit::TestCase
|
10
|
+
|
11
|
+
def setup
|
12
|
+
FileUtils.rm_rf "log/mongrel_debug"
|
13
|
+
MongrelDbg::configure
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
def test_tracing_to_log
|
18
|
+
MongrelDbg::begin_trace(:rails)
|
19
|
+
MongrelDbg::trace(:rails, "Good stuff")
|
20
|
+
MongrelDbg::end_trace(:rails)
|
21
|
+
|
22
|
+
assert File.exist?("log/mongrel_debug"), "Didn't make logging directory"
|
23
|
+
assert File.exist?("log/mongrel_debug/rails.log"), "Didn't make the rails.log file"
|
24
|
+
assert File.size("log/mongrel_debug/rails.log") > 0, "Didn't write anything to the log."
|
25
|
+
|
26
|
+
Class.report_object_creations
|
27
|
+
Class.reset_object_creations
|
28
|
+
Class.report_object_creations
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
data/test/test_http11.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'http11'
|
3
|
+
require 'mongrel'
|
4
|
+
require 'benchmark'
|
3
5
|
|
6
|
+
include Mongrel
|
4
7
|
|
5
8
|
class HttpParserTest < Test::Unit::TestCase
|
6
9
|
|
@@ -34,5 +37,18 @@ class HttpParserTest < Test::Unit::TestCase
|
|
34
37
|
assert !parser.finished?, "Parser shouldn't be finished"
|
35
38
|
assert parser.error?, "Parser SHOULD have error"
|
36
39
|
end
|
40
|
+
|
41
|
+
def test_query_parse
|
42
|
+
puts HttpRequest.query_parse("zed=1&frank=2").inspect
|
43
|
+
puts HttpRequest.query_parse("zed=1&zed=2&zed=3&frank=11;zed=45").inspect
|
44
|
+
|
45
|
+
puts Benchmark.measure {
|
46
|
+
10000.times do |i|
|
47
|
+
g = HttpRequest.query_parse("zed=1&zed=2&zed=3&frank=11").inspect
|
48
|
+
end
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
|
37
53
|
end
|
38
54
|
|
data/test/test_response.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'mongrel'
|
3
|
+
require 'benchmark'
|
3
4
|
|
4
5
|
include Mongrel
|
5
6
|
|
@@ -25,6 +26,8 @@ class ResponseTest < Test::Unit::TestCase
|
|
25
26
|
out.write("tested")
|
26
27
|
out.write("hello!")
|
27
28
|
end
|
29
|
+
|
30
|
+
resp.finished
|
28
31
|
assert io.length > 0, "output didn't have data"
|
29
32
|
end
|
30
33
|
|
@@ -37,8 +40,10 @@ class ResponseTest < Test::Unit::TestCase
|
|
37
40
|
out.write("NOT FOUND")
|
38
41
|
end
|
39
42
|
|
43
|
+
resp.finished
|
40
44
|
assert io.length > 0, "output didn't have data"
|
41
45
|
end
|
42
46
|
|
47
|
+
|
43
48
|
end
|
44
49
|
|
data/test/test_stats.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'mongrel/stats'
|
3
|
+
|
4
|
+
class StatsTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_sampling_speed
|
7
|
+
s = Stats.new("test")
|
8
|
+
t = Stats.new("time")
|
9
|
+
|
10
|
+
10000.times { s.sample(rand(20)); t.tick }
|
11
|
+
|
12
|
+
s.dump("FIRST")
|
13
|
+
t.dump("FIRST")
|
14
|
+
|
15
|
+
old_mean = s.mean
|
16
|
+
old_sd = s.sd
|
17
|
+
|
18
|
+
s.reset
|
19
|
+
t.reset
|
20
|
+
10000.times { s.sample(rand(20)); t.tick }
|
21
|
+
|
22
|
+
s.dump("SECOND")
|
23
|
+
t.dump("SECOND")
|
24
|
+
assert_not_equal old_mean, s.mean
|
25
|
+
assert_not_equal old_mean, s.sd
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: mongrel
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.3.
|
7
|
-
date: 2006-03-
|
6
|
+
version: 0.3.12
|
7
|
+
date: 2006-03-30 00:00:00 -05:00
|
8
8
|
summary: A small fast HTTP library and server that runs Rails, Camping, and Nitro apps.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -35,19 +35,240 @@ files:
|
|
35
35
|
- bin/mongrel_rails
|
36
36
|
- bin/mongrel_rails_service
|
37
37
|
- bin/mongrel_rails_svc
|
38
|
+
- doc/rdoc/classes
|
39
|
+
- doc/rdoc/created.rid
|
40
|
+
- doc/rdoc/files
|
41
|
+
- doc/rdoc/fr_class_index.html
|
42
|
+
- doc/rdoc/fr_file_index.html
|
43
|
+
- doc/rdoc/fr_method_index.html
|
44
|
+
- doc/rdoc/index.html
|
45
|
+
- doc/rdoc/rdoc-style.css
|
46
|
+
- doc/rdoc/classes/Class.html
|
47
|
+
- doc/rdoc/classes/Class.src
|
48
|
+
- doc/rdoc/classes/IO.html
|
49
|
+
- doc/rdoc/classes/IO.src
|
50
|
+
- doc/rdoc/classes/Kernel.html
|
51
|
+
- doc/rdoc/classes/Kernel.src
|
52
|
+
- doc/rdoc/classes/Mongrel
|
53
|
+
- doc/rdoc/classes/Mongrel.html
|
54
|
+
- doc/rdoc/classes/MongrelDbg.html
|
55
|
+
- doc/rdoc/classes/MongrelDbg.src
|
56
|
+
- doc/rdoc/classes/ObjectTracker.html
|
57
|
+
- doc/rdoc/classes/ObjectTracker.src
|
58
|
+
- doc/rdoc/classes/RequestLog
|
59
|
+
- doc/rdoc/classes/RequestLog.html
|
60
|
+
- doc/rdoc/classes/Stats.html
|
61
|
+
- doc/rdoc/classes/Stats.src
|
62
|
+
- doc/rdoc/classes/TCPServer.html
|
63
|
+
- doc/rdoc/classes/TCPServer.src
|
64
|
+
- doc/rdoc/classes/Class.src/M000001.html
|
65
|
+
- doc/rdoc/classes/Class.src/M000002.html
|
66
|
+
- doc/rdoc/classes/Class.src/M000003.html
|
67
|
+
- doc/rdoc/classes/Class.src/M000004.html
|
68
|
+
- doc/rdoc/classes/IO.src/M000005.html
|
69
|
+
- doc/rdoc/classes/IO.src/M000006.html
|
70
|
+
- doc/rdoc/classes/Kernel.src/M000025.html
|
71
|
+
- doc/rdoc/classes/Kernel.src/M000026.html
|
72
|
+
- doc/rdoc/classes/Mongrel/Camping
|
73
|
+
- doc/rdoc/classes/Mongrel/Camping.html
|
74
|
+
- doc/rdoc/classes/Mongrel/Camping.src
|
75
|
+
- doc/rdoc/classes/Mongrel/CGIWrapper.html
|
76
|
+
- doc/rdoc/classes/Mongrel/CGIWrapper.src
|
77
|
+
- doc/rdoc/classes/Mongrel/Command
|
78
|
+
- doc/rdoc/classes/Mongrel/Command.html
|
79
|
+
- doc/rdoc/classes/Mongrel/Configurator.html
|
80
|
+
- doc/rdoc/classes/Mongrel/Configurator.src
|
81
|
+
- doc/rdoc/classes/Mongrel/Const.html
|
82
|
+
- doc/rdoc/classes/Mongrel/DirHandler.html
|
83
|
+
- doc/rdoc/classes/Mongrel/DirHandler.src
|
84
|
+
- doc/rdoc/classes/Mongrel/Error404Handler.html
|
85
|
+
- doc/rdoc/classes/Mongrel/Error404Handler.src
|
86
|
+
- doc/rdoc/classes/Mongrel/HeaderOut.html
|
87
|
+
- doc/rdoc/classes/Mongrel/HeaderOut.src
|
88
|
+
- doc/rdoc/classes/Mongrel/HttpHandler.html
|
89
|
+
- doc/rdoc/classes/Mongrel/HttpHandler.src
|
90
|
+
- doc/rdoc/classes/Mongrel/HttpHandlerPlugin.html
|
91
|
+
- doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src
|
92
|
+
- doc/rdoc/classes/Mongrel/HttpParser.html
|
93
|
+
- doc/rdoc/classes/Mongrel/HttpParser.src
|
94
|
+
- doc/rdoc/classes/Mongrel/HttpRequest.html
|
95
|
+
- doc/rdoc/classes/Mongrel/HttpRequest.src
|
96
|
+
- doc/rdoc/classes/Mongrel/HttpResponse.html
|
97
|
+
- doc/rdoc/classes/Mongrel/HttpResponse.src
|
98
|
+
- doc/rdoc/classes/Mongrel/HttpServer.html
|
99
|
+
- doc/rdoc/classes/Mongrel/HttpServer.src
|
100
|
+
- doc/rdoc/classes/Mongrel/Rails
|
101
|
+
- doc/rdoc/classes/Mongrel/Rails.html
|
102
|
+
- doc/rdoc/classes/Mongrel/StopServer.html
|
103
|
+
- doc/rdoc/classes/Mongrel/URIClassifier.html
|
104
|
+
- doc/rdoc/classes/Mongrel/URIClassifier.src
|
105
|
+
- doc/rdoc/classes/Mongrel/Camping/CampingHandler.html
|
106
|
+
- doc/rdoc/classes/Mongrel/Camping/CampingHandler.src
|
107
|
+
- doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000049.html
|
108
|
+
- doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000050.html
|
109
|
+
- doc/rdoc/classes/Mongrel/Camping.src/M000048.html
|
110
|
+
- doc/rdoc/classes/Mongrel/CGIWrapper.src/M000090.html
|
111
|
+
- doc/rdoc/classes/Mongrel/CGIWrapper.src/M000091.html
|
112
|
+
- doc/rdoc/classes/Mongrel/CGIWrapper.src/M000092.html
|
113
|
+
- doc/rdoc/classes/Mongrel/CGIWrapper.src/M000093.html
|
114
|
+
- doc/rdoc/classes/Mongrel/CGIWrapper.src/M000094.html
|
115
|
+
- doc/rdoc/classes/Mongrel/CGIWrapper.src/M000095.html
|
116
|
+
- doc/rdoc/classes/Mongrel/CGIWrapper.src/M000096.html
|
117
|
+
- doc/rdoc/classes/Mongrel/CGIWrapper.src/M000097.html
|
118
|
+
- doc/rdoc/classes/Mongrel/CGIWrapper.src/M000098.html
|
119
|
+
- doc/rdoc/classes/Mongrel/Command/Base.html
|
120
|
+
- doc/rdoc/classes/Mongrel/Command/Base.src
|
121
|
+
- doc/rdoc/classes/Mongrel/Command/Registry.html
|
122
|
+
- doc/rdoc/classes/Mongrel/Command/Registry.src
|
123
|
+
- doc/rdoc/classes/Mongrel/Command/Base.src/M000029.html
|
124
|
+
- doc/rdoc/classes/Mongrel/Command/Base.src/M000030.html
|
125
|
+
- doc/rdoc/classes/Mongrel/Command/Base.src/M000031.html
|
126
|
+
- doc/rdoc/classes/Mongrel/Command/Base.src/M000032.html
|
127
|
+
- doc/rdoc/classes/Mongrel/Command/Base.src/M000033.html
|
128
|
+
- doc/rdoc/classes/Mongrel/Command/Base.src/M000034.html
|
129
|
+
- doc/rdoc/classes/Mongrel/Command/Base.src/M000035.html
|
130
|
+
- doc/rdoc/classes/Mongrel/Command/Base.src/M000036.html
|
131
|
+
- doc/rdoc/classes/Mongrel/Command/Base.src/M000037.html
|
132
|
+
- doc/rdoc/classes/Mongrel/Command/Base.src/M000038.html
|
133
|
+
- doc/rdoc/classes/Mongrel/Command/Registry.src/M000039.html
|
134
|
+
- doc/rdoc/classes/Mongrel/Command/Registry.src/M000040.html
|
135
|
+
- doc/rdoc/classes/Mongrel/Command/Registry.src/M000041.html
|
136
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000099.html
|
137
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000100.html
|
138
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000101.html
|
139
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000102.html
|
140
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000103.html
|
141
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000104.html
|
142
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000105.html
|
143
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000106.html
|
144
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000107.html
|
145
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000108.html
|
146
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000109.html
|
147
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000110.html
|
148
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000111.html
|
149
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000112.html
|
150
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000113.html
|
151
|
+
- doc/rdoc/classes/Mongrel/Configurator.src/M000114.html
|
152
|
+
- doc/rdoc/classes/Mongrel/DirHandler.src/M000058.html
|
153
|
+
- doc/rdoc/classes/Mongrel/DirHandler.src/M000059.html
|
154
|
+
- doc/rdoc/classes/Mongrel/DirHandler.src/M000060.html
|
155
|
+
- doc/rdoc/classes/Mongrel/DirHandler.src/M000061.html
|
156
|
+
- doc/rdoc/classes/Mongrel/DirHandler.src/M000062.html
|
157
|
+
- doc/rdoc/classes/Mongrel/DirHandler.src/M000063.html
|
158
|
+
- doc/rdoc/classes/Mongrel/Error404Handler.src/M000115.html
|
159
|
+
- doc/rdoc/classes/Mongrel/Error404Handler.src/M000116.html
|
160
|
+
- doc/rdoc/classes/Mongrel/HeaderOut.src/M000072.html
|
161
|
+
- doc/rdoc/classes/Mongrel/HeaderOut.src/M000073.html
|
162
|
+
- doc/rdoc/classes/Mongrel/HttpHandler.src/M000074.html
|
163
|
+
- doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000027.html
|
164
|
+
- doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000028.html
|
165
|
+
- doc/rdoc/classes/Mongrel/HttpParser.src/M000051.html
|
166
|
+
- doc/rdoc/classes/Mongrel/HttpParser.src/M000052.html
|
167
|
+
- doc/rdoc/classes/Mongrel/HttpParser.src/M000053.html
|
168
|
+
- doc/rdoc/classes/Mongrel/HttpParser.src/M000054.html
|
169
|
+
- doc/rdoc/classes/Mongrel/HttpParser.src/M000055.html
|
170
|
+
- doc/rdoc/classes/Mongrel/HttpParser.src/M000056.html
|
171
|
+
- doc/rdoc/classes/Mongrel/HttpParser.src/M000057.html
|
172
|
+
- doc/rdoc/classes/Mongrel/HttpRequest.src/M000117.html
|
173
|
+
- doc/rdoc/classes/Mongrel/HttpRequest.src/M000118.html
|
174
|
+
- doc/rdoc/classes/Mongrel/HttpRequest.src/M000119.html
|
175
|
+
- doc/rdoc/classes/Mongrel/HttpRequest.src/M000120.html
|
176
|
+
- doc/rdoc/classes/Mongrel/HttpResponse.src/M000075.html
|
177
|
+
- doc/rdoc/classes/Mongrel/HttpResponse.src/M000076.html
|
178
|
+
- doc/rdoc/classes/Mongrel/HttpResponse.src/M000077.html
|
179
|
+
- doc/rdoc/classes/Mongrel/HttpResponse.src/M000078.html
|
180
|
+
- doc/rdoc/classes/Mongrel/HttpResponse.src/M000079.html
|
181
|
+
- doc/rdoc/classes/Mongrel/HttpResponse.src/M000080.html
|
182
|
+
- doc/rdoc/classes/Mongrel/HttpResponse.src/M000081.html
|
183
|
+
- doc/rdoc/classes/Mongrel/HttpResponse.src/M000082.html
|
184
|
+
- doc/rdoc/classes/Mongrel/HttpResponse.src/M000083.html
|
185
|
+
- doc/rdoc/classes/Mongrel/HttpServer.src/M000064.html
|
186
|
+
- doc/rdoc/classes/Mongrel/HttpServer.src/M000065.html
|
187
|
+
- doc/rdoc/classes/Mongrel/HttpServer.src/M000066.html
|
188
|
+
- doc/rdoc/classes/Mongrel/HttpServer.src/M000067.html
|
189
|
+
- doc/rdoc/classes/Mongrel/HttpServer.src/M000068.html
|
190
|
+
- doc/rdoc/classes/Mongrel/HttpServer.src/M000069.html
|
191
|
+
- doc/rdoc/classes/Mongrel/HttpServer.src/M000070.html
|
192
|
+
- doc/rdoc/classes/Mongrel/HttpServer.src/M000071.html
|
193
|
+
- doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.html
|
194
|
+
- doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src
|
195
|
+
- doc/rdoc/classes/Mongrel/Rails/RailsHandler.html
|
196
|
+
- doc/rdoc/classes/Mongrel/Rails/RailsHandler.src
|
197
|
+
- doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000042.html
|
198
|
+
- doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000043.html
|
199
|
+
- doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000044.html
|
200
|
+
- doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000045.html
|
201
|
+
- doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000046.html
|
202
|
+
- doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000047.html
|
203
|
+
- doc/rdoc/classes/Mongrel/URIClassifier.src/M000084.html
|
204
|
+
- doc/rdoc/classes/Mongrel/URIClassifier.src/M000085.html
|
205
|
+
- doc/rdoc/classes/Mongrel/URIClassifier.src/M000086.html
|
206
|
+
- doc/rdoc/classes/Mongrel/URIClassifier.src/M000087.html
|
207
|
+
- doc/rdoc/classes/Mongrel/URIClassifier.src/M000088.html
|
208
|
+
- doc/rdoc/classes/Mongrel/URIClassifier.src/M000089.html
|
209
|
+
- doc/rdoc/classes/MongrelDbg.src/M000020.html
|
210
|
+
- doc/rdoc/classes/MongrelDbg.src/M000021.html
|
211
|
+
- doc/rdoc/classes/MongrelDbg.src/M000022.html
|
212
|
+
- doc/rdoc/classes/MongrelDbg.src/M000023.html
|
213
|
+
- doc/rdoc/classes/MongrelDbg.src/M000024.html
|
214
|
+
- doc/rdoc/classes/ObjectTracker.src/M000016.html
|
215
|
+
- doc/rdoc/classes/ObjectTracker.src/M000017.html
|
216
|
+
- doc/rdoc/classes/ObjectTracker.src/M000018.html
|
217
|
+
- doc/rdoc/classes/ObjectTracker.src/M000019.html
|
218
|
+
- doc/rdoc/classes/RequestLog/Files.html
|
219
|
+
- doc/rdoc/classes/RequestLog/Files.src
|
220
|
+
- doc/rdoc/classes/RequestLog/Objects.html
|
221
|
+
- doc/rdoc/classes/RequestLog/Objects.src
|
222
|
+
- doc/rdoc/classes/RequestLog/Params.html
|
223
|
+
- doc/rdoc/classes/RequestLog/Params.src
|
224
|
+
- doc/rdoc/classes/RequestLog/Files.src/M000121.html
|
225
|
+
- doc/rdoc/classes/RequestLog/Objects.src/M000122.html
|
226
|
+
- doc/rdoc/classes/RequestLog/Params.src/M000123.html
|
227
|
+
- doc/rdoc/classes/Stats.src/M000009.html
|
228
|
+
- doc/rdoc/classes/Stats.src/M000010.html
|
229
|
+
- doc/rdoc/classes/Stats.src/M000011.html
|
230
|
+
- doc/rdoc/classes/Stats.src/M000012.html
|
231
|
+
- doc/rdoc/classes/Stats.src/M000013.html
|
232
|
+
- doc/rdoc/classes/Stats.src/M000014.html
|
233
|
+
- doc/rdoc/classes/Stats.src/M000015.html
|
234
|
+
- doc/rdoc/classes/TCPServer.src/M000007.html
|
235
|
+
- doc/rdoc/files/COPYING.html
|
236
|
+
- doc/rdoc/files/ext
|
237
|
+
- doc/rdoc/files/lib
|
238
|
+
- doc/rdoc/files/LICENSE.html
|
239
|
+
- doc/rdoc/files/README.html
|
240
|
+
- doc/rdoc/files/ext/http11
|
241
|
+
- doc/rdoc/files/ext/http11/http11_c.html
|
242
|
+
- doc/rdoc/files/lib/mongrel
|
243
|
+
- doc/rdoc/files/lib/mongrel_rb.html
|
244
|
+
- doc/rdoc/files/lib/mongrel/camping_rb.html
|
245
|
+
- doc/rdoc/files/lib/mongrel/cgi_rb.html
|
246
|
+
- doc/rdoc/files/lib/mongrel/command_rb.html
|
247
|
+
- doc/rdoc/files/lib/mongrel/debug_rb.html
|
248
|
+
- doc/rdoc/files/lib/mongrel/handlers_rb.html
|
249
|
+
- doc/rdoc/files/lib/mongrel/init_rb.html
|
250
|
+
- doc/rdoc/files/lib/mongrel/rails_rb.html
|
251
|
+
- doc/rdoc/files/lib/mongrel/stats_rb.html
|
252
|
+
- doc/rdoc/files/lib/mongrel/tcphack_rb.html
|
253
|
+
- test/test_configurator.rb
|
254
|
+
- test/test_debug.rb
|
38
255
|
- test/test_http11.rb
|
39
256
|
- test/test_response.rb
|
257
|
+
- test/test_stats.rb
|
40
258
|
- test/test_uriclassifier.rb
|
41
259
|
- test/test_ws.rb
|
260
|
+
- lib/http11.bundle
|
42
261
|
- lib/mongrel
|
43
262
|
- lib/mongrel.rb
|
44
263
|
- lib/mongrel/camping.rb
|
45
264
|
- lib/mongrel/cgi.rb
|
46
265
|
- lib/mongrel/command
|
47
266
|
- lib/mongrel/command.rb
|
267
|
+
- lib/mongrel/debug.rb
|
48
268
|
- lib/mongrel/handlers.rb
|
49
269
|
- lib/mongrel/init.rb
|
50
270
|
- lib/mongrel/rails.rb
|
271
|
+
- lib/mongrel/stats.rb
|
51
272
|
- lib/mongrel/tcphack.rb
|
52
273
|
- ext/http11/ext_help.h
|
53
274
|
- ext/http11/http11_parser.h
|
@@ -61,6 +282,7 @@ files:
|
|
61
282
|
- ext/http11/tst_insert.c
|
62
283
|
- ext/http11/tst_search.c
|
63
284
|
- ext/http11/extconf.rb
|
285
|
+
- examples/builder.rb
|
64
286
|
- examples/mongrel_simple_ctrl.rb
|
65
287
|
- examples/mongrel_simple_service.rb
|
66
288
|
- examples/simpletest.rb
|