You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2012/09/20 13:13:35 UTC

svn commit: r1387975 - /subversion/trunk/subversion/tests/cmdline/svntest/main.py

Author: stsp
Date: Thu Sep 20 11:13:35 2012
New Revision: 1387975

URL: http://svn.apache.org/viewvc?rev=1387975&view=rev
Log:
* subversion/tests/cmdline/svntest/main.py
   (TestSpawningThread): Wrap invocation of the progress callback with a mutex.
    Leaves the actual running of tests as the only multi-threaded code path.
    Might fix problems with overlong progress bars when running tests in
    parallel (which were so far only observed on Windows, but I've also
    seen the problem happen on OpenBSD just now).

Modified:
    subversion/trunk/subversion/tests/cmdline/svntest/main.py

Modified: subversion/trunk/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/main.py?rev=1387975&r1=1387974&r2=1387975&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svntest/main.py Thu Sep 20 11:13:35 2012
@@ -1232,7 +1232,7 @@ class TestSpawningThread(threading.Threa
   def __init__(self, queue, progress_func, tests_total):
     threading.Thread.__init__(self)
     self.queue = queue
-    self.queue_lock = threading.Lock()
+    self.lock = threading.Lock()
     self.results = []
     self.progress_func = progress_func
     self.tests_total = tests_total
@@ -1240,21 +1240,21 @@ class TestSpawningThread(threading.Threa
   def run(self):
     while True:
       try:
-        self.queue_lock.acquire()
+        self.lock.acquire()
         next_index = self.queue.get_nowait()
       except queue.Empty:
         return
       finally:
-        self.queue_lock.release()
+        self.lock.release()
 
       self.run_one(next_index)
 
       # signal progress
       if self.progress_func:
-        self.queue_lock.acquire()
-        qsize = self.queue.qsize() 
-        self.queue_lock.release()
-        self.progress_func(self.tests_total - qsize, self.tests_total)
+        self.lock.acquire()
+        self.progress_func(self.tests_total - self.queue.qsize(),
+                           self.tests_total)
+        self.lock.release()
 
   def run_one(self, index):
     command = os.path.abspath(sys.argv[0])