about summary refs log tree commit homepage
path: root/test
diff options
context:
space:
mode:
authorevanweaver <evanweaver@19e92222-5c0b-0410-8929-a290d50e31e9>2007-10-22 03:47:56 +0000
committerevanweaver <evanweaver@19e92222-5c0b-0410-8929-a290d50e31e9>2007-10-22 03:47:56 +0000
commite225ee6500ac948ee8b25c0dac95f94c2d6707bf (patch)
treefe00faf4e523f7df66b0ca7b68bb809a994e1331 /test
parent449bdf6b7ed84ef3446a165c75cf532f68abdf97 (diff)
downloadunicorn-e225ee6500ac948ee8b25c0dac95f94c2d6707bf.tar.gz
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@724 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'test')
-rw-r--r--test/test_uriclassifier.rb49
1 files changed, 41 insertions, 8 deletions
diff --git a/test/test_uriclassifier.rb b/test/test_uriclassifier.rb
index 2698034..99bbda2 100644
--- a/test/test_uriclassifier.rb
+++ b/test/test_uriclassifier.rb
@@ -52,11 +52,11 @@ class URIClassifierTest < Test::Unit::TestCase
   def test_exceptions
     uri_classifier = URIClassifier.new
 
-    uri_classifier.register("test", 1)
+    uri_classifier.register("/test", 1)
     
     failed = false
     begin
-      uri_classifier.register("test", 1)
+      uri_classifier.register("/test", 1)
     rescue => e
       failed = true
     end
@@ -78,17 +78,17 @@ class URIClassifierTest < Test::Unit::TestCase
     uri_classifier = URIClassifier.new
     
     100.times do
-      uri_classifier.register("stuff", 1)
-      value = uri_classifier.unregister("stuff")
+      uri_classifier.register("/stuff", 1)
+      value = uri_classifier.unregister("/stuff")
       assert_equal 1, value
     end
 
-    uri_classifier.register("things",1)
-    script_name, path_info, value = uri_classifier.resolve("things")
+    uri_classifier.register("/things",1)
+    script_name, path_info, value = uri_classifier.resolve("/things")
     assert_equal 1, value
 
-    uri_classifier.unregister("things")
-    script_name, path_info, value = uri_classifier.resolve("things")
+    uri_classifier.unregister("/things")
+    script_name, path_info, value = uri_classifier.resolve("/things")
     assert_nil value
 
   end
@@ -184,6 +184,39 @@ class URIClassifierTest < Test::Unit::TestCase
       assert_equal 2, handler
     end
   end
+  
+  def test_benchmark    
+    require 'facets/core/array/combos'
+  
+    @fragments = %w(the benchmark module provides methods to measure and report the time used to execute ruby code)
+    @classifier = URIClassifier.new
 
+    @fragments.size.times do |n|
+      @classifier.register("/" + @fragments[0..n].join("/"), 1)
+    end
+    
+    flip = false
+    @requests = @fragments.combos.map do |combo|
+      request = "/" + combo.join("/")
+      request = request[0..-4] if flip and request.size > 4
+      flip = !flip
+      request
+    end
+    
+    p @requests
+    
+    puts "#{@fragments.size} paths registered"
+    puts "#{@requests.size} requests queued"
+    
+    Benchmark.bm do |x|
+      x.report do
+        @requests.each do |request|
+          @classifier.resolve(request)
+        end
+      end
+    end
+    
+  end
+  
 end