$test_files = array();
$redir_tests = array();
$test_results = array();
-$PHP_FAILED_TESTS = array('BORKED' => array(), 'FAILED' => array(), 'WARNED' => array(), 'LEAKED' => array(), 'XFAILED' => array());
+$PHP_FAILED_TESTS = array('BORKED' => array(), 'FAILED' => array(), 'WARNED' => array(), 'LEAKED' => array(), 'XFAILED' => array(), 'SLOW' => array());
// If parameters given assume they represent selected tests to run.
$failed_tests_file= false;
$temp_urlbase = null;
$conf_passed = null;
$no_clean = false;
+$slow_min_ms = INF;
$cfgtypes = array('show', 'keep');
$cfgfiles = array('skip', 'php', 'clean', 'out', 'diff', 'exp');
$cfg['show'][$file] = true;
}
break;
+ case '--show-slow':
+ $slow_min_ms = $argv[++$i];
+ break;
case '--temp-source':
$temp_source = $argv[++$i];
break;
get written independent of the log format, however 'diff' only
exists when a test fails.
+ --show-slow [n]
+ Show all tests that took longer than [n] milliseconds to run.
+
--no-clean Do not execute clean section if any.
HELP;
global $valgrind_version;
global $SHOW_ONLY_GROUPS;
global $no_file_cache;
+ global $slow_min_ms;
$temp_filenames = null;
$org_file = $file;
";
junit_start_timer($shortname);
+ $startTime = microtime(true);
$out = system_with_timeout($cmd, $env, isset($section_text['STDIN']) ? $section_text['STDIN'] : null, $captureStdIn, $captureStdOut, $captureStdErr);
junit_finish_timer($shortname);
+ $time = microtime(true) - $startTime;
+ if ($time * 1000 >= $slow_min_ms) {
+ $PHP_FAILED_TESTS['SLOW'][] = array(
+ 'name' => $file,
+ 'test_name' => (is_array($IN_REDIRECT) ? $IN_REDIRECT['via'] : '') . $tested . " [$tested_file]",
+ 'output' => '',
+ 'diff' => '',
+ 'info' => $time,
+ );
+ }
if (array_key_exists('CLEAN', $section_text) && (!$no_clean || $cfg['keep']['clean'])) {
';
$failed_test_summary = '';
+ if (count($PHP_FAILED_TESTS['SLOW'])) {
+ usort($PHP_FAILED_TESTS['SLOW'], function($a, $b) {
+ return $a['info'] < $b['info'] ? 1 : -1;
+ });
+
+ $failed_test_summary .= '
+=====================================================================
+SLOW TEST SUMMARY
+---------------------------------------------------------------------
+';
+ foreach ($PHP_FAILED_TESTS['SLOW'] as $failed_test_data) {
+ $failed_test_summary .= sprintf('(%.3f s) ', $failed_test_data['info']) . $failed_test_data['test_name'] . "\n";
+ }
+ $failed_test_summary .= "=====================================================================\n";
+ }
+
if (count($PHP_FAILED_TESTS['XFAILED'])) {
$failed_test_summary .= '
=====================================================================