public function determine_tests_to_run(&$to_run_objects) { $unique_test_count = count(array_unique($to_run_objects)); $run_contains_a_no_result_type = false; $request_results_save = false; foreach ($to_run_objects as &$run_object) { // TODO: determine whether to print the titles of what's being run? if ($run_object instanceof pts_test_profile) { if ($run_object->get_identifier() == null || $run_object->get_title() == null || $this->validate_test_to_run($run_object) == false) { continue; } if ($run_contains_a_no_result_type == false && $run_object->get_display_format() == 'NO_RESULT') { $run_contains_a_no_result_type = true; } if ($request_results_save == false && $run_object->do_auto_save_results()) { $request_results_save = true; } foreach (self::test_prompts_to_result_objects($run_object) as $result_object) { $this->add_test_result_object($result_object); } } else { if ($run_object instanceof pts_test_suite) { $this->pre_run_message = $run_object->get_pre_run_message(); $this->post_run_message = $run_object->get_post_run_message(); if ($run_object->get_run_mode() == 'PCQS') { $this->is_pcqs = true; } foreach ($run_object->get_contained_test_result_objects() as $result_object) { $this->add_test_result_object($result_object); } } else { if ($run_object instanceof pts_virtual_test_queue) { foreach ($run_object->get_contained_test_result_objects() as $result_object) { $this->add_test_result_object($result_object); } } else { if ($run_object instanceof pts_result_file) { // Print the $to_run ? $this->run_description = $run_object->get_description(); $preset_vars = $run_object->get_preset_environment_variables(); $result_objects = $run_object->get_result_objects(); $this->set_save_name($run_object->get_identifier(), false); $this->file_name_title = $run_object->get_title(); pts_module_manager::process_environment_variables_string_to_set($preset_vars); foreach ($result_objects as &$result_object) { if ($result_object->test_profile->get_identifier() == null) { continue; } $test_result = new pts_test_result($result_object->test_profile); $test_result->set_used_arguments($result_object->get_arguments()); $test_result->set_used_arguments_description($result_object->get_arguments_description()); $this->add_test_result_object($test_result); } } else { if ($run_object instanceof pts_virtual_test_suite) { $virtual_suite_tests = $run_object->get_contained_test_profiles(); foreach (array_keys($virtual_suite_tests) as $i) { if ($virtual_suite_tests[$i]->is_supported(false) == false || $this->validate_test_to_run($virtual_suite_tests[$i]) == false) { unset($virtual_suite_tests[$i]); } } sort($virtual_suite_tests); if (count($virtual_suite_tests) > 1) { array_push($virtual_suite_tests, 'All Tests In Suite'); } if (!$this->auto_mode && !$this->batch_mode) { $run_index = explode(',', pts_user_io::prompt_text_menu('Select the tests in the virtual suite to run', $virtual_suite_tests, true, true)); } else { $run_index = -1; } if (count($virtual_suite_tests) > 2 && in_array(count($virtual_suite_tests) - 1, $run_index) || $run_index == -1) { // The appended 'All Tests In Suite' was selected, so run all } else { foreach (array_keys($virtual_suite_tests) as $i) { if (!in_array($i, $run_index)) { unset($virtual_suite_tests[$i]); } } } foreach ($virtual_suite_tests as &$test_profile) { if ($test_profile instanceof pts_test_profile) { // The user is to configure virtual suites manually foreach (self::test_prompts_to_result_objects($test_profile) as $result_object) { $this->add_test_result_object($result_object); } } } } else { trigger_error($run_object . ' is not recognized.', E_USER_ERROR); continue; } } } } } } // AlwaysUploadResultsToOpenBenchmarking AutoSortRunQueue if (pts_config::read_bool_config('PhoronixTestSuite/Options/Testing/AutoSortRunQueue', 'TRUE') && $this->force_save_results == false) { // Not that it matters much, but if $this->force_save_results is set that means likely running from a result file... // so if running a result file, don't change the ordering of the existing results // Sort the run order so that all tests that are similar are grouped together, etc usort($this->tests_to_run, array('pts_test_run_manager', 'cmp_result_object_sort')); } if (pts_client::read_env('RUN_TESTS_IN_RANDOM_ORDER')) { shuffle($this->tests_to_run); } $this->prompt_save_results = $run_contains_a_no_result_type == false || $unique_test_count > 1; $this->force_save_results = $this->force_save_results || $request_results_save; }