1
0
Fork 0
mirror of https://github.com/endofunky/sidetiq.git synced 2022-11-09 13:53:30 -05:00
endofunky--sidetiq/test/test_lock_redis.rb

64 lines
1.3 KiB
Ruby
Raw Permalink Normal View History

require_relative 'helper'
2013-09-17 05:49:09 -04:00
class TestLockRedis < Sidetiq::TestCase
def test_locking
lock_name = SecureRandom.hex(8)
key = SecureRandom.hex(8)
Sidekiq.redis do |redis|
redis.set(key, 0)
5.times.map do
Thread.start do
locked(lock_name) do |r|
sleep 0.1
r.incr(key)
end
end
end.each(&:join)
assert_equal "1", redis.get(key)
end
end
2013-09-16 12:27:07 -04:00
def test_all
Sidekiq.redis do |redis|
redis.set("sidetiq:Foobar:lock", 1)
end
locks = Sidetiq::Lock::Redis.all
assert_equal "sidetiq:Foobar:lock", locks.first.key
end
2013-09-16 12:29:47 -04:00
def test_unlock!
Sidekiq.redis do |redis|
redis.set("sidetiq:Foobar:lock", 1)
Sidetiq::Lock::Redis.new("Foobar").unlock!
assert_nil redis.get("sidetiq:Foobar:lock")
end
end
2013-09-16 08:49:56 -04:00
def test_lock_sets_correct_meta_data
key = SecureRandom.hex(8)
internal_key = "sidetiq:#{key}:lock"
locked(key) do |redis|
json = redis.get(internal_key)
md = Sidetiq::Lock::MetaData.from_json(json)
assert_equal Sidetiq::Lock::MetaData::OWNER, md.owner
assert_equal internal_key, md.key
end
end
def locked(lock_name)
2013-09-16 08:49:56 -04:00
Sidetiq::Lock::Redis.new(lock_name).synchronize do |redis|
yield redis
end
end
end