Sha256: 84f1366f9f4f0115e5f6fce8b7cb3b9ac86e5f7780c0bc30bd00ae634882f28c

Contents?: true

Size: 879 Bytes

Versions: 2

Compression:

Stored size: 879 Bytes

Contents

module Salus
  class Delta < Metric
    def initialize(defaults={})
      super(defaults)
      option :minimum, Numeric
      validate(:minimum, @opts[:minimum]) if @opts.key?(:minimum)
    end

    protected
    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
        if @opts.key?(:minimum) && !r.nil? && r < @opts[:minimum]
          nil
        else
          r
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
salus-0.2.1 lib/salus/metric/delta.rb
salus-0.2.0 lib/salus/metric/delta.rb