private function getLockName(Lock $lock, $arguments) { $lockName = $this->lockPrefix . '_' . $lock->getMethod(); if (array_key_exists($lock->getArgumentIndex(), $arguments)) { $argumentHash = $this->getHashFromValue($arguments[$lock->getArgumentIndex()]); $lockName .= sprintf('_%s_%s', $lock->getArgumentIndex(), $argumentHash); } return $lockName; }
protected function execute(InputInterface $input, OutputInterface $output) { $decorator = new Decorator(new TestService(), 'test_service', new TestEventDispatcher()); $lock = new Lock(); $lock->setDriver(new File(new \Symfony\Component\Filesystem\Filesystem(), 'lock'))->setMethod('sleep'); $decorator->addLock($lock); $decorator->sleep((int) $input->getOption('seconds')); $output->write('done'); }
public function testLogger() { $decorator = new Decorator(new TestService(), 'test_service'); $lock = new Lock(); $lock->setDriver(new Debug())->setMethod('doNothing'); $decorator->addLock($lock); $logger = new TestLogger(); $decorator->setLogger($logger); $decorator->doNothing(); $this->assertEquals($this->expectedLogs, $logger->getLogs()); }
/** * @expectedException \Exception * @expectedExceptionMessage something exception */ public function testLockedMethodThatThrowsException() { $decorator = new Decorator(new TestService(), 'test_service'); $lock = new Lock(); $lock->setDriver(new Debug())->setMethod('doSomething'); $decorator->addLock($lock); $decorator->doSomething(function () { throw new \Exception('something exception'); }); }