LockManagerTests.coffee 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. sinon = require "sinon"
  2. chai = require("chai")
  3. chai.should()
  4. expect = chai.expect
  5. mongojs = require "../../../app/js/mongojs"
  6. ObjectId = mongojs.ObjectId
  7. Settings = require "settings-sharelatex"
  8. LockManager = require "../../../app/js/LockManager"
  9. rclient = require("redis").createClient() # Only works locally for now
  10. describe "Locking document", ->
  11. describe "when the lock has expired in redis", ->
  12. before (done) ->
  13. LockManager.LOCK_TTL = 1 # second
  14. LockManager.runWithLock "doc123", (releaseA) =>
  15. # we create a lock A and allow it to expire in redis
  16. setTimeout () ->
  17. # now we create a new lock B and try to release A
  18. LockManager.runWithLock "doc123", (releaseB) =>
  19. releaseA() # try to release lock A to see if it wipes out lock B
  20. , (error) ->
  21. # we never release lock B so nothing should happen here
  22. , 1500 # enough time to wait until the lock has expired
  23. , (error) ->
  24. # we get here after trying to release lock A
  25. done()
  26. it "the new lock should not be removed by the expired locker", (done) ->
  27. LockManager.checkLock "doc123", (err, isFree) ->
  28. expect(isFree).to.equal false
  29. done()