Sha256: 5bb9b1db624255fbea2cbcf7361e345610e5cf7209d2732b7e5543b2741b7729

Contents?: true

Size: 1.36 KB

Versions: 15

Compression:

Stored size: 1.36 KB

Contents

require 'rest-core/test'

describe RC::Retry do
  before do
    @called = called = []
    @errors = errors = []
    engine = Class.new do
      define_method :call do |env, &block|
        called << true
        env[RC::FAIL].should.eq [true]
        block.call(env.merge(RC::FAIL => [true, errors.shift]))
        {}
      end
    end.new
    @app = RC::Retry.new(engine, 5)
  end

  after do
    @errors.size.should.eq 0
  end

  def call env={}
    @app.call({RC::FAIL => [true]}.merge(env)){}
  end

  def max_retries
    @app.max_retries({})
  end

  would 'retry max_retries times' do
    @errors.replace([IOError.new] * max_retries)
    call
    @called.size.should.eq max_retries + 1
  end

  would 'retry several times' do
    @errors.replace([IOError.new] * 2)
    call
    @called.size.should.eq 3
  end

  would 'not retry RuntimeError by default' do
    @errors.replace([RuntimeError.new])
    call
    @called.size.should.eq 1
  end

  would 'retry RuntimeError when setup' do
    @errors.replace([RuntimeError.new] * max_retries)
    @app.retry_exceptions = [RuntimeError]
    call
    @called.size.should.eq max_retries + 1
  end

  would 'call error_callback upon retrying' do
    @errors.replace([IOError.new] * 2)
    errors = []
    call(RC::CLIENT => stub.error_callback{errors.method(:<<)}.object)
    @called.size.should.eq 3
    errors.size.should.eq 2
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
rest-core-4.0.1 test/test_retry.rb
rest-core-4.0.0 test/test_retry.rb
rest-core-3.6.0 test/test_retry.rb
rest-core-3.5.92 test/test_retry.rb
rest-core-3.5.91 test/test_retry.rb
rest-core-3.5.9 test/test_retry.rb
rest-core-3.5.8 test/test_retry.rb
rest-core-3.5.7 test/test_retry.rb
rest-core-3.5.6 test/test_retry.rb
rest-core-3.5.5 test/test_retry.rb
rest-core-3.5.4 test/test_retry.rb
rest-core-3.5.3 test/test_retry.rb
rest-core-3.5.2 test/test_retry.rb
rest-core-3.5.1 test/test_retry.rb
rest-core-3.5.0 test/test_retry.rb