Class: Zombees::AbAdapter::Aggregator

Inherits:
Object
  • Object
show all
Defined in:
lib/zombees/ab_adapter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parsed_results) ⇒ Aggregator

Returns a new instance of Aggregator.



66
67
68
# File 'lib/zombees/ab_adapter.rb', line 66

def initialize(parsed_results)
  @parsed_results = parsed_results
end

Instance Attribute Details

#parsed_resultsObject (readonly)

Returns the value of attribute parsed_results.



65
66
67
# File 'lib/zombees/ab_adapter.rb', line 65

def parsed_results
  @parsed_results
end

Instance Method Details

#aggregateObject



87
88
89
90
91
92
93
# File 'lib/zombees/ab_adapter.rb', line 87

def aggregate
  {}.tap do |result|
    result.merge! hash_result(:complete_requests, :sum)
    result.merge! hash_result(:failed_requests, :sum)
    result.merge! hash_result(:time_per_request, :average)
  end
end

#average(key) ⇒ Object



75
76
77
78
79
80
# File 'lib/zombees/ab_adapter.rb', line 75

def average(key)
  values = parsed_results.map { |res| res[key] }.compact
  if total_values = values.inject(:+)
    total_values / values.count
  end
end

#hash_result(key, aggregator) ⇒ Object



82
83
84
85
# File 'lib/zombees/ab_adapter.rb', line 82

def hash_result(key, aggregator)
  value = self.send(aggregator, key)
  value ? {key => value} : {}
end

#sum(key) ⇒ Object



70
71
72
73
# File 'lib/zombees/ab_adapter.rb', line 70

def sum(key)
  values = parsed_results.map { |res| res[key] }.compact
  values.inject(:+)
end