[Groonga-commit] droonga/http-benchmark at 4e1f471 [master] Output result

Back to archive index

YUKI Hiroshi null+****@clear*****
Mon Oct 7 16:40:30 JST 2013


YUKI Hiroshi	2013-10-07 16:40:30 +0900 (Mon, 07 Oct 2013)

  New Revision: 4e1f47139462a9214f9119689628c51a382dd22d
  https://github.com/droonga/http-benchmark/commit/4e1f47139462a9214f9119689628c51a382dd22d

  Message:
    Output result

  Modified files:
    lib/droonga/http-benchmark.rb

  Modified: lib/droonga/http-benchmark.rb (+53 -1)
===================================================================
--- lib/droonga/http-benchmark.rb    2013-10-07 16:26:52 +0900 (141926b)
+++ lib/droonga/http-benchmark.rb    2013-10-07 16:40:30 +0900 (6ca0b3f)
@@ -38,6 +38,12 @@ class HttpBenchmark
   end
 
   def run
+    process_requests
+    analyze_results
+  end
+
+  private
+  def process_requests
     requests_queue = Queue.new
     results_queue = Queue.new
 
@@ -82,9 +88,55 @@ class HttpBenchmark
     @client_threads.each do |client_thread|
       client_thread.stop
     end
+
+    @results = []
+    while not results_queue.empty?
+      @results << results_queue.pop
+    end
+  end
+
+  def analyze_results
+    total_n_requests =****@resul*****
+    http_statuses = {}
+    min_elapsed_time = @duration
+    max_elapsed_time = 0
+    total_elapsed_time = 0
+
+    @results.each do |result|
+      http_statuses[result[:status]] ||= 0
+      http_statuses[result[:status]] += 1
+
+      if result[:elapsed_time] < min_elapsed_time
+        min_elapsed_time = result[:elapsed_time]
+      end
+      if result[:elapsed_time] > max_elapsed_time
+        max_elapsed_time = result[:elapsed_time]
+      end
+      total_elapsed_time += result[:elapsed_time]
+    end
+
+    http_status_percentages = []
+    http_statuses.each do |status, n_results|
+      percentage = n_resulsts.to_f / total_n_requests * 100
+      http_status_percentages << { :percentage => percentage,
+                                   :status => status }
+    end
+    http_status_percentages.sort! do |a, b|
+      (-1) * (a[:percentage] <=> b[:percentage])
+    end
+
+    puts "Total requests: #{total_n_requests} " +
+           "(#{total_n_requests / @duration} queries per second)"
+    puts "Status:"
+    http_status_percentages.each do |status|
+      puts "  #{status[:status}: #{status[:percentage]} %"
+    end
+    puts "Elapsed time:"
+    puts "  min:     #{min_elapsed_time} sec"
+    puts "  max:     #{max_elapsed_time} sec"
+    puts "  average: #{total_elapsed_time.to_f / total_elapsed_time} sec"
   end
 
-  private
   def populate_requests
     @requests = []
     @current_request = 0
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index