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