mongrel 0.3.11 → 0.3.12

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.
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