class Historical::ChangePercentage

Public Class Methods

new(previous_data:, data:) click to toggle source
# File lib/pig_ci/metric/historial/change_percentage.rb, line 2
def initialize(previous_data:, data:)
  @previous_data = previous_data
  @data = data
  @timestamp = @data.keys.first
  @profiler = @data[@timestamp].keys.first
end

Public Instance Methods

updated_data() click to toggle source
# File lib/pig_ci/metric/historial/change_percentage.rb, line 9
def updated_data
  @data[@timestamp][@profiler].collect do |data|
    previous_run_data = previous_run_data_for_key(data[:key]) || data

    data[:max_change_percentage] = (((BigDecimal(data[:max]) - BigDecimal(previous_run_data[:max])) / BigDecimal(previous_run_data[:max])) * 100).round(PigCI.max_change_percentage_precision)
    data[:max_change_percentage] = BigDecimal("0") if data[:max_change_percentage].to_s == "NaN" || data[:max_change_percentage] == BigDecimal("-0.0")
    data[:max_change_percentage] = data[:max_change_percentage].to_f

    data
  end

  @data
end

Private Instance Methods

previous_data_keys() click to toggle source
# File lib/pig_ci/metric/historial/change_percentage.rb, line 34
def previous_data_keys
  @previous_data_keys ||= @previous_data.keys.sort.reverse
end
previous_run_data_for_key(key) click to toggle source
# File lib/pig_ci/metric/historial/change_percentage.rb, line 25
def previous_run_data_for_key(key)
  previous_data_keys.each do |previous_run_key|
    @previous_data[previous_run_key][@profiler.to_sym].each do |raw_previous_run_data|
      return raw_previous_run_data if raw_previous_run_data[:key] == key
    end
  end
  nil
end