diff --git a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php index 543105fe9648a0d22790346363acb2959db033af..f71e1a2e93981a419fc4d0825594d02cc8eca481 100644 --- a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php +++ b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php @@ -884,9 +884,14 @@ public function run(array $methods = array()) { * @see drupal_valid_test_ua() */ private function prepareDatabasePrefix() { - $suffix = mt_rand(1000, 1000000); - $this->siteDirectory = 'sites/simpletest/' . $suffix; - $this->databasePrefix = 'simpletest' . $suffix; + // Ensure that the generated test site directory does not exist already, + // which may happen with a large amount of concurrent threads and + // long-running tests. + do { + $suffix = mt_rand(100000, 999999); + $this->siteDirectory = 'sites/simpletest/' . $suffix; + $this->databasePrefix = 'simpletest' . $suffix; + } while (is_dir(DRUPAL_ROOT . '/' . $this->siteDirectory)); // As soon as the database prefix is set, the test might start to execute. // All assertions as well as the SimpleTest batch operations are associated