aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/_test_multiprocessing.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/_test_multiprocessing.py')
-rw-r--r--Lib/test/_test_multiprocessing.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
index 1cd5704905f..be6efc49e94 100644
--- a/Lib/test/_test_multiprocessing.py
+++ b/Lib/test/_test_multiprocessing.py
@@ -1492,6 +1492,27 @@ class _TestLock(BaseTestCase):
self.assertFalse(lock.locked())
self.assertRaises((ValueError, threading.ThreadError), lock.release)
+ @classmethod
+ def _test_lock_locked_2processes(cls, lock, event, res):
+ lock.acquire()
+ res.value = lock.locked()
+ event.set()
+
+ def test_lock_locked_2processes(self):
+ if self.TYPE != 'processes':
+ self.skipTest('test not appropriate for {}'.format(self.TYPE))
+
+ lock = self.Lock()
+ event = self.Event()
+ res = self.Value('b', 0)
+ p = self.Process(target=self._test_lock_locked_2processes,
+ args=(lock, event, res))
+ p.start()
+ event.wait()
+ self.assertTrue(lock.locked())
+ self.assertTrue(res.value)
+ p.join()
+
@staticmethod
def _acquire_release(lock, timeout, l=None, n=1):
for _ in range(n):
@@ -1561,6 +1582,22 @@ class _TestLock(BaseTestCase):
self.assertFalse(lock.locked())
self.assertRaises((AssertionError, RuntimeError), lock.release)
+ def test_rlock_locked_2processes(self):
+ if self.TYPE != 'processes':
+ self.skipTest('test not appropriate for {}'.format(self.TYPE))
+
+ rlock = self.RLock()
+ event = self.Event()
+ res = Value('b', 0)
+ # target is the same as for the test_lock_locked_2processes test.
+ p = self.Process(target=self._test_lock_locked_2processes,
+ args=(rlock, event, res))
+ p.start()
+ event.wait()
+ self.assertTrue(rlock.locked())
+ self.assertTrue(res.value)
+ p.join()
+
def test_lock_context(self):
with self.Lock() as locked:
self.assertTrue(locked)