. * * @package LibreNMS * @link http://librenms.org * @copyright 2017 Tony Murray * @author Tony Murray */ namespace LibreNMS\Tests; use LibreNMS\Exceptions\LockException; use LibreNMS\Util\FileLock; class LockTest extends TestCase { public function testFileLock() { $lock = FileLock::lock('tests'); $lock->release(); $new_lock = FileLock::lock('tests'); unset($new_lock); FileLock::lock('tests'); } public function testFileLockFail() { $lock = FileLock::lock('tests'); $this->setExpectedException('LibreNMS\Exceptions\LockException'); $failed_lock = FileLock::lock('tests'); } public function testFileLockWait() { $lock = FileLock::lock('tests'); $start = microtime(true); $this->setExpectedException('LibreNMS\Exceptions\LockException'); $wait_lock = FileLock::lock('tests', 1); $this->assertGreaterThan(1, microtime(true) - $start, 'Lock did not wait.'); $lock->release(); $start = microtime(true); $wait_lock = FileLock::lock('tests', 5); $this->assertLessThan(1, microtime(true) - $start, 'Lock waited when it should not have'); } }