X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2Fsrc%2FCore%2FLock%2FDatabaseLockDriverTest.php;h=297e76d50b0fd25c70613fbe10aaefac1fef5a90;hb=f4ec7c47b921209b5ff7906bee8aba9db326d0cb;hp=e5ca825c990a58eec374615d76729bd1509031c8;hpb=0472c7b57d0bc6852e9b6eb6aeb8018c384d499f;p=friendica.git diff --git a/tests/src/Core/Lock/DatabaseLockDriverTest.php b/tests/src/Core/Lock/DatabaseLockDriverTest.php index e5ca825c99..297e76d50b 100644 --- a/tests/src/Core/Lock/DatabaseLockDriverTest.php +++ b/tests/src/Core/Lock/DatabaseLockDriverTest.php @@ -2,8 +2,9 @@ namespace Friendica\Test\src\Core\Lock; +use Friendica\Core\Cache; use Friendica\Core\Lock\DatabaseLockDriver; -use Friendica\Database\DBA; +use Friendica\Test\Util\DbaLockMockTrait; /** * @runTestsInSeparateProcesses @@ -11,14 +12,107 @@ use Friendica\Database\DBA; */ class DatabaseLockDriverTest extends LockTest { + use DbaLockMockTrait; + + protected $pid = 123; + + protected function setUp() + { + $this->mockConnected(); + $this->mockConnect(); + + $this->mockReleaseAll($this->pid, 2); + + parent::setUp(); + } + protected function getInstance() { - return new DatabaseLockDriver(); + return new DatabaseLockDriver($this->pid); + } + + public function testLock() + { + $this->mockIsLocked('foo', false, $this->startTime, 1); + $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1); + $this->mockIsLocked('foo', true, $this->startTime, 1); + $this->mockIsLocked('bar', false, $this->startTime, 1); + + parent::testLock(); + } + + public function testDoubleLock() + { + $this->mockIsLocked('foo', false, $this->startTime, 1); + $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1); + $this->mockIsLocked('foo', true, $this->startTime, 1); + $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, true, $this->pid, true, $this->startTime, 1); + + parent::testDoubleLock(); + } + + public function testReleaseLock() + { + $this->mockIsLocked('foo', false, $this->startTime, 1); + $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1); + $this->mockIsLocked('foo', true, $this->startTime, 1); + $this->mockReleaseLock('foo', $this->pid, 1); + $this->mockIsLocked('foo', false, $this->startTime, 1); + + parent::testReleaseLock(); + } + + public function testReleaseAll() + { + $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1); + $this->mockAcquireLock('bar', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1); + $this->mockAcquireLock('nice', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1); + + $this->mockIsLocked('foo', true, $this->startTime, 1); + $this->mockIsLocked('bar', true, $this->startTime, 1); + $this->mockIsLocked('nice', true, $this->startTime, 1); + + $this->mockReleaseAll($this->pid, 1); + + $this->mockIsLocked('foo', false, $this->startTime, 1); + $this->mockIsLocked('bar', false, $this->startTime, 1); + $this->mockIsLocked('nice', false, $this->startTime, 1); + + parent::testReleaseAll(); + } + + public function testReleaseAfterUnlock() + { + $this->mockIsLocked('foo', false, $this->startTime, 1); + $this->mockIsLocked('bar', false, $this->startTime, 1); + $this->mockIsLocked('nice', false, $this->startTime, 1); + + $this->mockAcquireLock('foo', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1); + $this->mockAcquireLock('bar', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1); + $this->mockAcquireLock('nice', Cache::FIVE_MINUTES, false, $this->pid, false, $this->startTime, 1); + + $this->mockReleaseLock('foo', $this->pid, 1); + + $this->mockIsLocked('foo', false, $this->startTime, 1); + $this->mockIsLocked('bar', true, $this->startTime, 1); + $this->mockIsLocked('nice', true, $this->startTime, 1); + + $this->mockReleaseAll($this->pid, 1); + + $this->mockIsLocked('bar', false, $this->startTime, 1); + $this->mockIsLocked('nice', false, $this->startTime, 1); + + parent::testReleaseAfterUnlock(); } - public function tearDown() + public function testReleaseWitTTL() { - DBA::delete('locks', [ 'id > 0']); - parent::tearDown(); + $this->mockIsLocked('test', false, $this->startTime, 1); + $this->mockAcquireLock('test', 10, false, $this->pid, false, $this->startTime, 1); + $this->mockIsLocked('test', true, $this->startTime, 1); + $this->mockReleaseLock('test', $this->pid, 1); + $this->mockIsLocked('test', false, $this->startTime, 1); + + parent::testReleaseWitTTL(); } }