class DaysSinceMasterFailureRepository
Provides all persistence logic for the DaysSinceMasterFailure handler, insulating the handler from any knowledge of redis
Public Class Methods
new(redis, pipeline_name)
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 6 def initialize(redis, pipeline_name) @redis = redis @last_failure_key = "last-failure-at-#{pipeline_name}" @last_reported_days_key = "last-reported-days-#{pipeline_name}" @most_successful_days_key = "most-successful-days-#{pipeline_name}" initialise_last_failure_at_if_not_set initialise_most_successful_days_if_not_set end
Public Instance Methods
record_result(event) { |message| ... }
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 16 def record_result(event, &block) touch_last_failure_at if !event.passed? touch_most_successful_days if !event.passed? && new_record? BuildStatusReport.new(event, days_since_last_failure, last_reported_days, most_successful_days) do |message| yield message end touch_last_reported_days end
Private Instance Methods
days_since_last_failure()
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 37 def days_since_last_failure seconds_to_days(::Time.now.to_i - fetch_last_failure_at) end
fetch_last_failure_at()
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 53 def fetch_last_failure_at @redis.get(@last_failure_key).to_i end
initialise_last_failure_at_if_not_set()
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 73 def initialise_last_failure_at_if_not_set @redis.setnx(@last_failure_key, ::Time.now.to_i) end
initialise_most_successful_days_if_not_set()
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 77 def initialise_most_successful_days_if_not_set @redis.setnx(@most_successful_days_key, days_since_last_failure) end
last_reported_days()
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 65 def last_reported_days @redis.get(@last_reported_days_key).to_i end
most_successful_days()
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 69 def most_successful_days @redis.get(@most_successful_days_key).to_i end
new_record?()
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 29 def new_record? last_reported_days > most_successful_days end
seconds_to_days(secs)
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 33 def seconds_to_days(secs) secs.to_i / 60 / 60 / 24 end
set_last_reported_days(days)
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 57 def set_last_reported_days(days) @redis.set(@last_reported_days_key, days.to_i) end
set_most_successful_days(days)
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 61 def set_most_successful_days(days) @redis.set(@most_successful_days_key, days.to_i) end
touch_last_failure_at()
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 41 def touch_last_failure_at @redis.set(@last_failure_key, ::Time.now.to_i) end
touch_last_reported_days()
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 45 def touch_last_reported_days set_last_reported_days(days_since_last_failure) end
touch_most_successful_days()
click to toggle source
# File lib/lita/days_since_master_failure_repository.rb, line 49 def touch_most_successful_days set_most_successful_days(last_reported_days) end