mongrel 0.3.11 → 0.3.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. data/Rakefile +4 -2
  2. data/bin/mongrel_rails +65 -101
  3. data/bin/mongrel_rails_service +1 -1
  4. data/bin/mongrel_rails_svc +131 -115
  5. data/doc/rdoc/classes/Class.html +197 -0
  6. data/doc/rdoc/classes/Class.src/M000001.html +24 -0
  7. data/doc/rdoc/classes/Class.src/M000002.html +62 -0
  8. data/doc/rdoc/classes/Class.src/M000003.html +21 -0
  9. data/doc/rdoc/classes/Class.src/M000004.html +20 -0
  10. data/doc/rdoc/classes/IO.html +170 -0
  11. data/doc/rdoc/classes/IO.src/M000005.html +19 -0
  12. data/doc/rdoc/classes/IO.src/M000006.html +19 -0
  13. data/doc/rdoc/classes/Kernel.html +159 -0
  14. data/doc/rdoc/classes/Kernel.src/M000025.html +19 -0
  15. data/doc/rdoc/classes/Kernel.src/M000026.html +25 -0
  16. data/doc/rdoc/classes/Mongrel.html +181 -0
  17. data/doc/rdoc/classes/Mongrel/CGIWrapper.html +383 -0
  18. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000090.html +24 -0
  19. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000091.html +47 -0
  20. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000092.html +34 -0
  21. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000093.html +27 -0
  22. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000094.html +25 -0
  23. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000095.html +18 -0
  24. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000096.html +18 -0
  25. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000097.html +18 -0
  26. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000098.html +19 -0
  27. data/doc/rdoc/classes/Mongrel/Camping.html +177 -0
  28. data/doc/rdoc/classes/Mongrel/Camping.src/M000048.html +22 -0
  29. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.html +165 -0
  30. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000049.html +18 -0
  31. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000050.html +27 -0
  32. data/doc/rdoc/classes/Mongrel/Command.html +119 -0
  33. data/doc/rdoc/classes/Mongrel/Command/Base.html +337 -0
  34. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000029.html +24 -0
  35. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000030.html +41 -0
  36. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000031.html +18 -0
  37. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000032.html +18 -0
  38. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000033.html +18 -0
  39. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000034.html +22 -0
  40. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000035.html +18 -0
  41. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000036.html +18 -0
  42. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000037.html +18 -0
  43. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000038.html +18 -0
  44. data/doc/rdoc/classes/Mongrel/Command/Registry.html +192 -0
  45. data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000039.html +20 -0
  46. data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000040.html +25 -0
  47. data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000041.html +46 -0
  48. data/doc/rdoc/classes/Mongrel/Configurator.html +563 -0
  49. data/doc/rdoc/classes/Mongrel/Configurator.src/M000099.html +24 -0
  50. data/doc/rdoc/classes/Mongrel/Configurator.src/M000100.html +23 -0
  51. data/doc/rdoc/classes/Mongrel/Configurator.src/M000101.html +18 -0
  52. data/doc/rdoc/classes/Mongrel/Configurator.src/M000102.html +32 -0
  53. data/doc/rdoc/classes/Mongrel/Configurator.src/M000103.html +19 -0
  54. data/doc/rdoc/classes/Mongrel/Configurator.src/M000104.html +31 -0
  55. data/doc/rdoc/classes/Mongrel/Configurator.src/M000105.html +33 -0
  56. data/doc/rdoc/classes/Mongrel/Configurator.src/M000106.html +18 -0
  57. data/doc/rdoc/classes/Mongrel/Configurator.src/M000107.html +25 -0
  58. data/doc/rdoc/classes/Mongrel/Configurator.src/M000108.html +19 -0
  59. data/doc/rdoc/classes/Mongrel/Configurator.src/M000109.html +22 -0
  60. data/doc/rdoc/classes/Mongrel/Configurator.src/M000110.html +21 -0
  61. data/doc/rdoc/classes/Mongrel/Configurator.src/M000111.html +18 -0
  62. data/doc/rdoc/classes/Mongrel/Configurator.src/M000112.html +27 -0
  63. data/doc/rdoc/classes/Mongrel/Configurator.src/M000113.html +46 -0
  64. data/doc/rdoc/classes/Mongrel/Configurator.src/M000114.html +18 -0
  65. data/doc/rdoc/classes/Mongrel/Const.html +286 -0
  66. data/doc/rdoc/classes/Mongrel/DirHandler.html +288 -0
  67. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000058.html +20 -0
  68. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000059.html +42 -0
  69. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000060.html +40 -0
  70. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000061.html +51 -0
  71. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000062.html +40 -0
  72. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000063.html +18 -0
  73. data/doc/rdoc/classes/Mongrel/Error404Handler.html +171 -0
  74. data/doc/rdoc/classes/Mongrel/Error404Handler.src/M000115.html +18 -0
  75. data/doc/rdoc/classes/Mongrel/Error404Handler.src/M000116.html +18 -0
  76. data/doc/rdoc/classes/Mongrel/HeaderOut.html +185 -0
  77. data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000072.html +18 -0
  78. data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000073.html +18 -0
  79. data/doc/rdoc/classes/Mongrel/HttpHandler.html +152 -0
  80. data/doc/rdoc/classes/Mongrel/HttpHandler.src/M000074.html +17 -0
  81. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.html +169 -0
  82. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000027.html +18 -0
  83. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000028.html +17 -0
  84. data/doc/rdoc/classes/Mongrel/HttpParser.html +271 -0
  85. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000051.html +28 -0
  86. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000052.html +29 -0
  87. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000053.html +29 -0
  88. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000054.html +41 -0
  89. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000055.html +27 -0
  90. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000056.html +27 -0
  91. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000057.html +28 -0
  92. data/doc/rdoc/classes/Mongrel/HttpRequest.html +222 -0
  93. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000117.html +28 -0
  94. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000118.html +20 -0
  95. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000119.html +20 -0
  96. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000120.html +32 -0
  97. data/doc/rdoc/classes/Mongrel/HttpResponse.html +371 -0
  98. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000075.html +26 -0
  99. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000076.html +20 -0
  100. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000077.html +25 -0
  101. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000078.html +22 -0
  102. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000079.html +22 -0
  103. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000080.html +23 -0
  104. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000081.html +18 -0
  105. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000082.html +20 -0
  106. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000083.html +18 -0
  107. data/doc/rdoc/classes/Mongrel/HttpServer.html +360 -0
  108. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000064.html +24 -0
  109. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000065.html +65 -0
  110. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000066.html +24 -0
  111. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000067.html +60 -0
  112. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000068.html +28 -0
  113. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000069.html +18 -0
  114. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000070.html +22 -0
  115. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000071.html +18 -0
  116. data/doc/rdoc/classes/Mongrel/Rails.html +112 -0
  117. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.html +223 -0
  118. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000042.html +35 -0
  119. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000043.html +25 -0
  120. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000044.html +32 -0
  121. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.html +250 -0
  122. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000045.html +22 -0
  123. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000046.html +48 -0
  124. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000047.html +23 -0
  125. data/doc/rdoc/classes/Mongrel/StopServer.html +117 -0
  126. data/doc/rdoc/classes/Mongrel/URIClassifier.html +301 -0
  127. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000084.html +18 -0
  128. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000085.html +18 -0
  129. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000086.html +39 -0
  130. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000087.html +51 -0
  131. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000088.html +36 -0
  132. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000089.html +83 -0
  133. data/doc/rdoc/classes/MongrelDbg.html +209 -0
  134. data/doc/rdoc/classes/MongrelDbg.src/M000020.html +19 -0
  135. data/doc/rdoc/classes/MongrelDbg.src/M000021.html +20 -0
  136. data/doc/rdoc/classes/MongrelDbg.src/M000022.html +22 -0
  137. data/doc/rdoc/classes/MongrelDbg.src/M000023.html +21 -0
  138. data/doc/rdoc/classes/MongrelDbg.src/M000024.html +18 -0
  139. data/doc/rdoc/classes/ObjectTracker.html +176 -0
  140. data/doc/rdoc/classes/ObjectTracker.src/M000016.html +22 -0
  141. data/doc/rdoc/classes/ObjectTracker.src/M000017.html +18 -0
  142. data/doc/rdoc/classes/ObjectTracker.src/M000018.html +18 -0
  143. data/doc/rdoc/classes/ObjectTracker.src/M000019.html +46 -0
  144. data/doc/rdoc/classes/RequestLog.html +113 -0
  145. data/doc/rdoc/classes/RequestLog/Files.html +144 -0
  146. data/doc/rdoc/classes/RequestLog/Files.src/M000121.html +19 -0
  147. data/doc/rdoc/classes/RequestLog/Objects.html +144 -0
  148. data/doc/rdoc/classes/RequestLog/Objects.src/M000122.html +19 -0
  149. data/doc/rdoc/classes/RequestLog/Params.html +144 -0
  150. data/doc/rdoc/classes/RequestLog/Params.src/M000123.html +19 -0
  151. data/doc/rdoc/classes/Stats.html +306 -0
  152. data/doc/rdoc/classes/Stats.src/M000009.html +19 -0
  153. data/doc/rdoc/classes/Stats.src/M000010.html +23 -0
  154. data/doc/rdoc/classes/Stats.src/M000011.html +26 -0
  155. data/doc/rdoc/classes/Stats.src/M000012.html +18 -0
  156. data/doc/rdoc/classes/Stats.src/M000013.html +18 -0
  157. data/doc/rdoc/classes/Stats.src/M000014.html +19 -0
  158. data/doc/rdoc/classes/Stats.src/M000015.html +20 -0
  159. data/doc/rdoc/classes/TCPServer.html +173 -0
  160. data/doc/rdoc/classes/TCPServer.src/M000007.html +19 -0
  161. data/doc/rdoc/created.rid +1 -0
  162. data/doc/rdoc/files/COPYING.html +756 -0
  163. data/doc/rdoc/files/LICENSE.html +756 -0
  164. data/doc/rdoc/files/README.html +302 -0
  165. data/doc/rdoc/files/ext/http11/http11_c.html +101 -0
  166. data/doc/rdoc/files/lib/mongrel/camping_rb.html +108 -0
  167. data/doc/rdoc/files/lib/mongrel/cgi_rb.html +108 -0
  168. data/doc/rdoc/files/lib/mongrel/command_rb.html +111 -0
  169. data/doc/rdoc/files/lib/mongrel/debug_rb.html +110 -0
  170. data/doc/rdoc/files/lib/mongrel/handlers_rb.html +109 -0
  171. data/doc/rdoc/files/lib/mongrel/init_rb.html +109 -0
  172. data/doc/rdoc/files/lib/mongrel/rails_rb.html +111 -0
  173. data/doc/rdoc/files/lib/mongrel/stats_rb.html +117 -0
  174. data/doc/rdoc/files/lib/mongrel/tcphack_rb.html +109 -0
  175. data/doc/rdoc/files/lib/mongrel_rb.html +118 -0
  176. data/doc/rdoc/fr_class_index.html +60 -0
  177. data/doc/rdoc/fr_file_index.html +40 -0
  178. data/doc/rdoc/fr_method_index.html +149 -0
  179. data/doc/rdoc/index.html +24 -0
  180. data/doc/rdoc/rdoc-style.css +208 -0
  181. data/examples/builder.rb +29 -0
  182. data/examples/camping/blog.rb +11 -2
  183. data/examples/simpletest.rb +20 -7
  184. data/ext/http11/http11.c +71 -14
  185. data/ext/http11/http11_parser.c +27 -24
  186. data/ext/http11/http11_parser.h +2 -1
  187. data/lib/http11.bundle +0 -0
  188. data/lib/mongrel.rb +498 -135
  189. data/lib/mongrel/command.rb +1 -1
  190. data/lib/mongrel/debug.rb +259 -0
  191. data/lib/mongrel/handlers.rb +76 -22
  192. data/lib/mongrel/rails.rb +165 -72
  193. data/lib/mongrel/stats.rb +71 -0
  194. data/test/test_configurator.rb +67 -0
  195. data/test/test_debug.rb +31 -0
  196. data/test/test_http11.rb +16 -0
  197. data/test/test_response.rb +5 -0
  198. data/test/test_stats.rb +28 -0
  199. 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
@@ -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
@@ -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
 
@@ -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
 
@@ -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.11
7
- date: 2006-03-15 00:00:00 -05:00
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