class Salus::Derive

Public Class Methods

new(defaults={}) click to toggle source
Calls superclass method Salus::Metric::new
# File lib/salus/metric/derive.rb, line 3
def initialize(defaults={})
  super(defaults)
  option :minimum, Numeric
  validate(:minimum, @opts[:minimum]) if @opts.key?(:minimum)
end

Protected Instance Methods

calc() click to toggle source
Calls superclass method Salus::Metric#calc
# File lib/salus/metric/derive.rb, line 10
def calc
  super
  @last_calced_value = nil

  if @values.length < STORAGE_DEPTH
    return
  elsif @values[0].expired?(@values[1].timestamp)
    return
  elsif !@values[0].value.is_a?(Numeric)
    return
  elsif !@values[1].value.is_a?(Numeric)
    return
  end

  @last_calced_value = begin
    dt = (@values[1].timestamp - @values[0].timestamp)
    dv = (@values[1].value - @values[0].value)
    r = (dt == 0) ? nil : (dv / dt)
    if @opts.key?(:minimum) && !r.nil? && r < @opts[:minimum]
      nil
    else
      r
    end
  end
end