Class: Chantier::FailurePolicies::Percentage

Inherits:
None
  • Object
show all
Defined in:
lib/failure_policies.rb

Overview

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

Instance Method Summary collapse

Constructor Details

#initialize(percents_failing) ⇒ Percentage

Returns a new instance of Percentage.



72
73
74
# File 'lib/failure_policies.rb', line 72

def initialize(percents_failing)
  @threshold = percents_failing
end

Instance Method Details

#arm!Object



76
77
78
# File 'lib/failure_policies.rb', line 76

def arm!
  @failures, @successes = 0, 0
end

#failure!Object



80
81
82
# File 'lib/failure_policies.rb', line 80

def failure!
  @failures += 1
end

#limit_reached?Boolean

Returns:

  • (Boolean)


88
89
90
91
92
# 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!Object



84
85
86
# File 'lib/failure_policies.rb', line 84

def success!
  @successes += 1
end