コード例 #1
0
def test_reentrant_n():
    test_lock = ReentrantRedLock('test_reentrant_n')
    for _ in range(10):
        assert test_lock.acquire() == True
    for _ in range(9):
        assert test_lock.release() == None
    assert test_lock.release() == True
コード例 #2
0
    def test_passthrough(self):
        test_lock = ReentrantRedLock('')
        test_lock.acquire()
        test_lock.release()

        self.redlock.assert_called_once_with('')
        self.redlock_acquire.assert_called_once_with()
        self.redlock_release.assert_called_once_with()
コード例 #3
0
    def test_reentrant_n(self):
        test_lock = ReentrantRedLock('')
        for _ in range(10):
            test_lock.acquire()
        for _ in range(10):
            test_lock.release()

        self.redlock.assert_called_once_with('')
        self.redlock_acquire.assert_called_once_with()
        self.redlock_release.assert_called_once_with()
コード例 #4
0
def test_reentrant_acquire_and_extend():
    test_lock = ReentrantRedLock("test_reentrant_acquire_and_extend",
                                 ttl=10000)
    # Acquire the lock normally
    assert test_lock.acquire() == True
    # We can acquire/extend it
    assert test_lock.acquire_and_extend() == True
    # Let the lock time out
    time.sleep(11)

    # We can acquire/extend it off the bat
    assert test_lock.acquire_and_extend() == True
    # Acquire it normally again
    assert test_lock.acquire() == True
    # We can still acquire/extend it
    assert test_lock.acquire_and_extend() == True
    # We should have reentered the lock twice (since it timed out)
    assert test_lock.release() == None
    assert test_lock.release() == None
    # And now we should actually be releasing the lock
    assert test_lock.release() == True
コード例 #5
0
def test_reentrant_timeout():
    test_lock = ReentrantRedLock('test_reentrant_timeout', ttl=5000)
    assert test_lock.acquire() == True
    time.sleep(6)
    assert test_lock.acquire() == True
    assert test_lock.release() == True
コード例 #6
0
def test_reentrant():
    test_lock = ReentrantRedLock('test_reentrant')
    assert test_lock.acquire() == True
    assert test_lock.acquire() == True
    assert test_lock.release() == None
    assert test_lock.release() == True
コード例 #7
0
def test_passthrough():
    test_lock = ReentrantRedLock('test_reentrant_passthrough')
    assert test_lock.acquire() == True
    test_lock.release() == True