class Drnbench::RequestResponse::Result
Attributes
duration[RW]
n_clients[R]
n_fast_requests[R]
n_slow_requests[R]
statuses[R]
Public Class Methods
keys()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 23 def keys [ :n_clients, :total_n_requests, :queries_per_second, :min_elapsed_time, :max_elapsed_time, :average_elapsed_time, ] end
new(params)
click to toggle source
# File lib/drnbench/request-response/result.rb, line 35 def initialize(params) @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 @elapsed_times = [] @statuses = {} end
Public Instance Methods
<<(result)
click to toggle source
# File lib/drnbench/request-response/result.rb, line 47 def <<(result) push(result) end
average_elapsed_time()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 87 def average_elapsed_time @average_elapsed_time ||= @total_elapsed_time / @elapsed_times.size end
empty?()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 63 def empty? @results.empty? end
fast_requests()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 126 def fast_requests @results.sort do |a, b| a[:elapsed_time] <=> b[:elapsed_time] end end
format_result_for_request_line(result)
click to toggle source
# File lib/drnbench/request-response/result.rb, line 103 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
max_elapsed_time()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 83 def max_elapsed_time @max_elapsed_time ||= @elapsed_times.max end
min_elapsed_time()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 79 def min_elapsed_time @min_elapsed_time ||= @elapsed_times.min end
push(result)
click to toggle source
# File lib/drnbench/request-response/result.rb, line 51 def push(result) clear_cached_statistics @results << result @statuses[result[:status]] ||= 0 @statuses[result[:status]] += 1 @elapsed_times << result[:elapsed_time] @total_elapsed_time += result[:elapsed_time] end
queries_per_second()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 71 def queries_per_second @queries_per_second ||= total_n_requests.to_f / @duration end
slow_requests()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 120 def slow_requests @results.sort do |a, b| b[:elapsed_time] <=> a[:elapsed_time] end end
status_percentages()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 75 def status_percentages @status_percentages ||= prepare_status_percentages end
to_s()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 132 def to_s "Total requests: #{total_n_requests} " + "(#{queries_per_second} queries per second)\n" + "Status:\n" + status_percentages.collect do |status, percentage| " #{status}: #{percentage} %" end.join("\n") + "\n" + "Elapsed time:\n" + " 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| " #{request}" end.join("\n") end
top_fast_requests()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 97 def top_fast_requests fast_requests[0..@n_fast_requests-1].collect do |result| format_result_for_request_line(result) end end
top_slow_requests()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 91 def top_slow_requests slow_requests[0..@n_slow_requests-1].collect do |result| format_result_for_request_line(result) end end
total_n_requests()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 67 def total_n_requests @total_n_requests ||= @results.size end
values()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 155 def values self.class.keys.collect do |column| send(column) end end
Private Instance Methods
clear_cached_statistics()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 162 def clear_cached_statistics @total_n_requests = nil @queries_per_second = nil @status_percentages = nil @min_elapsed_time = nil @max_elapsed_time = nil @average_elapsed_time = nil end
prepare_status_percentages()
click to toggle source
# File lib/drnbench/request-response/result.rb, line 171 def prepare_status_percentages status_percentages = [] @statuses.each do |status, n_results| percentage = n_results.to_f / total_n_requests * 100 status_percentages << {:percentage => percentage, :status => status} end status_percentages.sort! do |a, b| (-1) * (a[:percentage] <=> b[:percentage]) end final_status_percentages = {} status_percentages.each do |status| final_status_percentages[status[:status]] = status[:percentage] end final_status_percentages end