[Groonga-commit] droonga/http-benchmark at 0665751 [master] Implement GradualResult as a class

Back to archive index

YUKI Hiroshi null+****@clear*****
Wed Oct 9 16:17:44 JST 2013


YUKI Hiroshi	2013-10-09 16:17:44 +0900 (Wed, 09 Oct 2013)

  New Revision: 066575113d6def75ee37c5554292a016393848fd
  https://github.com/droonga/http-benchmark/commit/066575113d6def75ee37c5554292a016393848fd

  Message:
    Implement GradualResult as a class

  Modified files:
    lib/droonga/http-benchmark/formatter.rb
    lib/droonga/http-benchmark/gradual-runner.rb
    lib/droonga/http-benchmark/runner.rb

  Modified: lib/droonga/http-benchmark/formatter.rb (+0 -30)
===================================================================
--- lib/droonga/http-benchmark/formatter.rb    2013-10-09 15:44:39 +0900 (f4c3c50)
+++ lib/droonga/http-benchmark/formatter.rb    2013-10-09 16:17:44 +0900 (2da4b71)
@@ -4,36 +4,6 @@ module Droonga
   module HttpBenchmark
     class Formatter
       class << self
-        def output_gradual_results(results)
-          http_statuses = []
-          results.each do |n_clients, result|
-            http_statuses += result[:responses].keys
-          end
-          http_statuses.uniq!
-          http_statuses.sort!
-
-          puts "n_clients,total_n_requests,queries_per_second," +
-                 "#{http_statuses.join(",")}," +
-                 "min_elapsed_time,max_elapsed_time,average_elapsed_time"
-          results.each do |n_clients, result|
-            result[:n_clients] = n_clients
-            response_statuses = http_statuses.collect do |status|
-              if result[:responses].include?(status)
-                result[:responses][status]
-              else
-                0
-              end
-            end
-            result[:response_statuses] = response_statuses.join(",")
-            puts(("%{n_clients}," +
-                    "%{total_n_requests}," +
-                    "%{queries_per_second}," +
-                    "%{response_statuses}," +
-                    "%{min_elapsed_time}," +
-                    "%{max_elapsed_time}," +
-                    "%{average_elapsed_time}") % result)
-          end
-        end
       end
     end
   end

  Modified: lib/droonga/http-benchmark/gradual-runner.rb (+46 -3)
===================================================================
--- lib/droonga/http-benchmark/gradual-runner.rb    2013-10-09 15:44:39 +0900 (92f0e50)
+++ lib/droonga/http-benchmark/gradual-runner.rb    2013-10-09 16:17:44 +0900 (cad558c)
@@ -20,18 +20,61 @@ module Droonga
 
       def run
         run_benchmarks
-        Formatter.output_gradual_results(@results)
+        puts****@resul*****_csv
       end
 
       private
       def run_benchmarks
-        @results = {}
+        @result = GradualResult.new
         @start_n_clients.step(@end_n_clients, @step) do |n_clients|
           benchmark = Runner.new(@params.merge(:n_clients => n_clients))
           puts "Running benchmark with #{n_clients} clients..."
-          @results[n_clients] = benchmark.run
+          @result << benchmark.run
         end
       end
     end
+
+    class GradualResult
+      def initialize
+        @results = {}
+      end
+
+      def <<(result)
+        @response_statuses = nil
+        @results[result.n_clients] = result
+      end
+
+      def response_statuses
+        @response_statuses ||= prepare_response_statuses
+      end
+
+      def to_csv
+        "#{csv_header}\n#{csv_body}"
+      end
+
+      private
+      def prepare_response_statuses
+        response_statuses = []
+        @results.each do |n_clients, result|
+          response_statuses += result.response_statuses.keys
+        end
+        response_statuses.uniq!
+        response_statuses.sort!
+        response_statuses
+      end
+
+      def csv_header
+        (Result.keys + response_statuses).join(",")
+      end
+
+      def csv_body
+        @results.values.collect do |result|
+          (result.values +
+           response_statuses.collect do |status|
+             result.response_statuses[status] || 0
+           end).join(",")
+        end.join("\n")
+      end
+    end
   end
 end

  Modified: lib/droonga/http-benchmark/runner.rb (+24 -1)
===================================================================
--- lib/droonga/http-benchmark/runner.rb    2013-10-09 15:44:39 +0900 (838adb7)
+++ lib/droonga/http-benchmark/runner.rb    2013-10-09 16:17:44 +0900 (aed5dc2)
@@ -51,7 +51,8 @@ module Droonga
       private
       def process_requests
         requests_queue = Queue.new
-        @result = Result.new(:duration => @duration)
+        @result = Result.new(:n_clients => @n_clients,
+                             :duration => @duration)
 
         @clients = @n_clients.times.collect do |index|
           client = Client.new(:requests => requests_queue,
@@ -164,7 +165,23 @@ module Droonga
       end
 
       class Result
+        attr_reader :n_clients, :duration, :response_statuses
+
+        class << self
+          def keys
+            [
+              :n_clients,
+              :total_n_requests,
+              :queries_per_second,
+              :min_elapsed_time,
+              :max_elapsed_time,
+              :average_elapsed_time,
+            ]
+          end
+        end
+
         def initialize(params)
+          @n_clients = params[:n_clients]
           @duration = params[:duration]
 
           @results = []
@@ -222,6 +239,12 @@ module Droonga
           "  average: #{average_elapsed_time} sec"
         end
 
+        def values
+          self.class.keys.collect do |column|
+            send(column)
+          end
+        end
+
         private
         def clear_cached_statistics
           @total_n_requests = nil
-------------- next part --------------
HTML����������������������������...
Download 



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