(self)
| 1639 | |
| 1640 | @warnings_helper.ignore_fork_in_thread_deprecation_warnings() |
| 1641 | def test_repr_rlock(self): |
| 1642 | if self.TYPE != 'processes': |
| 1643 | self.skipTest('test not appropriate for {}'.format(self.TYPE)) |
| 1644 | |
| 1645 | lock = self.RLock() |
| 1646 | self.assertEqual('<RLock(None, 0)>', repr(lock)) |
| 1647 | |
| 1648 | n = 3 |
| 1649 | for _ in range(n): |
| 1650 | lock.acquire() |
| 1651 | self.assertEqual(f'<RLock(MainProcess, {n})>', repr(lock)) |
| 1652 | for _ in range(n): |
| 1653 | lock.release() |
| 1654 | |
| 1655 | t, l = [], [] |
| 1656 | for i in range(n): |
| 1657 | t.append(threading.Thread(target=self._acquire_release, |
| 1658 | args=(lock, 0.1, l, i+1), |
| 1659 | name=f'T{i+1}')) |
| 1660 | t[-1].start() |
| 1661 | for t_ in t: |
| 1662 | t_.join() |
| 1663 | for i in range(n): |
| 1664 | self.assertIn(f'<RLock(MainProcess|T{i+1}, {i+1})>', l) |
| 1665 | |
| 1666 | rlock = self.RLock() |
| 1667 | t = threading.Thread(target=rlock.acquire) |
| 1668 | t.start() |
| 1669 | t.join() |
| 1670 | self.assertEqual('<RLock(SomeOtherThread, nonzero)>', repr(rlock)) |
| 1671 | |
| 1672 | pname = 'P1' |
| 1673 | l = multiprocessing.Manager().list() |
| 1674 | p = self.Process(target=self._acquire_release, |
| 1675 | args=(lock, 0.1, l), |
| 1676 | name=pname) |
| 1677 | p.start() |
| 1678 | p.join() |
| 1679 | self.assertEqual(f'<RLock({pname}, 1)>', l[0]) |
| 1680 | |
| 1681 | rlock = self.RLock() |
| 1682 | p = self.Process(target=self._acquire, args=(rlock,)) |
| 1683 | p.start() |
| 1684 | p.join() |
| 1685 | self.assertEqual('<RLock(SomeOtherProcess, nonzero)>', repr(rlock)) |
| 1686 | |
| 1687 | def test_rlock(self): |
| 1688 | lock = self.RLock() |
nothing calls this directly
no test coverage detected