diff --git a/Lib/test/lock_tests.py b/Lib/test/lock_tests.py index e53e24b18f27609..dfe462b6ac35dc2 100644 --- a/Lib/test/lock_tests.py +++ b/Lib/test/lock_tests.py @@ -174,17 +174,10 @@ def test_thread_leak(self): def f(): lock.acquire() lock.release() - n = len(threading.enumerate()) + # We run many threads in the hope that existing threads ids won't # be recycled. Bunch(f, 15).wait_for_finished() - if len(threading.enumerate()) != n: - # There is a small window during which a Thread instance's - # target function has finished running, but the Thread is still - # alive and registered. Avoid spurious failures by waiting a - # bit more (seen on a buildbot). - time.sleep(0.4) - self.assertEqual(n, len(threading.enumerate())) def test_timeout(self): lock = self.locktype() @@ -464,17 +457,15 @@ def f(): self.assertTrue(r) def test_set_and_clear(self): - # Issue #13502: check that wait() returns true even when the event is + # gh-57711: check that wait() returns true even when the event is # cleared before the waiting thread is woken up. evt = self.eventtype() results = [] - timeout = 0.250 N = 5 def f(): - results.append(evt.wait(timeout * 4)) + results.append(evt.wait(support.LONG_TIMEOUT)) b = Bunch(f, N) b.wait_for_started() - time.sleep(timeout) evt.set() evt.clear() b.wait_for_finished() @@ -636,7 +627,7 @@ def test_waitfor(self): state = 0 def f(): with cond: - result = cond.wait_for(lambda : state==4) + result = cond.wait_for(lambda: state == 4) self.assertTrue(result) self.assertEqual(state, 4) b = Bunch(f, 1) @@ -660,6 +651,7 @@ def f(): self.assertFalse(result) self.assertTimeout(dt, 0.1) success.append(None) + b = Bunch(f, 1) b.wait_for_started() # Only increment 3 times, so state == 4 is never reached. @@ -1068,16 +1060,19 @@ def test_single_thread(self): b.wait() def test_repr(self): + timeout = support.LONG_TIMEOUT b = self.barriertype(3) self.assertRegex(repr(b), r"<\w+\.Barrier at .*: waiters=0/3>") def f(): - b.wait(3) + b.wait(timeout) bunch = Bunch(f, 2) + bunch.wait_for_started() - time.sleep(0.2) self.assertRegex(repr(b), r"<\w+\.Barrier at .*: waiters=2/3>") - b.wait(3) + + b.wait(timeout) bunch.wait_for_finished() self.assertRegex(repr(b), r"<\w+\.Barrier at .*: waiters=0/3>") + b.abort() self.assertRegex(repr(b), r"<\w+\.Barrier at .*: broken>")