def test__lock(self): queue = Queue(DBH.job) # Test lock using default lock file. This test only works if the queue # is not currently locked by an outside program. if os.path.exists(queue.lock_filename): os.unlink(queue.lock_filename) self.assertFalse(os.path.exists(queue.lock_filename)) queue.lock() self.assertTrue(os.path.exists(queue.lock_filename)) queue.unlock() self.assertFalse(os.path.exists(queue.lock_filename)) # Test lock with custom filename. lock_file = os.path.join(TMP_DIR, 'test__lock.pid') if os.path.exists(lock_file): os.unlink(lock_file) self.assertFalse(os.path.exists(lock_file)) queue.lock(filename=lock_file) self.assertTrue(os.path.exists(lock_file)) # Test raise QueueLockedError self.assertRaises(QueueLockedError, queue.lock, filename=lock_file) # Test raise QueueLockedExtendedError time.sleep(2) # Lock period < extended seconds, raises QueueLockedError self.assertRaises(QueueLockedError, queue.lock, filename=lock_file, extended_seconds=9999) # Lock period > extended seconds, raises QueueLockedExtendedError self.assertRaises(QueueLockedExtendedError, queue.lock, filename=lock_file, extended_seconds=1) queue.unlock(filename=lock_file) self.assertFalse(os.path.exists(lock_file))