diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b4f5f4e5a..a0feaf57c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -48,14 +48,26 @@ def eu_s3 end end -def eventually(&block) - [0,2,4,8,16].each do |delay| +def eventually(max_delay = 16, &block) + delays = [0] + delay_step = 1 + total = 0 + while true + delay = 1 + delay_step.times do + delay *= 2 + end + delays << delay + delay_step += 1 + break if delay >= max_delay + end + delays.each do |delay| begin sleep(delay) yield break rescue => error - raise error if delay == 16 + raise error if delay >= max_delay end end end \ No newline at end of file