[Groonga-commit] droonga/drnbench at 33c649b [master] Output top fast requests also

Zurück zum Archiv-Index

YUKI Hiroshi null+****@clear*****
Thu Nov 27 17:48:56 JST 2014


YUKI Hiroshi	2014-11-27 17:48:56 +0900 (Thu, 27 Nov 2014)

  New Revision: 33c649b0e8edd73f88b690f95d9b74d2a8b1ac60
  https://github.com/droonga/drnbench/commit/33c649b0e8edd73f88b690f95d9b74d2a8b1ac60

  Message:
    Output top fast requests also

  Modified files:
    bin/drnbench-request-response
    lib/drnbench/request-response/configuration.rb
    lib/drnbench/request-response/result.rb
    lib/drnbench/request-response/runner.rb

  Modified: bin/drnbench-request-response (+5 -0)
===================================================================
--- bin/drnbench-request-response    2014-11-27 16:28:02 +0900 (9807f20)
+++ bin/drnbench-request-response    2014-11-27 17:48:56 +0900 (bf3894e)
@@ -39,6 +39,11 @@ option_parser = OptionParser.new do |parser|
             "(#{config.n_slow_requests})") do |n_slow_requests|
     config.n_slow_requests = n_slow_requests
   end
+  parser.on("--n-fast-requests=N", Integer,
+            "Number of fast requests to be reported.",
+            "(#{config.n_fast_requests})") do |n_fast_requests|
+    config.n_fast_requests = n_fast_requests
+  end
 
   parser.separator("")
   parser.separator("Progressive benchmark:")

  Modified: lib/drnbench/request-response/configuration.rb (+3 -1)
===================================================================
--- lib/drnbench/request-response/configuration.rb    2014-11-27 16:28:02 +0900 (2d6c066)
+++ lib/drnbench/request-response/configuration.rb    2014-11-27 17:48:56 +0900 (74b4709)
@@ -19,7 +19,8 @@ module Drnbench
   module RequestResponse
     class Configuration
       attr_accessor :duration, :wait, :interval, :request_patterns_file
-      attr_accessor :start_n_clients, :end_n_clients, :step, :n_requests, :n_slow_requests
+      attr_accessor :start_n_clients, :end_n_clients, :step, :n_requests
+      attr_accessor :n_slow_requests, :n_fast_requests
       attr_accessor :mode
       attr_reader   :default_hosts
       attr_accessor :default_port, :default_path, :default_method, :default_timeout
@@ -38,6 +39,7 @@ module Drnbench
         @n_requests           = 1000
         @mode                 = :http
         @n_slow_requests      = 5
+        @n_fast_requests      = 5
 
         @default_hosts        = ["localhost"]
         @default_port         = 80

  Modified: lib/drnbench/request-response/result.rb (+37 -15)
===================================================================
--- lib/drnbench/request-response/result.rb    2014-11-27 16:28:02 +0900 (6bd15c5)
+++ lib/drnbench/request-response/result.rb    2014-11-27 17:48:56 +0900 (ce13e38)
@@ -16,7 +16,7 @@
 module Drnbench
   module RequestResponse
     class Result
-      attr_reader :n_clients, :statuses, :n_slow_requests
+      attr_reader :n_clients, :statuses, :n_slow_requests, :n_fast_requests
       attr_accessor :duration
 
       class << self
@@ -36,6 +36,7 @@ module Drnbench
         @n_clients = params[:n_clients]
         @duration = params[:duration]
         @n_slow_requests = params[:n_slow_requests] || 5
+        @n_fast_requests = params[:n_fast_requests] || 5
 
         @results = []
         @total_elapsed_time = 0.0
@@ -89,21 +90,31 @@ module Drnbench
 
       def top_slow_requests
         slow_requests[0.. �� n_slow_requests-1].collect do |result|
-          request = result[:request]
-          status = result[:status].to_i
-          if status.zero?
-            status = "#{status}(aborted)"
-          end
-          index = result[:index]
-          index = "#{index}(last)" if result[:last]
-          [
-            "#{result[:elapsed_time]} sec:",
-            request["method"],
-            status,
-            "<#{result[:client]}>#{index}",
-            "http://#{request["host"]}:#{request["port"]}#{request["path"]}",
-          ].join(" ")
+          format_result_for_request_line(result)
+        end
+      end
+
+      def top_fast_requests
+        fast_requests[0.. �� n_fast_requests-1].collect do |result|
+          format_result_for_request_line(result)
+        end
+      end
+
+      def format_result_for_request_line(result)
+        request = result[:request]
+        status = result[:status].to_i
+        if status.zero?
+          status = "#{status}(aborted)"
         end
+        index = result[:index]
+        index = "#{index}(last)" if result[:last]
+        [
+          "#{result[:elapsed_time]} sec:",
+          request["method"],
+          status,
+          "<#{result[:client]}>#{index}",
+          "http://#{request["host"]}:#{request["port"]}#{request["path"]}",
+        ].join(" ")
       end
 
       def slow_requests
@@ -112,6 +123,12 @@ module Drnbench
         end
       end
 
+      def fast_requests
+        @results.sort do |a, b|
+          a[:elapsed_time] <=> b[:elapsed_time]
+        end
+      end
+
       def to_s
         "Total requests: #{total_n_requests} " +
           "(#{queries_per_second} queries per second)\n" +
@@ -123,6 +140,11 @@ module Drnbench
         "  min:     #{min_elapsed_time} sec\n" +
         "  max:     #{max_elapsed_time} sec\n" +
         "  average: #{average_elapsed_time} sec\n" +
+        "Top #{@n_fast_requests} fast requests:\n" +
+        " [time: method status <client>index url]\n" +
+        top_fast_requests.collect do |request|
+          "  #{request}"
+        end.join("\n") + "\n" +
         "Top #{@n_slow_requests} slow requests:\n" +
         " [time: method status <client>index url]\n" +
         top_slow_requests.collect do |request|

  Modified: lib/drnbench/request-response/runner.rb (+1 -0)
===================================================================
--- lib/drnbench/request-response/runner.rb    2014-11-27 16:28:02 +0900 (bae0498)
+++ lib/drnbench/request-response/runner.rb    2014-11-27 17:48:56 +0900 (31b580b)
@@ -62,6 +62,7 @@ module Drnbench
         end
         @result = Result.new(:n_clients => @n_clients,
                              :duration => @config.duration,
+                             :n_fast_requests => @config.n_fast_requests,
                              :n_slow_requests => @config.n_slow_requests)
 
         setup_child_processes
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Zurück zum Archiv-Index