Пример #1
0
    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))