Class: Drnbench::RequestResponse::Result
- Inherits:
-
Object
- Object
- Drnbench::RequestResponse::Result
- Defined in:
- lib/drnbench/request-response/result.rb
Instance Attribute Summary collapse
-
#duration ⇒ Object
Returns the value of attribute duration.
-
#n_clients ⇒ Object
readonly
Returns the value of attribute n_clients.
-
#n_slow_requests ⇒ Object
readonly
Returns the value of attribute n_slow_requests.
-
#statuses ⇒ Object
readonly
Returns the value of attribute statuses.
Class Method Summary collapse
Instance Method Summary collapse
- #<<(result) ⇒ Object
- #average_elapsed_time ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(params) ⇒ Result
constructor
A new instance of Result.
- #max_elapsed_time ⇒ Object
- #min_elapsed_time ⇒ Object
- #queries_per_second ⇒ Object
- #slow_requests ⇒ Object
- #status_percentages ⇒ Object
- #to_s ⇒ Object
- #top_slow_requests ⇒ Object
- #total_n_requests ⇒ Object
- #values ⇒ Object
Constructor Details
#initialize(params) ⇒ Result
Returns a new instance of Result.
35 36 37 38 39 40 41 42 43 44 |
# 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 @results = [] @total_elapsed_time = 0.0 @elapsed_times = [] @statuses = {} end |
Instance Attribute Details
#duration ⇒ Object
Returns the value of attribute duration.
20 21 22 |
# File 'lib/drnbench/request-response/result.rb', line 20 def duration @duration end |
#n_clients ⇒ Object (readonly)
Returns the value of attribute n_clients.
19 20 21 |
# File 'lib/drnbench/request-response/result.rb', line 19 def n_clients @n_clients end |
#n_slow_requests ⇒ Object (readonly)
Returns the value of attribute n_slow_requests.
19 20 21 |
# File 'lib/drnbench/request-response/result.rb', line 19 def n_slow_requests @n_slow_requests end |
#statuses ⇒ Object (readonly)
Returns the value of attribute statuses.
19 20 21 |
# File 'lib/drnbench/request-response/result.rb', line 19 def statuses @statuses end |
Class Method Details
.keys ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# 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 |
Instance Method Details
#<<(result) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/drnbench/request-response/result.rb', line 46 def <<(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 |
#average_elapsed_time ⇒ Object
82 83 84 |
# File 'lib/drnbench/request-response/result.rb', line 82 def average_elapsed_time @average_elapsed_time ||= @total_elapsed_time / @elapsed_times.size end |
#empty? ⇒ Boolean
58 59 60 |
# File 'lib/drnbench/request-response/result.rb', line 58 def empty? @results.empty? end |
#max_elapsed_time ⇒ Object
78 79 80 |
# File 'lib/drnbench/request-response/result.rb', line 78 def max_elapsed_time @max_elapsed_time ||= @elapsed_times.max end |
#min_elapsed_time ⇒ Object
74 75 76 |
# File 'lib/drnbench/request-response/result.rb', line 74 def min_elapsed_time @min_elapsed_time ||= @elapsed_times.min end |
#queries_per_second ⇒ Object
66 67 68 |
# File 'lib/drnbench/request-response/result.rb', line 66 def queries_per_second @queries_per_second ||= total_n_requests.to_f / @duration end |
#slow_requests ⇒ Object
105 106 107 108 109 |
# File 'lib/drnbench/request-response/result.rb', line 105 def slow_requests @results.sort do |a, b| b[:elapsed_time] <=> a[:elapsed_time] end end |
#status_percentages ⇒ Object
70 71 72 |
# File 'lib/drnbench/request-response/result.rb', line 70 def status_percentages @status_percentages ||= prepare_status_percentages end |
#to_s ⇒ Object
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/drnbench/request-response/result.rb', line 111 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_slow_requests} slow requests:\n" + " [time: method status <client>index url]\n" + top_slow_requests.collect do |request| " #{request}" end.join("\n") end |
#top_slow_requests ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/drnbench/request-response/result.rb', line 86 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(" ") end end |
#total_n_requests ⇒ Object
62 63 64 |
# File 'lib/drnbench/request-response/result.rb', line 62 def total_n_requests @total_n_requests ||= @results.size end |
#values ⇒ Object
129 130 131 132 133 |
# File 'lib/drnbench/request-response/result.rb', line 129 def values self.class.keys.collect do |column| send(column) end end |