Sha256: 74792824d94eed7be8a9971b6b731dc11053de5b92c41b92c0276681e06882a1

Contents?: true

Size: 1.37 KB

Versions: 6

Compression:

Stored size: 1.37 KB

Contents

module Oxidized
  class Node
    class Stats
      attr_reader :mtimes
      MAX_STAT = 10

      # @param [Job] job job whose information add to stats
      # @return [void]
      def add(job)
        stat = {
          start: job.start,
          end:   job.end,
          time:  job.time
        }
        @stats[job.status] ||= []
        @stats[job.status].shift if @stats[job.status].size > @history_size
        @stats[job.status].push stat
        @stats[:counter][job.status] += 1
      end

      # @param [Symbol] status stats for specific status
      # @return [Hash,Array] Hash of stats for every status or Array of stats for specific status
      def get(status = nil)
        status ? @stats[status] : @stats
      end

      def get_counter(counter = nil)
        counter ? @stats[:counter][counter] : @stats[:counter]
      end

      def successes
        @stats[:counter][:success]
      end

      def failures
        @stats[:counter].reduce(0) { |m, h| h[0] == :success ? m : m + h[1] }
      end

      def mtime
        mtimes.last
      end

      def update_mtime
        @mtimes.push Time.now.utc
        @mtimes.shift
      end

      private

      def initialize
        @history_size = Oxidized.config.stats.history_size? || MAX_STAT
        @mtimes = Array.new(@history_size, "unknown")
        @stats  = {}
        @stats[:counter] = Hash.new 0
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
oxidized-0.28.0 lib/oxidized/node/stats.rb
oxidized-0.27.0 lib/oxidized/node/stats.rb
oxidized-0.26.3 lib/oxidized/node/stats.rb
oxidized-0.26.2 lib/oxidized/node/stats.rb
oxidized-0.26.1 lib/oxidized/node/stats.rb
oxidized-0.26.0 lib/oxidized/node/stats.rb