Sha256: 1b3954527b73e46964997ead47012894c3720dcdf11ad0d99757a16c06dd5d48
Contents?: true
Size: 1.55 KB
Versions: 3
Compression:
Stored size: 1.55 KB
Contents
require 'minitest_helper' describe "lock nesting" do it "doesn't request the same lock twice" do impl = WithAdvisoryLock::Base.new(nil, nil, nil) impl.lock_stack.must_be_empty Tag.with_advisory_lock("first") do impl.lock_stack.must_equal %w(first) # Even MySQL should be OK with this: Tag.with_advisory_lock("first") do impl.lock_stack.must_equal %w(first) end impl.lock_stack.must_equal %w(first) end impl.lock_stack.must_be_empty end it "raises errors with MySQL when acquiring nested lock" do skip if env_db != 'mysql' exc = proc { Tag.with_advisory_lock("first") do Tag.with_advisory_lock("second") do end end }.must_raise WithAdvisoryLock::NestedAdvisoryLockError exc.lock_stack.must_equal %w(first) end it "supports nested advisory locks with !MySQL" do skip if env_db == 'mysql' impl = WithAdvisoryLock::Base.new(nil, nil, nil) impl.lock_stack.must_be_empty Tag.with_advisory_lock("first") do impl.lock_stack.must_equal %w(first) Tag.with_advisory_lock("second") do impl.lock_stack.must_equal %w(first second) Tag.with_advisory_lock("first") do # Shouldn't ask for another lock: impl.lock_stack.must_equal %w(first second) Tag.with_advisory_lock("second") do # Shouldn't ask for another lock: impl.lock_stack.must_equal %w(first second) end end end impl.lock_stack.must_equal %w(first) end impl.lock_stack.must_be_empty end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
with_advisory_lock-0.0.8 | test/nesting_test.rb |
with_advisory_lock-0.0.7 | test/nesting_test.rb |
with_advisory_lock-0.0.6 | test/nesting_test.rb |