Author: tfiala Date: Fri Dec 11 18:34:57 2015 New Revision: 255400 URL: http://llvm.org/viewvc/llvm-project?rev=255400&view=rev Log: Decouple test execution and test finder logic in parallel test runner.
Modified: lldb/trunk/packages/Python/lldbsuite/test/dosep.py Modified: lldb/trunk/packages/Python/lldbsuite/test/dosep.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/dosep.py?rev=255400&r1=255399&r2=255400&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/dosep.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/dosep.py Fri Dec 11 18:34:57 2015 @@ -1067,16 +1067,16 @@ def inprocess_exec_test_runner(test_work return test_results -def walk_and_invoke(test_directory, test_subdir, dotest_argv, - num_workers, test_runner_func): - """Look for matched files and invoke test driver on each one. - In single-threaded mode, each test driver is invoked directly. - In multi-threaded mode, submit each test driver to a worker - queue, and then wait for all to complete. - - test_directory - lldb/test/ directory - test_subdir - lldb/test/ or a subfolder with the tests we're interested in - running +def walk_and_invoke(test_files, dotest_argv, num_workers, test_runner_func): + """Invokes the test runner on each test file specified by test_files. + + @param test_files a list of (test_subdir, list_of_test_files_in_dir) + @param num_workers the number of worker queues working on these test files + @param test_runner_func the test runner configured to run the tests + + @return a tuple of results from the running of the specified tests, + of the form (timed_out, passed, failed, unexpected_successes, pass_count, + fail_count) """ # The async_map is important to keep all thread-related asyncore # channels distinct when we call asyncore.loop() later on. @@ -1095,11 +1095,10 @@ def walk_and_invoke(test_directory, test dotest_argv.append("--results-port") dotest_argv.append(str(RESULTS_LISTENER_CHANNEL.address[1])) - # Collect the test files that we'll run. + # Build the test work items out of the (dir, file_list) entries passed in. test_work_items = [] - find_test_files_in_dir_tree( - test_subdir, lambda testdir, test_files: test_work_items.append([ - test_subdir, test_files, dotest_argv, None])) + for entry in test_files: + test_work_items.append((entry[0], entry[1], dotest_argv, None)) # Convert test work items into test results using whatever # was provided as the test run function. @@ -1497,9 +1496,16 @@ def main(num_threads, test_subdir, test_ list(runner_strategies_by_name.keys()))) test_runner_func = runner_strategies_by_name[test_runner_name] + test_files = [] + find_test_files_in_dir_tree( + test_subdir, lambda tdir, tfiles: test_files.append( + (test_subdir, tfiles))) + summary_results = walk_and_invoke( - test_directory, test_subdir, dotest_argv, - num_threads, test_runner_func) + test_files, + dotest_argv, + num_threads, + test_runner_func) (timed_out, passed, failed, unexpected_successes, pass_count, fail_count) = summary_results _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits