Sha256: d4567be19a99df5348a73e002fc095f674eba09e1f97e6d0868a372f667f868f

Contents?: true

Size: 799 Bytes

Versions: 5

Compression:

Stored size: 799 Bytes

Contents

module LitmusPaper
  module Metric
    class AvailableMemory
      MULTIPLIER = {
        "GB" => 1024*1024*1024,
        "MB" => 1024*1024,
        "KB" => 1024
      }

      def initialize(weight, facter = Facter)
        @weight = weight
        @facter = facter
      end

      def current_health
        @weight * memory_free / memory_total
      end

      def memory_total
        return @memory_total unless @memory_total.nil?

        size, scale = @facter.value('memorysize').split(' ')
        @memory_total = (size.to_f * MULTIPLIER[scale]).to_i
      end

      def memory_free
        size, scale = @facter.value('memoryfree').split(' ')
        (size.to_f * MULTIPLIER[scale]).to_i
      end

      def to_s
        "Metric::AvailableMemory(#{@weight})"
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
litmus_paper-0.9.6 lib/litmus_paper/metric/available_memory.rb
litmus_paper-0.9.5 lib/litmus_paper/metric/available_memory.rb
litmus_paper-0.9.4 lib/litmus_paper/metric/available_memory.rb
litmus_paper-0.9.3 lib/litmus_paper/metric/available_memory.rb
litmus_paper-0.9.2 lib/litmus_paper/metric/available_memory.rb