class Chantier::FailurePolicies::Percentage

Limits the number of failures that may be registered by percentage of errors vs successful triggers.

policy = FailByPercentage.new(40)
policy.limit_reached? # => false
600.times { policy.success! }
policy.limit_reached? # => false
1.times { policy.failure! }
policy.limit_reached? # => false
400.times { policy.failure! }
policy.limit_reached? # => true

Public Class Methods

new(percents_failing) click to toggle source
# File lib/failure_policies.rb, line 72
def initialize(percents_failing)
  @threshold = percents_failing
end

Public Instance Methods

arm!() click to toggle source
# File lib/failure_policies.rb, line 76
def arm!
  @failures, @successes = 0, 0
end
failure!() click to toggle source
# File lib/failure_policies.rb, line 80
def failure!
  @failures += 1
end
limit_reached?() click to toggle source
# File lib/failure_policies.rb, line 88
def limit_reached?
  return false unless ((@failures + @successes) > 4)
  ratio = @failures.to_f / (@failures + @successes)
  (ratio * 100) >= @threshold
end
success!() click to toggle source
# File lib/failure_policies.rb, line 84
def success!
  @successes += 1
end