class TestQueue::Stats

Constants

CURRENT_VERSION
EIGHT_DAYS_S

Public Class Methods

new(path) click to toggle source
# File lib/test_queue/stats.rb, line 36
def initialize(path)
  @path = path
  @suites = {}
  load
end

Public Instance Methods

all_suites() click to toggle source
# File lib/test_queue/stats.rb, line 42
def all_suites
  @suites.values
end
record_suites(suites) click to toggle source
# File lib/test_queue/stats.rb, line 50
def record_suites(suites)
  suites.each do |suite|
    @suites[suite.name] = suite
  end
end
save() click to toggle source
# File lib/test_queue/stats.rb, line 56
def save
  prune

  File.open(@path, "wb") do |f|
    Marshal.dump(to_h, f)
  end
end
suite(name) click to toggle source
# File lib/test_queue/stats.rb, line 46
def suite(name)
  @suites[name]
end

Private Instance Methods

load() click to toggle source
# File lib/test_queue/stats.rb, line 74
def load
  data = begin
           File.open(@path, "rb") { |f| Marshal.load(f) }
         rescue Errno::ENOENT, EOFError, TypeError, ArgumentError
         end
  return unless data && data.is_a?(Hash) && data[:version] == CURRENT_VERSION
  data[:suites].each do |suite_hash|
    suite = Suite.from_hash(suite_hash)
    @suites[suite.name] = suite
  end
end
prune() click to toggle source
# File lib/test_queue/stats.rb, line 88
def prune
  earliest = Time.now - EIGHT_DAYS_S
  @suites.delete_if do |name, suite|
    suite.last_seen_at < earliest
  end
end
to_h() click to toggle source
# File lib/test_queue/stats.rb, line 68
def to_h
  suites = @suites.each_value.map(&:to_h)

  { :version => CURRENT_VERSION, :suites => suites }
end