Rework parallel test process count logic
authorEd Maste <emaste@freebsd.org>
Fri, 21 Nov 2014 02:41:25 +0000 (02:41 +0000)
committerEd Maste <emaste@freebsd.org>
Fri, 21 Nov 2014 02:41:25 +0000 (02:41 +0000)
The default value for opt.thread_count was multiprocessing.cpu_count(),
which meant the LLDB_TEST_THREADS environment variable was never used.
It's not easy to pass the -t option to the test run when invoking it
from e.g. 'ninja check-lldb', so having the environment variable as an
option is useful.

Change the logic so that the thread count is set by the first one of:

  1. The -t option to test/dosep.py
  2. The LLDB_TEST_THREADS environment variable
  3. The machine's CPU count from multiprocessing.cpu_count()

llvm-svn: 222501

lldb/test/dosep.py

index 60477b4..153b8fc 100755 (executable)
@@ -90,20 +90,21 @@ Run lldb test suite using a separate process for each test file.
     parser.add_option('-t', '--threads',
                       type='int',
                       dest='num_threads',
-                      help="""The number of threads to use when running tests separately.""",
-                      default=multiprocessing.cpu_count())
+                      help="""The number of threads to use when running tests separately.""")
 
     opts, args = parser.parse_args()
     dotest_options = opts.dotest_options
-    num_threads = opts.num_threads
-    if num_threads < 1:
+
+    if opts.num_threads:
+        num_threads = opts.num_threads
+    else:
         num_threads_str = os.environ.get("LLDB_TEST_THREADS")
         if num_threads_str:
             num_threads = int(num_threads_str)
-            if num_threads < 1:
-                num_threads = 1
         else:
-            num_threads = 1
+            num_threads = multiprocessing.cpu_count()
+    if num_threads < 1:
+        num_threads = 1
 
     system_info = " ".join(platform.uname())
     (failed, passed) = walk_and_invoke(test_root, dotest_options, num_threads)