lib/god/conditions/degrading_lambda.rb in resurrected_god-0.14.0 vs lib/god/conditions/degrading_lambda.rb in resurrected_god-1.0.0
- old
+ new
@@ -1,8 +1,7 @@
module God
module Conditions
-
# This condition degrades its interval by a factor of two for 3 tries before failing
class DegradingLambda < PollCondition
attr_accessor :lambda
def initialize
@@ -15,38 +14,35 @@
valid &= complain("Attribute 'lambda' must be specified", self) if self.lambda.nil?
valid
end
def test
- puts "Calling test. Interval at #{self.interval}"
- @original_interval ||= self.interval
- unless pass?
+ puts "Calling test. Interval at #{interval}"
+ @original_interval ||= interval
+ if pass?
+ @tries = 0
+ self.interval = @original_interval
+ else
if @tries == 2
- self.info = "lambda condition was satisfied"
+ self.info = 'lambda condition was satisfied'
return true
end
- self.interval = self.interval / 2.0
+ self.interval = interval / 2.0
@tries += 1
- else
- @tries = 0
- self.interval = @original_interval
end
- self.info = "lambda condition was not satisfied"
+ self.info = 'lambda condition was not satisfied'
false
end
private
- def pass?
- begin
- Timeout::timeout(@interval) {
- self.lambda.call()
- }
- rescue Timeout::Error
- false
- end
+ def pass?
+ Timeout.timeout(@interval) do
+ self.lambda.call
end
+ rescue Timeout::Error
+ false
+ end
end
-
end
end