Sha256: 60688d7c3466e7a43db5ef5333ad0dabb957a0096eee1dbd0015442448b0a764
Contents?: true
Size: 991 Bytes
Versions: 1
Compression:
Stored size: 991 Bytes
Contents
require 'spec_helper' RSpec.describe SidekiqUniqueJobs::Lock::WhileExecuting do it 'allows only one mutex object to have the lock at a time' do mutexes = (1..10).map do described_class.new('test_mutex_key') end x = 0 mutexes.map do |m| Thread.new do m.synchronize do y = x sleep 0.001 x = y + 1 end end end.map(&:join) expect(x).to eq(10) end it 'handles auto cleanup correctly' do m = described_class.new('test_mutex_key') SidekiqUniqueJobs.connection do |conn| conn.set 'test_mutex_key', Time.now.to_i - 1, nx: true end start = Time.now.to_i m.synchronize do 'nop' end # no longer than a second expect(Time.now.to_i).to be <= start + 1 end it 'maintains mutex semantics' do m = described_class.new('test_mutex_key') expect do m.synchronize do m.synchronize {} end end.to raise_error(ThreadError) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sidekiq-unique-jobs-4.0.0 | spec/lib/sidekiq_unique_jobs/lock/while_executing_spec.rb |