/** * @covers BagOStuff::getScopedLock */ public function testGetScopedLock() { $key = wfMemcKey('test'); $value1 = $this->cache->getScopedLock($key, 0); $value2 = $this->cache->getScopedLock($key, 0); $this->assertType(ScopedCallback::class, $value1, 'First call returned lock'); $this->assertNull($value2, 'Duplicate call returned no lock'); unset($value1); $value3 = $this->cache->getScopedLock($key, 0); $this->assertType(ScopedCallback::class, $value3, 'Lock returned callback after release'); unset($value3); $value1 = $this->cache->getScopedLock($key, 0, 5, 'reentry'); $value2 = $this->cache->getScopedLock($key, 0, 5, 'reentry'); $this->assertType(ScopedCallback::class, $value1, 'First reentrant call returned lock'); $this->assertType(ScopedCallback::class, $value1, 'Second reentrant call returned lock'); }
/** * @param string $key A language message cache key that stores blobs * @param integer $timeout Wait timeout in seconds * @return null|ScopedCallback */ protected function getReentrantScopedLock($key, $timeout = self::WAIT_SEC) { return $this->mMemc->getScopedLock($key, $timeout, self::LOCK_TTL, __METHOD__); }