MDL-57940 behat: Allow behat parallel run to start with delay

Behat parallel run if executed together
then selenium might fail to launch browser
and timeout. It would be nice to have a
custom delay between the start of each process
This commit is contained in:
Rajesh Taneja 2017-02-10 14:55:21 +08:00
parent 0f59b6dd75
commit 26bf6d4ead
No known key found for this signature in database
GPG Key ID: B363F7FB787F80E4
2 changed files with 13 additions and 2 deletions

View File

@ -262,8 +262,13 @@ if (empty($parallelrun)) {
behat_config_manager::set_behat_run_config_value('lasttorun', $options['torun']);
behat_config_manager::set_behat_run_config_value('lastfromrun', $options['fromrun']);
// Keep no delay by default, between each parallel, let user decide.
if (!defined('BEHAT_PARALLEL_START_DELAY')) {
define('BEHAT_PARALLEL_START_DELAY', 0);
}
// Execute all commands, relative to moodle root directory.
$processes = cli_execute_parallel($cmds, __DIR__ . "/../../../../");
$processes = cli_execute_parallel($cmds, __DIR__ . "/../../../../", BEHAT_PARALLEL_START_DELAY);
$stoponfail = empty($options['stop-on-failure']) ? false : true;
// Print header.

View File

@ -493,9 +493,10 @@ function behat_get_run_process() {
*
* @param array $cmds list of commands to be executed.
* @param string $cwd absolute path of working directory.
* @param int $delay time in seconds to add delay between each parallel process.
* @return array list of processes.
*/
function cli_execute_parallel($cmds, $cwd = null) {
function cli_execute_parallel($cmds, $cwd = null, $delay = 0) {
require_once(__DIR__ . "/../../vendor/autoload.php");
$processes = array();
@ -519,6 +520,11 @@ function cli_execute_parallel($cmds, $cwd = null) {
}
exit(1);
}
// Sleep for specified delay.
if ($delay) {
sleep($delay);
}
}
return $processes;
}