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