module Fleet

Constants

Headlines

Public Class Methods

parse_ab_data(data) click to toggle source
# File lib/hornet/fleet.rb, line 54
def Fleet.parse_ab_data(data)
  result = {}

  # parse each line with the matched heading
  data.each_line do |line|
    if line.start_with?(*Headlines)
      parts = line.partition(':')
      head = parts.first
      body = parts.last.strip.split(' ', 2)
      result[head] = body
    end
  end

  if not result.has_key? 'Time per request'
    return {}
  end

  result
end
print_report(result) click to toggle source
report(data) click to toggle source

merge all results together and with certain calculations

# File lib/hornet/fleet.rb, line 22
def Fleet.report(data)
  result = {}

  # hash
  data.each_value do |entries|
    entries.each do |key, value|

      if result.has_key? key
        result[key][0] << value.first.to_f
      else
        result[key] = value.size == 1 ? [[value.first.to_f]] : [[value.first.to_f], value.last]
      end

    end
  end

  # process the result data, e.g, sum and avg
  result.each do |key, value|
    #puts value.to_s
    if ['Time taken for tests'].include? key
      value[0] = value[0].sort.last
    elsif ['Complete requests', 'Failed requests', 'Total transferred', 'HTML transferred', 'Non-2xx responses'].include? key
      value[0] = value[0].inject{|sum, x| sum + x}
    else
      count = value[0].count
      value[0] = (value[0].inject{|sum, x| sum + x} / count).round(2)
    end
    result[key] = value
  end
  result
end