Merged revisions 75633 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r75633 | antoine.pitrou | 2009-10-23 20:32:15 +0200 (ven., 23 oct. 2009) | 3 lines

  Issue #7194: test_thread could try to release an unacquired mutex (and fail).
........
This commit is contained in:
Antoine Pitrou 2009-10-27 12:32:18 +00:00
parent 632e93fb40
commit f75774b542
1 changed files with 4 additions and 1 deletions

View File

@ -26,6 +26,7 @@ class BasicThreadTest(unittest.TestCase):
self.done_mutex.acquire() self.done_mutex.acquire()
self.running_mutex = thread.allocate_lock() self.running_mutex = thread.allocate_lock()
self.random_mutex = thread.allocate_lock() self.random_mutex = thread.allocate_lock()
self.created = 0
self.running = 0 self.running = 0
self.next_ident = 0 self.next_ident = 0
@ -37,6 +38,7 @@ class ThreadRunningTests(BasicThreadTest):
self.next_ident += 1 self.next_ident += 1
verbose_print("creating task %s" % self.next_ident) verbose_print("creating task %s" % self.next_ident)
thread.start_new_thread(self.task, (self.next_ident,)) thread.start_new_thread(self.task, (self.next_ident,))
self.created += 1
self.running += 1 self.running += 1
def task(self, ident): def task(self, ident):
@ -47,7 +49,7 @@ class ThreadRunningTests(BasicThreadTest):
verbose_print("task %s done" % ident) verbose_print("task %s done" % ident)
with self.running_mutex: with self.running_mutex:
self.running -= 1 self.running -= 1
if self.running == 0: if self.created == NUMTASKS and self.running == 0:
self.done_mutex.release() self.done_mutex.release()
def test_starting_threads(self): def test_starting_threads(self):
@ -89,6 +91,7 @@ class ThreadRunningTests(BasicThreadTest):
for tss in (262144, 0x100000): for tss in (262144, 0x100000):
verbose_print("trying stack_size = (%d)" % tss) verbose_print("trying stack_size = (%d)" % tss)
self.next_ident = 0 self.next_ident = 0
self.created = 0
for i in range(NUMTASKS): for i in range(NUMTASKS):
self.newtask() self.newtask()