32 $instance =
new Locker(
'999999999');
49 new Locker(
'999999999',
'foo');
57 $instance =
new Locker(
'999999999',
'');
66 $this->assertSame(150, $instance->_get(
'loops'));
74 $this->assertSame(10, $instance->_get(
'loops'));
82 $this->assertSame(200, $instance->_get(
'step'));
90 $this->assertSame(10, $instance->_get(
'step'));
99 $this->assertTrue(is_dir(PATH_site . Locker::FILE_LOCK_FOLDER));
107 $this->assertSame(md5(
'999999999'), $instance->getId());
122 if (!function_exists(
'sem_get')) {
123 $this->markTestSkipped(
'The system does not support semaphore base locking.');
126 $this->assertSame(abs(crc32(
'999999999')), $instance->getId());
136 if (TYPO3_OS ==
'WIN') {
137 $this->markTestSkipped(
'acquireFixesPermissionsOnLockFileIfUsingSimpleLogging() test not available on Windows.');
141 $instance->setEnableLogging(FALSE);
142 $pathOfLockFile = $instance->getResource();
143 $GLOBALS[
'TYPO3_CONF_VARS'][
'BE'][
'fileCreateMask'] =
'0777';
145 $instance->acquireExclusiveLock();
147 $resultFilePermissions = substr(decoct(fileperms($pathOfLockFile)), 2);
148 $instance->release();
149 $this->assertEquals($resultFilePermissions,
'0777');
163 $instance->setEnableLogging(FALSE);
165 $lockFile = $instance->getResource();
166 $instance->acquireExclusiveLock();
167 $instance->release();
168 $this->assertFalse(is_file($lockFile));
176 'simple not within PATH_site' => array(
'simple',
'/tmp/TYPO3-Lock-Test'),
177 'flock not withing PATH_site' => array(
'flock',
'/tmp/TYPO3-Lock-Test'),
178 'simple directory traversal' => array(
'simple', PATH_site .
'typo3temp/../typo3temp/locks/foo'),
179 'flock directory traversal' => array(
'flock', PATH_site .
'typo3temp/../typo3temp/locks/foo'),
180 'simple directory traversal 2' => array(
'simple', PATH_site .
'typo3temp/locks/../locks/foo'),
181 'flock directory traversal 2' => array(
'flock', PATH_site .
'typo3temp/locks/../locks/foo'),
182 'simple within uploads' => array(
'simple', PATH_site .
'uploads/TYPO3-Lock-Test'),
183 'flock within uploads' => array(
'flock', PATH_site .
'uploads/TYPO3-Lock-Test')
192 if (TYPO3_OS ===
'WIN') {
193 $this->markTestSkipped(
'releaseDoesNotRemoveFilesNotWithinTypo3TempLocksDirectory() test not available on Windows.');
197 if (!is_file($file)) {
198 $this->markTestSkipped(
'releaseDoesNotRemoveFilesNotWithinTypo3TempLocksDirectory() skipped: Test file could not be created');
201 $instance =
new Locker(999999999, $lockMethod);
202 $instance->setEnableLogging(FALSE);
203 $t3libLockReflection = new \ReflectionClass(
'TYPO3\\CMS\\Core\\Locking\\Locker');
204 $t3libLockReflectionResourceProperty = $t3libLockReflection->getProperty(
'resource');
205 $t3libLockReflectionResourceProperty->setAccessible(TRUE);
206 $t3libLockReflectionResourceProperty->setValue($instance, $file);
207 $t3libLockReflectionAcquiredProperty = $t3libLockReflection->getProperty(
'isAcquired');
208 $t3libLockReflectionAcquiredProperty->setAccessible(TRUE);
209 $t3libLockReflectionAcquiredProperty->setValue($instance, TRUE);
211 $instance->release();
213 $fileExists = is_file($file);
214 if (is_file($file)) {
217 $this->assertTrue($fileExists);
acquireFixesPermissionsOnLockFileIfUsingSimpleLogging()
const LOCKING_METHOD_SEMAPHORE
constructorSetsStepToGivenNumberOfStep()
constructorSetsMethodToGivenParameter()
constructorUsesDefaultValueForSteps()
constructorThrowsExceptionForNotExistingLockingMethod()
static rmdir($path, $removeNonEmpty=FALSE)
const LOCKING_METHOD_SIMPLE
constructorFetchesInstallToolConfigurationIfEmptyMethod()
constructorCreatesLockDirectoryIfNotExisting()
getAccessibleMock( $originalClassName, array $methods=array(), array $arguments=array(), $mockClassName='', $callOriginalConstructor=TRUE, $callOriginalClone=TRUE, $callAutoload=TRUE)
constructorUsesDefaultValueForLoops()
releaseDoesNotRemoveFilesNotWithinTypo3TempLocksDirectory($lockMethod, $file)
constructorUsesDefaultLockingMethodSimple()
constructorSetsLoopsToGivenNumberOfLoops()
constructorSetsIdToMd5OfStringIfUsingSimpleLocking()
releaseRemovesLockfileInTypo3TempLocks()
constructorSetsIdToAbsCrc32OfIdStringIfUsingSemaphoreLocking()
constructorSetsResourceToPathWithIdIfUsingSimpleLocking()
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]
const LOCKING_METHOD_FLOCK
const LOCKING_METHOD_DISABLED