From 0ea331e7d72fd1500016887a109d8ff65c0109da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Gallego?= Date: Thu, 2 Oct 2014 19:47:45 +0200 Subject: [PATCH] Update to beta 1 --- composer.json | 2 +- .../Factory/SqsWorkerControllerFactory.php | 7 ++- src/SlmQueueSqs/Worker/SqsWorker.php | 8 ++-- tests/SlmQueueSqsTest/Queue/SqsQueueTest.php | 3 +- .../Util/ServiceManagerFactory.php | 2 +- .../SlmQueueSqsTest/Worker/SqsWorkerTest.php | 43 +++++++++++++++++-- 6 files changed, 52 insertions(+), 13 deletions(-) diff --git a/composer.json b/composer.json index 90af458..135155d 100644 --- a/composer.json +++ b/composer.json @@ -40,7 +40,7 @@ }, "extra": { "branch-alias": { - "dev-master": "0.4.x-dev" + "dev-master": "0.4.0-beta1" } }, "autoload": { diff --git a/src/SlmQueueSqs/Factory/SqsWorkerControllerFactory.php b/src/SlmQueueSqs/Factory/SqsWorkerControllerFactory.php index 75af8b6..dbd274b 100644 --- a/src/SlmQueueSqs/Factory/SqsWorkerControllerFactory.php +++ b/src/SlmQueueSqs/Factory/SqsWorkerControllerFactory.php @@ -16,8 +16,11 @@ class SqsWorkerControllerFactory implements FactoryInterface */ public function createService(ServiceLocatorInterface $serviceLocator) { - $worker = $serviceLocator->getServiceLocator()->get('SlmQueueSqs\Worker\SqsWorker'); - $manager = $serviceLocator->getServiceLocator()->get('SlmQueue\Queue\QueuePluginManager'); + $parentLocator = $serviceLocator->getServiceLocator(); + + $worker = $parentLocator->get('SlmQueueSqs\Worker\SqsWorker'); + $manager = $parentLocator->get('SlmQueue\Queue\QueuePluginManager'); + return new SqsWorkerController($worker, $manager); } } diff --git a/src/SlmQueueSqs/Worker/SqsWorker.php b/src/SlmQueueSqs/Worker/SqsWorker.php index 667d1b7..ef68c06 100644 --- a/src/SlmQueueSqs/Worker/SqsWorker.php +++ b/src/SlmQueueSqs/Worker/SqsWorker.php @@ -6,6 +6,7 @@ use SlmQueue\Job\JobInterface; use SlmQueue\Queue\QueueInterface; use SlmQueue\Worker\AbstractWorker; +use SlmQueue\Worker\WorkerEvent; use SlmQueueSqs\Queue\SqsQueueInterface; /** @@ -19,7 +20,7 @@ class SqsWorker extends AbstractWorker public function processJob(JobInterface $job, QueueInterface $queue) { if (!$queue instanceof SqsQueueInterface) { - return; + return WorkerEvent::JOB_STATUS_UNKNOWN; } // In SQS, if an error occurs (exception for instance), the job is automatically reinserted @@ -28,10 +29,11 @@ public function processJob(JobInterface $job, QueueInterface $queue) try { $job->execute(); $queue->delete($job); - return static::JOB_SUCCESSFUL; + + return WorkerEvent::JOB_STATUS_SUCCESS; } catch (Exception $exception) { // Do nothing, the job will be reinserted automatically for another try - return static::JOB_RESCHEDULED; + return WorkerEvent::JOB_STATUS_FAILURE_RECOVERABLE; } } } diff --git a/tests/SlmQueueSqsTest/Queue/SqsQueueTest.php b/tests/SlmQueueSqsTest/Queue/SqsQueueTest.php index 0949846..898d241 100644 --- a/tests/SlmQueueSqsTest/Queue/SqsQueueTest.php +++ b/tests/SlmQueueSqsTest/Queue/SqsQueueTest.php @@ -2,12 +2,11 @@ namespace SlmQueueSqsTest\Queue; -use PHPUnit_Framework_TestCase as TestCase; use Guzzle\Service\Resource\Model as ResourceModel; +use PHPUnit_Framework_TestCase as TestCase; use SlmQueueSqs\Options\SqsQueueOptions; use SlmQueueSqs\Queue\SqsQueue; use SlmQueueSqsTest\Asset; -use Zend\ServiceManager\ServiceManager; class SqsQueueTest extends TestCase { diff --git a/tests/SlmQueueSqsTest/Util/ServiceManagerFactory.php b/tests/SlmQueueSqsTest/Util/ServiceManagerFactory.php index 39f1c85..7c72098 100644 --- a/tests/SlmQueueSqsTest/Util/ServiceManagerFactory.php +++ b/tests/SlmQueueSqsTest/Util/ServiceManagerFactory.php @@ -19,8 +19,8 @@ namespace SlmQueueSqsTest\Util; -use Zend\ServiceManager\ServiceManager; use Zend\Mvc\Service\ServiceManagerConfig; +use Zend\ServiceManager\ServiceManager; /** * Utility used to retrieve a freshly bootstrapped application's service manager diff --git a/tests/SlmQueueSqsTest/Worker/SqsWorkerTest.php b/tests/SlmQueueSqsTest/Worker/SqsWorkerTest.php index 584b5d0..d55e9eb 100644 --- a/tests/SlmQueueSqsTest/Worker/SqsWorkerTest.php +++ b/tests/SlmQueueSqsTest/Worker/SqsWorkerTest.php @@ -3,12 +3,30 @@ namespace SlmQueueSqsTest\Worker; use PHPUnit_Framework_TestCase as TestCase; -use SlmQueue\Options\WorkerOptions; +use SlmQueue\Worker\WorkerEvent; use SlmQueueSqs\Worker\SqsWorker; class SqsWorkerTest extends TestCase { - public function testAssertJobIsDeletedIfNoExceptionIsThrown() + /** + * @var SqsWorker + */ + protected $worker; + + public function setUp() + { + $this->worker = new SqsWorker($this->getMock('Zend\EventManager\EventManagerInterface')); + } + + public function testReturnsUnknownIfNotASqsQueue() + { + $queue = $this->getMock('SlmQueue\Queue\QueueInterface'); + $job = $this->getMock('SlmQueue\Job\JobInterface'); + + $this->assertEquals(WorkerEvent::JOB_STATUS_UNKNOWN, $this->worker->processJob($job, $queue)); + } + + public function testDeleteJobOnSuccess() { $queue = $this->getMock('SlmQueueSqs\Queue\SqsQueueInterface'); $job = $this->getMock('SlmQueue\Job\JobInterface'); @@ -16,8 +34,25 @@ public function testAssertJobIsDeletedIfNoExceptionIsThrown() $job->expects($this->once())->method('execute'); $queue->expects($this->once())->method('delete')->with($job); - $worker = new SqsWorker(new WorkerOptions()); + $status = $this->worker->processJob($job, $queue); - $worker->processJob($job, $queue); + $this->assertEquals(WorkerEvent::JOB_STATUS_SUCCESS, $status); } + + public function testDoNotDeleteJobOnFailure() + { + $queue = $this->getMock('SlmQueueSqs\Queue\SqsQueueInterface'); + $job = $this->getMock('SlmQueue\Job\JobInterface'); + + $job->expects($this->once()) + ->method('execute') + ->will($this->throwException(new \RuntimeException())); + + $queue->expects($this->never())->method('delete'); + + $status = $this->worker->processJob($job, $queue); + + $this->assertEquals(WorkerEvent::JOB_STATUS_FAILURE_RECOVERABLE, $status); + } + }