X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2Fsrc%2FCore%2FLock%2FDatabaseLockDriverTest.php;h=c51d153efce13da26fdab419995b02449f07fba6;hb=e6c054c27602a3acadac3c423273bdf748fcee27;hp=297e76d50b0fd25c70613fbe10aaefac1fef5a90;hpb=4aa28de89ec9dd0e27b37dbde9b8758c5bb6c4b4;p=friendica.git diff --git a/tests/src/Core/Lock/DatabaseLockDriverTest.php b/tests/src/Core/Lock/DatabaseLockDriverTest.php index 297e76d50b..c51d153efc 100644 --- a/tests/src/Core/Lock/DatabaseLockDriverTest.php +++ b/tests/src/Core/Lock/DatabaseLockDriverTest.php @@ -1,118 +1,74 @@ . + * + */ namespace Friendica\Test\src\Core\Lock; -use Friendica\Core\Cache; -use Friendica\Core\Lock\DatabaseLockDriver; -use Friendica\Test\Util\DbaLockMockTrait; +use Friendica\Core\Lock\DatabaseLock; +use Friendica\Factory\ConfigFactory; +use Friendica\Test\DatabaseTestTrait; +use Friendica\Test\Util\Database\StaticDatabase; +use Friendica\Test\Util\VFSTrait; +use Friendica\Util\ConfigFileLoader; +use Friendica\Util\Profiler; +use Mockery; +use Psr\Log\NullLogger; -/** - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled - */ class DatabaseLockDriverTest extends LockTest { - use DbaLockMockTrait; + use VFSTrait; + use DatabaseTestTrait; protected $pid = 123; - protected function setUp() + protected function setUp(): void { - $this->mockConnected(); - $this->mockConnect(); + $this->setUpVfsDir(); - $this->mockReleaseAll($this->pid, 2); + $this->setUpDb(); parent::setUp(); } protected function getInstance() { - 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); + $logger = new NullLogger(); + $profiler = Mockery::mock(Profiler::class); + $profiler->shouldReceive('startRecording'); + $profiler->shouldReceive('stopRecording'); + $profiler->shouldReceive('saveTimestamp')->withAnyArgs()->andReturn(true); - $this->mockReleaseAll($this->pid, 1); + // load real config to avoid mocking every config-entry which is related to the Database class + $configFactory = new ConfigFactory(); + $loader = (new ConfigFactory())->createConfigFileLoader($this->root->url(), []); + $configCache = $configFactory->createCache($loader); - $this->mockIsLocked('bar', false, $this->startTime, 1); - $this->mockIsLocked('nice', false, $this->startTime, 1); + $dba = new StaticDatabase($configCache, $profiler, $logger); - parent::testReleaseAfterUnlock(); + return new DatabaseLock($dba, $this->pid); } - public function testReleaseWitTTL() + protected function tearDown(): void { - $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); + $this->tearDownDb(); - parent::testReleaseWitTTL(); + parent::tearDown(); } }