Commit bcdf1339 authored by Dries's avatar Dries
Browse files

- Patch #329407 by dereine, birdmanx35, hswong3i et al: report running time of simpletests.

parent 9a01a133
......@@ -263,6 +263,8 @@ function _batch_process() {
// If we are in progressive mode, break processing after 1 second.
if ($batch['progressive'] && timer_read('batch_processing') > 1000) {
// Record elapsed wall clock time.
$current_set['elapsed'] = round((microtime(TRUE) - $current_set['start']) * 1000, 2);
break;
}
}
......@@ -289,11 +291,16 @@ function _batch_process() {
$current = $total - $remaining + $finished;
$percentage = $total ? floor($current / $total * 100) : 100;
$elapsed = $current_set['elapsed'];
// Estimate remaining with percentage in floating format.
$estimate = $elapsed * ($total - $current) / $current;
$values = array(
'@remaining' => $remaining,
'@total' => $total,
'@current' => floor($current),
'@percentage' => $percentage,
'@elapsed' => format_interval($elapsed / 1000),
'@estimate' => format_interval($estimate / 1000),
);
$message = strtr($progress_message, $values);
if (!empty($message)) {
......@@ -360,7 +367,8 @@ function _batch_finished() {
include_once DRUPAL_ROOT . '/' . $batch_set['file'];
}
if (function_exists($batch_set['finished'])) {
$batch_set['finished']($batch_set['success'], $batch_set['results'], $batch_set['operations']);
// Format the elapsed time when batch complete.
$batch_set['finished']($batch_set['success'], $batch_set['results'], $batch_set['operations'], format_interval($batch_set['elapsed'] / 1000));
}
}
}
......
......@@ -2501,8 +2501,9 @@ function form_clean_id($id = NULL, $flush = FALSE) {
* 'init_message': message displayed while the processing is initialized.
* Defaults to t('Initializing.').
* 'progress_message': message displayed while processing the batch.
* Available placeholders are @current, @remaining, @total and @percent.
* Defaults to t('Remaining @remaining of @total.').
* Available placeholders are @current, @remaining, @total, @percentage,
* @estimate and @elapsed.
* Defaults to t('Completed @current of @total.').
* 'error_message': message displayed if an error occurred while processing
* the batch.
* Defaults to t('An error has occurred.').
......@@ -2539,6 +2540,8 @@ function batch_set($batch_definition) {
'sandbox' => array(),
'results' => array(),
'success' => FALSE,
'start' => microtime(TRUE),
'elapsed' => 0,
);
// Use get_t() to allow batches at install time.
$t = get_t();
......
......@@ -434,12 +434,12 @@ function _simpletest_batch_operation($test_list_init, $test_id, &$context) {
$context['finished'] = 1 - $size / $max;
}
function _simpletest_batch_finished($success, $results, $operations) {
function _simpletest_batch_finished($success, $results, $operations, $elapsed) {
if (isset($results['test_id'])) {
$_SESSION['test_id'] = $results['test_id'];
}
if ($success) {
drupal_set_message(t('The tests have finished running.'));
drupal_set_message(t('The tests finished in @elapsed.', array('@elapsed' => $elapsed)));
}
else {
drupal_set_message(t('The tests did not successfully finish.'), 'error');
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment