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 #36 from basz/eventmanager-deprecations
Browse files Browse the repository at this point in the history
Service Manager and Event Manager compatibility
  • Loading branch information
bakura10 authored Jun 28, 2016
2 parents e140c09 + 2259c3d commit 255b09d
Show file tree
Hide file tree
Showing 11 changed files with 105 additions and 34 deletions.
7 changes: 7 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/tests export-ignore
/vendor export-ignore
.gitattributes export-ignore
.gitignore export-ignore
.scrutinizer.yml export-ignore
.travis.yml export-ignore
phpunit.xml.dist export-ignore
18 changes: 15 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
sudo: false

language: php

cache:
directories:
- $HOME/.composer/cache
- vendor

php:
- 5.5
- 5.6
- 7.0

env:
matrix:
- PREFER_LOWEST="--prefer-lowest"
- PREFER_LOWEST=""

before_script:
- composer self-update
- composer install --dev --prefer-source
- composer update --prefer-source $PREFER_LOWEST

script:
- phpunit
- ./vendor/bin/phpcs --standard=PSR2 ./src/
- vendor/bin/phpunit -c ./phpunit.xml.dist
- vendor/bin/phpcs --standard=PSR2 src

notifications:
irc: "irc.freenode.org#zftalk.modules"
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# 0.6.0

- [BC] Synchronize with SlmQueue release 0.6.0 which adds compatibility with PHP7, zend-servicemanager 3 and zend-eventmanager 3

# 0.5.0

- [BC] SlmQueueSqs is now based on AWS SDK v3. As a consequence, minimum PHP dependency has been bumped to 5.5.
Expand Down
31 changes: 21 additions & 10 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,27 @@
}
],
"require": {
"php": ">=5.5",
"zendframework/zend-mvc": "~2.2",
"zendframework/zend-servicemanager": "~2.2",
"zendframework/zend-stdlib": "~2.2",
"slm/queue": "0.4.*",
"aws/aws-sdk-php-zf2": "2.*"
"php": "^5.5 || ^7.0",
"zendframework/zend-eventmanager": "^2.6 || ^3.0",
"zendframework/zend-servicemanager": "^2.7 || ^3.0",
"zendframework/zend-stdlib": "^2.2 || ^3.0",
"slm/queue": "^0.6",
"aws/aws-sdk-php-zf2": "^2.0,>=2.0.2"
},
"require-dev": {
"zendframework/zendframework": "~2.2",
"phpunit/phpunit": "~4.1",
"squizlabs/php_codesniffer": "2.*"
"zendframework/zend-config": "^2.2",
"zendframework/zend-modulemanager": "^2.5",
"zendframework/zend-view": "^2.5",
"zendframework/zend-log": "^2.5",
"zendframework/zend-i18n": "^2.5",
"zendframework/zend-serializer": "^2.5",
"zendframework/zend-mvc": "^2.5",
"phpunit/phpunit": "^4.8",
"squizlabs/php_codesniffer": "^2.1"
},
"extra": {
"branch-alias": {
"dev-master": "0.5.0-dev"
"dev-master": "0.6.x-dev"
}
},
"autoload": {
Expand All @@ -48,5 +54,10 @@
"classmap": [
"./Module.php"
]
},
"autoload-dev": {
"psr-4": {
"SlmQueueSqsTest\\": "tests/"
}
}
}
7 changes: 7 additions & 0 deletions phpunit.xml → phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,11 @@
<directory suffix=".php">./src</directory>
</whitelist>
</filter>

<logging>
<log type="coverage-clover" target="./tests/build/logs/clover.xml"/>
<log type="coverage-html" target="./tests/build/coverage" charset="UTF-8"
yui="true" highlight="true" lowUpperBound="90" highLowerBound="100"/>
</logging>

</phpunit>
29 changes: 21 additions & 8 deletions src/SlmQueueSqs/Factory/SqsQueueFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace SlmQueueSqs\Factory;

use Aws\Sdk as Aws;
use Interop\Container\ContainerInterface;
use SlmQueue\Job\JobPluginManager;
use SlmQueueSqs\Options\SqsQueueOptions;
use SlmQueueSqs\Queue\SqsQueue;
Expand All @@ -15,21 +16,33 @@
class SqsQueueFactory implements FactoryInterface
{
/**
* {@inheritDoc}
* @param ContainerInterface $container
* @param string $requestedName
* @param array|null $options
* @return SqsQueue
*/
public function createService(ServiceLocatorInterface $serviceLocator, $name = '', $requestedName = '')
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
$parentLocator = $serviceLocator->getServiceLocator();
$sqsClient = $parentLocator->get(Aws::class)->createSqs();
$jobPluginManager = $parentLocator->get(JobPluginManager::class);
$sqsClient = $container->get(Aws::class)->createSqs();
$jobPluginManager = $container->get(JobPluginManager::class);

// Let's see if we have options for this specific queue
$config = $parentLocator->get('Config');
$config = $config['slm_queue']['queues'];
$config = $container->get('Config');
$config = $config['slm_queue']['queues'];

$options = new SqsQueueOptions(isset($config[$requestedName]) ? $config[$requestedName] : array());
$options = new SqsQueueOptions(isset($config[$requestedName]) ? $config[$requestedName] : []);


return new SqsQueue($sqsClient, $options, $requestedName, $jobPluginManager);
}

/**
* {@inheritDoc}
*/
public function createService(ServiceLocatorInterface $serviceLocator, $name = '', $requestedName = '')
{
$parentLocator = $serviceLocator->getServiceLocator();

return $this($parentLocator, SqsQueue::class);
}
}
20 changes: 16 additions & 4 deletions src/SlmQueueSqs/Factory/SqsWorkerControllerFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace SlmQueueSqs\Factory;

use Interop\Container\ContainerInterface;
use SlmQueue\Queue\QueuePluginManager;
use SlmQueueSqs\Controller\SqsWorkerController;
use SlmQueueSqs\Worker\SqsWorker;
Expand All @@ -13,16 +14,27 @@
*/
class SqsWorkerControllerFactory implements FactoryInterface
{
/**
* @param ContainerInterface $container
* @param $requestedName
* @param array|null $options
* @return SqsWorkerController
*/
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
$worker = $container->get(SqsWorker::class);
$manager = $container->get(QueuePluginManager::class);

return new SqsWorkerController($worker, $manager);
}

/**
* {@inheritDoc}
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
$parentLocator = $serviceLocator->getServiceLocator();

$worker = $parentLocator->get(SqsWorker::class);
$manager = $parentLocator->get(QueuePluginManager::class);

return new SqsWorkerController($worker, $manager);
return $this($parentLocator, SqsWorkerController::class);
}
}
8 changes: 4 additions & 4 deletions src/SlmQueueSqs/Worker/SqsWorker.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use SlmQueue\Job\JobInterface;
use SlmQueue\Queue\QueueInterface;
use SlmQueue\Worker\AbstractWorker;
use SlmQueue\Worker\WorkerEvent;
use SlmQueue\Worker\Event\ProcessJobEvent;
use SlmQueueSqs\Queue\SqsQueueInterface;

/**
Expand All @@ -21,7 +21,7 @@ class SqsWorker extends AbstractWorker
public function processJob(JobInterface $job, QueueInterface $queue)
{
if (!$queue instanceof SqsQueueInterface) {
return WorkerEvent::JOB_STATUS_UNKNOWN;
return ProcessJobEvent::JOB_STATUS_UNKNOWN;
}

// In SQS, if an error occurs (exception for instance), the job is automatically reinserted
Expand All @@ -31,14 +31,14 @@ public function processJob(JobInterface $job, QueueInterface $queue)
$job->execute();
$queue->delete($job);

return WorkerEvent::JOB_STATUS_SUCCESS;
return ProcessJobEvent::JOB_STATUS_SUCCESS;
} catch (SqsException $sqsException) {
// We want to retrigger SQS exception as they may include useful debugging information like lack of
// permissions
throw $sqsException;
} catch (Exception $exception) {
// Do nothing, the job will be reinserted automatically for another try
return WorkerEvent::JOB_STATUS_FAILURE_RECOVERABLE;
return ProcessJobEvent::JOB_STATUS_FAILURE_RECOVERABLE;
}
}
}
1 change: 1 addition & 0 deletions tests/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
TestConfiguration.php
build
6 changes: 4 additions & 2 deletions tests/SlmQueueSqsTest/Queue/SqsQueueTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ public function setUp()
false
);

$this->jobPluginManager = $this->getMock('SlmQueue\Job\JobPluginManager');
$this->jobPluginManager = $this->getMockBuilder('SlmQueue\Job\JobPluginManager')
->disableOriginalConstructor()->getMock();

$this->sqsClient->expects($this->once())
->method('getQueueUrl')
Expand All @@ -49,7 +50,8 @@ public function setUp()
public function testReuseSqsUrlFromOptions()
{
$sqsClient = $this->getMock('Aws\Sqs\SqsClient', array('getQueueUrl'), array(), '', false);
$jobPluginManager = $this->getMock('SlmQueue\Job\JobPluginManager');
$jobPluginManager = $this->getMockBuilder('SlmQueue\Job\JobPluginManager')
->disableOriginalConstructor()->getMock();

$this->sqsClient->expects($this->never())->method('getQueueUrl');

Expand Down
8 changes: 5 additions & 3 deletions tests/SlmQueueSqsTest/Worker/SqsWorkerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

use Aws\Sqs\Exception\SqsException;
use PHPUnit_Framework_TestCase as TestCase;
use SlmQueue\Worker\Event\AbstractWorkerEvent;
use SlmQueue\Worker\Event\ProcessJobEvent;
use SlmQueue\Worker\WorkerEvent;
use SlmQueueSqs\Worker\SqsWorker;

Expand All @@ -24,7 +26,7 @@ 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));
$this->assertEquals(ProcessJobEvent::JOB_STATUS_UNKNOWN, $this->worker->processJob($job, $queue));
}

public function testDeleteJobOnSuccess()
Expand All @@ -37,7 +39,7 @@ public function testDeleteJobOnSuccess()

$status = $this->worker->processJob($job, $queue);

$this->assertEquals(WorkerEvent::JOB_STATUS_SUCCESS, $status);
$this->assertEquals(ProcessJobEvent::JOB_STATUS_SUCCESS, $status);
}

public function testDoNotDeleteJobOnFailure()
Expand All @@ -53,7 +55,7 @@ public function testDoNotDeleteJobOnFailure()

$status = $this->worker->processJob($job, $queue);

$this->assertEquals(WorkerEvent::JOB_STATUS_FAILURE_RECOVERABLE, $status);
$this->assertEquals(ProcessJobEvent::JOB_STATUS_FAILURE_RECOVERABLE, $status);
}

public function testRethrowSqsException()
Expand Down

0 comments on commit 255b09d

Please sign in to comment.