X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2Fsrc%2FCore%2FLock%2FLockTest.php;h=28f51733f428d9f7748dd0d52fa5a037a50bc047;hb=8660f6d86fc5d8f8f997b4b6a537b80d7ffbedff;hp=9698f0bdea42ef587a0692e5989db16c7b927c1b;hpb=71ec84f6dc83f753fe80170cfdfd32d202850d90;p=friendica.git diff --git a/tests/src/Core/Lock/LockTest.php b/tests/src/Core/Lock/LockTest.php index 9698f0bdea..28f51733f4 100644 --- a/tests/src/Core/Lock/LockTest.php +++ b/tests/src/Core/Lock/LockTest.php @@ -2,12 +2,20 @@ namespace Friendica\Test\src\Core\Lock; -use Friendica\BaseObject; -use Friendica\Core\Config; -use Friendica\Test\DatabaseTest; +use Friendica\Test\MockedTest; +use Friendica\Test\Util\AppMockTrait; +use Friendica\Test\Util\VFSTrait; -abstract class LockTest extends DatabaseTest +abstract class LockTest extends MockedTest { + use VFSTrait; + use AppMockTrait; + + /** + * @var int Start time of the mock (used for time operations) + */ + protected $startTime = 1417011228; + /** * @var \Friendica\Core\Lock\ILockDriver */ @@ -17,25 +25,30 @@ abstract class LockTest extends DatabaseTest protected function setUp() { + // Reusable App object + $this->setUpVfsDir(); + $this->mockApp($this->root); + $this->app + ->shouldReceive('getHostname') + ->andReturn('friendica.local'); + parent::setUp(); $this->instance = $this->getInstance(); + $this->instance->releaseAll(); + } - // Reusable App object - $this->app = BaseObject::getApp(); - - // Default config - Config::set('config', 'hostname', 'localhost'); - Config::set('system', 'throttle_limit_day', 100); - Config::set('system', 'throttle_limit_week', 100); - Config::set('system', 'throttle_limit_month', 100); - Config::set('system', 'theme', 'system_theme'); + protected function tearDown() + { + $this->instance->releaseAll(); + parent::tearDown(); } /** * @small */ public function testLock() { - $this->instance->acquireLock('foo', 1); + $this->assertFalse($this->instance->isLocked('foo')); + $this->assertTrue($this->instance->acquireLock('foo', 1)); $this->assertTrue($this->instance->isLocked('foo')); $this->assertFalse($this->instance->isLocked('bar')); } @@ -44,7 +57,8 @@ abstract class LockTest extends DatabaseTest * @small */ public function testDoubleLock() { - $this->instance->acquireLock('foo', 1); + $this->assertFalse($this->instance->isLocked('foo')); + $this->assertTrue($this->instance->acquireLock('foo', 1)); $this->assertTrue($this->instance->isLocked('foo')); // We already locked it $this->assertTrue($this->instance->acquireLock('foo', 1)); @@ -54,7 +68,8 @@ abstract class LockTest extends DatabaseTest * @small */ public function testReleaseLock() { - $this->instance->acquireLock('foo', 1); + $this->assertFalse($this->instance->isLocked('foo')); + $this->assertTrue($this->instance->acquireLock('foo', 1)); $this->assertTrue($this->instance->isLocked('foo')); $this->instance->releaseLock('foo'); $this->assertFalse($this->instance->isLocked('foo')); @@ -64,15 +79,15 @@ abstract class LockTest extends DatabaseTest * @small */ public function testReleaseAll() { - $this->instance->acquireLock('foo', 1); - $this->instance->acquireLock('bar', 1); - $this->instance->acquireLock('nice', 1); + $this->assertTrue($this->instance->acquireLock('foo', 1)); + $this->assertTrue($this->instance->acquireLock('bar', 1)); + $this->assertTrue($this->instance->acquireLock('nice', 1)); $this->assertTrue($this->instance->isLocked('foo')); $this->assertTrue($this->instance->isLocked('bar')); $this->assertTrue($this->instance->isLocked('nice')); - $this->instance->releaseAll(); + $this->assertTrue($this->instance->releaseAll()); $this->assertFalse($this->instance->isLocked('foo')); $this->assertFalse($this->instance->isLocked('bar')); @@ -83,30 +98,49 @@ abstract class LockTest extends DatabaseTest * @small */ public function testReleaseAfterUnlock() { - $this->instance->acquireLock('foo', 1); - $this->instance->acquireLock('bar', 1); - $this->instance->acquireLock('nice', 1); + $this->assertFalse($this->instance->isLocked('foo')); + $this->assertFalse($this->instance->isLocked('bar')); + $this->assertFalse($this->instance->isLocked('nice')); + $this->assertTrue($this->instance->acquireLock('foo', 1)); + $this->assertTrue($this->instance->acquireLock('bar', 1)); + $this->assertTrue($this->instance->acquireLock('nice', 1)); - $this->instance->releaseLock('foo'); + $this->assertTrue($this->instance->releaseLock('foo')); $this->assertFalse($this->instance->isLocked('foo')); $this->assertTrue($this->instance->isLocked('bar')); $this->assertTrue($this->instance->isLocked('nice')); - $this->instance->releaseAll(); + $this->assertTrue($this->instance->releaseAll()); $this->assertFalse($this->instance->isLocked('bar')); $this->assertFalse($this->instance->isLocked('nice')); } + /** + * @small + */ + public function testReleaseWitTTL() + { + $this->assertFalse($this->instance->isLocked('test')); + $this->assertTrue($this->instance->acquireLock('test', 1, 10)); + $this->assertTrue($this->instance->isLocked('test')); + $this->assertTrue($this->instance->releaseLock('test')); + $this->assertFalse($this->instance->isLocked('test')); + } + /** * @medium */ function testLockTTL() { + $this->markTestSkipped('taking too much time without mocking'); + + $this->assertFalse($this->instance->isLocked('foo')); + $this->assertFalse($this->instance->isLocked('bar')); // TODO [nupplaphil] - Because of the Datetime-Utils for the database, we have to wait a FULL second between the checks to invalidate the db-locks/cache - $this->instance->acquireLock('foo', 1, 1); - $this->instance->acquireLock('bar', 1, 3); + $this->assertTrue($this->instance->acquireLock('foo', 2, 1)); + $this->assertTrue($this->instance->acquireLock('bar', 2, 3)); $this->assertTrue($this->instance->isLocked('foo')); $this->assertTrue($this->instance->isLocked('bar'));