Skip to content
This repository has been archived by the owner on Jul 2, 2024. It is now read-only.

Commit

Permalink
Merge pull request #22 from juriansluiman/update-latest
Browse files Browse the repository at this point in the history
Update to beta 1
  • Loading branch information
bakura10 committed Oct 2, 2014
2 parents e5db7b0 + 0ea331e commit d9c8b07
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 13 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
},
"extra": {
"branch-alias": {
"dev-master": "0.4.x-dev"
"dev-master": "0.4.0-beta1"
}
},
"autoload": {
Expand Down
7 changes: 5 additions & 2 deletions src/SlmQueueSqs/Factory/SqsWorkerControllerFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
8 changes: 5 additions & 3 deletions src/SlmQueueSqs/Worker/SqsWorker.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use SlmQueue\Job\JobInterface;
use SlmQueue\Queue\QueueInterface;
use SlmQueue\Worker\AbstractWorker;
use SlmQueue\Worker\WorkerEvent;
use SlmQueueSqs\Queue\SqsQueueInterface;

/**
Expand All @@ -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
Expand All @@ -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;
}
}
}
3 changes: 1 addition & 2 deletions tests/SlmQueueSqsTest/Queue/SqsQueueTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down
2 changes: 1 addition & 1 deletion tests/SlmQueueSqsTest/Util/ServiceManagerFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
43 changes: 39 additions & 4 deletions tests/SlmQueueSqsTest/Worker/SqsWorkerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,56 @@
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');

$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);
}

}

0 comments on commit d9c8b07

Please sign in to comment.