def test_signal_cleanup_on_reset(conn): """After resetting a lock, the signal key should not remain.""" lock = Lock(conn, 'foo') lock.acquire() lock.reset() assert conn.llen('lock-signal:foo') == 0 assert conn.exists('lock-signal:foo') == 0
def test_reset(conn): lock = Lock(conn, "foobar") lock.reset() new_lock = Lock(conn, "foobar") new_lock.acquire(blocking=False) new_lock.release() pytest.raises(NotAcquired, lock.release)
def test_reset_signalizes(make_conn, make_process): """Call to reset() causes LPUSH to signal key, so blocked waiters become unblocked.""" def workerfn(unblocked): conn = make_conn() lock = Lock(conn, 'lock') if lock.acquire(): unblocked.value = 1 unblocked = multiprocessing.Value('B', 0) conn = make_conn() lock = Lock(conn, 'lock') lock.acquire() worker = make_process(target=workerfn, args=(unblocked,)) worker.start() worker.join(0.5) lock.reset() worker.join(0.5) assert unblocked.value == 1
def test_reset_signalizes(make_conn, make_process): """Call to reset() causes LPUSH to signal key, so blocked waiters become unblocked.""" def workerfn(unblocked): conn = make_conn() lock = Lock(conn, 'lock') if lock.acquire(): unblocked.value = 1 unblocked = multiprocessing.Value('B', 0) conn = make_conn() lock = Lock(conn, 'lock') lock.acquire() worker = make_process(target=workerfn, args=(unblocked, )) worker.start() worker.join(0.5) lock.reset() worker.join(0.5) assert unblocked.value == 1