@@ 487-510 (lines=24) @@ | ||
484 | assert unblocked.value == 1 |
|
485 | ||
486 | ||
487 | def test_reset_all_signalizes(make_conn, make_process): |
|
488 | """Call to reset_all() causes LPUSH to all signal keys, so blocked waiters |
|
489 | become unblocked.""" |
|
490 | def workerfn(unblocked): |
|
491 | conn = make_conn() |
|
492 | lock1 = Lock(conn, 'lock1') |
|
493 | lock2 = Lock(conn, 'lock2') |
|
494 | if lock1.acquire() and lock2.acquire(): |
|
495 | unblocked.value = 1 |
|
496 | ||
497 | unblocked = multiprocessing.Value('B', 0) |
|
498 | conn = make_conn() |
|
499 | lock1 = Lock(conn, 'lock1') |
|
500 | lock2 = Lock(conn, 'lock2') |
|
501 | lock1.acquire() |
|
502 | lock2.acquire() |
|
503 | ||
504 | worker = make_process(target=workerfn, args=(unblocked,)) |
|
505 | worker.start() |
|
506 | worker.join(0.5) |
|
507 | reset_all(conn) |
|
508 | worker.join(0.5) |
|
509 | ||
510 | assert unblocked.value == 1 |
|
511 | ||
512 | ||
513 | def test_auto_renewal_stops_after_gc(conn): |
|
@@ 464-484 (lines=21) @@ | ||
461 | assert conn.llen('lock-signal:foo') == 0 |
|
462 | ||
463 | ||
464 | def test_reset_signalizes(make_conn, make_process): |
|
465 | """Call to reset() causes LPUSH to signal key, so blocked waiters |
|
466 | become unblocked.""" |
|
467 | def workerfn(unblocked): |
|
468 | conn = make_conn() |
|
469 | lock = Lock(conn, 'lock') |
|
470 | if lock.acquire(): |
|
471 | unblocked.value = 1 |
|
472 | ||
473 | unblocked = multiprocessing.Value('B', 0) |
|
474 | conn = make_conn() |
|
475 | lock = Lock(conn, 'lock') |
|
476 | lock.acquire() |
|
477 | ||
478 | worker = make_process(target=workerfn, args=(unblocked,)) |
|
479 | worker.start() |
|
480 | worker.join(0.5) |
|
481 | lock.reset() |
|
482 | worker.join(0.5) |
|
483 | ||
484 | assert unblocked.value == 1 |
|
485 | ||
486 | ||
487 | def test_reset_all_signalizes(make_conn, make_process): |