function TestDatabase::getTestLock
Same name in other branches
- 9 core/lib/Drupal/Core/Test/TestDatabase.php \Drupal\Core\Test\TestDatabase::getTestLock()
- 8.9.x core/lib/Drupal/Core/Test/TestDatabase.php \Drupal\Core\Test\TestDatabase::getTestLock()
- 10 core/lib/Drupal/Core/Test/TestDatabase.php \Drupal\Core\Test\TestDatabase::getTestLock()
Generates a unique lock ID for the test method.
Parameters
bool $create_lock: (optional) Whether or not to create a lock file. Defaults to FALSE.
Return value
int The unique lock ID for the test method.
1 call to TestDatabase::getTestLock()
- TestDatabase::__construct in core/
lib/ Drupal/ Core/ Test/ TestDatabase.php - TestDatabase constructor.
1 method overrides TestDatabase::getTestLock()
- TestTestDatabase::getTestLock in core/
tests/ Drupal/ Tests/ Core/ Test/ TestDatabaseTest.php - Generates a unique lock ID for the test method.
File
-
core/
lib/ Drupal/ Core/ Test/ TestDatabase.php, line 89
Class
- TestDatabase
- Provides helper methods for interacting with the fixture database.
Namespace
Drupal\Core\TestCode
protected function getTestLock(bool $create_lock = FALSE) : int {
// There is a risk that the generated random number is a duplicate. This
// would cause different tests to try to use the same database prefix.
// Therefore, if running with a concurrency of greater than 1, we need to
// create a lock.
if (getenv('RUN_TESTS_CONCURRENCY') > 1) {
$create_lock = TRUE;
}
do {
$lock_id = mt_rand(10000000, 99999999);
if ($create_lock && @symlink(__FILE__, $this->getLockFile($lock_id)) === FALSE) {
// If we can't create a symlink, the lock ID is in use. Generate another
// one. Symlinks are used because they are atomic and reliable.
$lock_id = NULL;
}
} while ($lock_id === NULL);
return $lock_id;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.