Sha256: 0f658e4892dc16e2e286b9c40a2bee5f05a7baf9f6bd64ce3688d615d9a07f48

Contents?: true

Size: 1.54 KB

Versions: 9

Compression:

Stored size: 1.54 KB

Contents

require 'spec_helper'

describe 'semaphore' do
  shared_examples_for :semaphore do
    it 'should have no limit by default' do
      subject.limit.should_not be
    end

    it 'should set limit' do
      subject.limit = 4
      subject.limit.should == 4
    end

    it 'should acquire and count active tasks' do
      3.times { subject.acquire }
      subject.busy.should == 3
    end

    it 'should acquire tasks with regard to limit' do
      subject.limit = 4
      6.times { subject.acquire }
      subject.busy.should == 4
    end

    it 'should release active tasks' do
      6.times { subject.acquire }
      3.times { subject.release }
      subject.busy.should == 3
    end

    it 'should pause tasks' do
      3.times { subject.acquire }
      subject.pause
      2.times { subject.acquire }
      subject.busy.should == 3
      2.times { subject.release }
      subject.busy.should == 1
    end

    it 'should unpause tasks' do
      subject.pause
      3.times { subject.acquire }
      subject.unpause
      2.times { subject.acquire }
      subject.busy.should == 2
    end
  end

  let(:name) { 'default' }

  context 'local' do
    subject { Sidekiq::LimitFetch::Local::Semaphore.new name }
    it_behaves_like :semaphore
  end

  context 'global' do
    subject { Sidekiq::LimitFetch::Global::Semaphore.new name }
    it_behaves_like :semaphore

    after :each do
      Sidekiq.redis do |it|
        it.del "limit_fetch:limit:#{name}"
        it.del "limit_fetch:busy:#{name}"
        it.del "limit_fetch:pause:#{name}"
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
sidekiq-limit_fetch-1.6 spec/sidekiq/limit_fetch/semaphore_spec.rb
sidekiq-limit_fetch-1.5 spec/sidekiq/limit_fetch/semaphore_spec.rb
sidekiq-limit_fetch-1.4 spec/sidekiq/limit_fetch/semaphore_spec.rb
sidekiq-limit_fetch-1.3 spec/sidekiq/limit_fetch/semaphore_spec.rb
sidekiq-limit_fetch-1.2 spec/sidekiq/limit_fetch/semaphore_spec.rb
sidekiq-limit_fetch-1.1 spec/sidekiq/limit_fetch/semaphore_spec.rb
sidekiq-limit_fetch-1.0 spec/sidekiq/limit_fetch/semaphore_spec.rb
sidekiq-limit_fetch-0.9 spec/sidekiq/limit_fetch/semaphore_spec.rb
sidekiq-limit_fetch-0.8 spec/sidekiq/limit_fetch/semaphore_spec.rb