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