NinjaMutex\Tests\Lock\Fabric\LockFabricWithExpirationInterface::create PHP Метод

create() публичный Метод

public create ( ) : NinjaMutex\Lock\LockInterface | NinjaMutex\Lock\LockExpirationInterface
Результат NinjaMutex\Lock\LockInterface | NinjaMutex\Lock\LockExpirationInterface
    public function create();

Usage Example

Пример #1
0
 /**
  * @issue https://github.com/arvenil/ninja-mutex/issues/12
  * @medium Timeout for test increased to ~5s http://stackoverflow.com/a/10535787/916440
  *
  * @dataProvider lockFabricWithExpirationProvider
  * @param LockFabricWithExpirationInterface $lockFabricWithExpiration
  */
 public function testExpiration(LockFabricWithExpirationInterface $lockFabricWithExpiration)
 {
     $expiration = 2;
     // in seconds
     $name = "lockWithExpiration_" . uniqid();
     $lockImplementor = $lockFabricWithExpiration->create();
     $lockImplementorWithExpiration = $lockFabricWithExpiration->create();
     $lockImplementorWithExpiration->setExpiration($expiration);
     // Aquire lock on implementor with lock expiration
     $this->assertTrue($lockImplementorWithExpiration->acquireLock($name, 0));
     // We hope code was fast enough so $expiration time didn't pass yet and lock still should be held
     $this->assertFalse($lockImplementor->acquireLock($name, 0));
     // Let's wait for lock to expire
     sleep($expiration);
     // Let's try again to lock
     $this->assertTrue($lockImplementor->acquireLock($name, 0));
     // Cleanup
     $this->assertTrue($lockImplementor->releaseLock($name, 0));
     // Expired lock is unusable, we need to clean it's lock state or otherwise
     // it will invoke in __destruct Exception (php*) or Fatal Error (hhvm)
     $this->assertTrue($lockImplementorWithExpiration->clearLock($name, 0));
 }
LockFabricWithExpirationInterface