From 0f25c3322aa99efb7406003676e59b31a8c092fe Mon Sep 17 00:00:00 2001 From: Maksim Kotlyar Date: Fri, 30 Dec 2016 19:35:18 +0200 Subject: [PATCH] [bundle] Add ability to disable signal extension. --- .../DependencyInjection/Configuration.php | 1 + .../DependencyInjection/EnqueueExtension.php | 6 ++- .../config/extensions/signal_extension.yml | 6 +++ .../Resources/config/services.yml | 6 --- .../DependencyInjection/ConfigurationTest.php | 39 +++++++++++++++++- ...nsionTest.php => EnqueueExtensionTest.php} | 40 +++++++++++++++++-- ...ueBundleTest.php => EnqueueBundleTest.php} | 6 +-- 7 files changed, 89 insertions(+), 15 deletions(-) create mode 100644 pkg/enqueue-bundle/Resources/config/extensions/signal_extension.yml rename pkg/enqueue-bundle/Tests/Unit/DependencyInjection/{FormaproMessageQueueExtensionTest.php => EnqueueExtensionTest.php} (93%) rename pkg/enqueue-bundle/Tests/Unit/{FormaproMessageQueueBundleTest.php => EnqueueBundleTest.php} (100%) diff --git a/pkg/enqueue-bundle/DependencyInjection/Configuration.php b/pkg/enqueue-bundle/DependencyInjection/Configuration.php index efb7018b5..952fb2906 100644 --- a/pkg/enqueue-bundle/DependencyInjection/Configuration.php +++ b/pkg/enqueue-bundle/DependencyInjection/Configuration.php @@ -53,6 +53,7 @@ public function getConfigTreeBuilder() ->arrayNode('extensions')->addDefaultsIfNotSet()->children() ->booleanNode('doctrine_ping_connection_extension')->defaultFalse()->end() ->booleanNode('doctrine_clear_identity_map_extension')->defaultFalse()->end() + ->booleanNode('signal_extension')->defaultValue(function_exists('pcntl_signal_dispatch'))->end() ->end()->end() ; diff --git a/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php b/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php index dec578ad8..558e09f39 100644 --- a/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php +++ b/pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php @@ -1,8 +1,8 @@ load('extensions/doctrine_clear_identity_map_extension.yml'); } + + if ($config['extensions']['signal_extension']) { + $loader->load('extensions/signal_extension.yml'); + } } /** diff --git a/pkg/enqueue-bundle/Resources/config/extensions/signal_extension.yml b/pkg/enqueue-bundle/Resources/config/extensions/signal_extension.yml new file mode 100644 index 000000000..e7609eb06 --- /dev/null +++ b/pkg/enqueue-bundle/Resources/config/extensions/signal_extension.yml @@ -0,0 +1,6 @@ +services: + enqueue.consumption.signal_extension: + class: 'Enqueue\Consumption\Extension\SignalExtension' + public: false + tags: + - { name: 'enqueue.consumption.extension' } \ No newline at end of file diff --git a/pkg/enqueue-bundle/Resources/config/services.yml b/pkg/enqueue-bundle/Resources/config/services.yml index 0aa02500f..63f608f1c 100644 --- a/pkg/enqueue-bundle/Resources/config/services.yml +++ b/pkg/enqueue-bundle/Resources/config/services.yml @@ -5,12 +5,6 @@ services: arguments: - [] - enqueue.consumption.signal_extension: - class: 'Enqueue\Consumption\Extension\SignalExtension' - public: false - tags: - - { name: 'enqueue.consumption.extension' } - enqueue.consumption.queue_consumer: class: 'Enqueue\Consumption\QueueConsumer' arguments: diff --git a/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/ConfigurationTest.php b/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/ConfigurationTest.php index 5b756f9b1..5f2e87426 100644 --- a/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/ConfigurationTest.php +++ b/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/ConfigurationTest.php @@ -1,11 +1,11 @@ processConfiguration($configuration, [[ + 'transport' => [], + ]]); + + $this->assertArraySubset([ + 'extensions' => [ + 'signal_extension' => true, + ], + ], $config); + } + + public function testSignalExtensionCouldBeDisabled() + { + $configuration = new Configuration([]); + + $processor = new Processor(); + $config = $processor->processConfiguration($configuration, [[ + 'transport' => [], + 'extensions' => [ + 'signal_extension' => false, + ], + ]]); + + $this->assertArraySubset([ + 'extensions' => [ + 'signal_extension' => false, + ], + ], $config); + } } diff --git a/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/FormaproMessageQueueExtensionTest.php b/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/EnqueueExtensionTest.php similarity index 93% rename from pkg/enqueue-bundle/Tests/Unit/DependencyInjection/FormaproMessageQueueExtensionTest.php rename to pkg/enqueue-bundle/Tests/Unit/DependencyInjection/EnqueueExtensionTest.php index 9ea21b829..90ad9d05c 100644 --- a/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/FormaproMessageQueueExtensionTest.php +++ b/pkg/enqueue-bundle/Tests/Unit/DependencyInjection/EnqueueExtensionTest.php @@ -1,15 +1,15 @@ hasDefinition('enqueue.consumption.doctrine_clear_identity_map_extension')); } + + public function testShouldLoadSignalExtensionServiceIfEnabled() + { + $container = new ContainerBuilder(); + $container->setParameter('kernel.debug', true); + + $extension = new EnqueueExtension(); + + $extension->load([[ + 'transport' => [], + 'extensions' => [ + 'signal_extension' => true, + ], + ]], $container); + + self::assertTrue($container->hasDefinition('enqueue.consumption.signal_extension')); + } + + public function testShouldNotLoadSignalExtensionServiceIfDisabled() + { + $container = new ContainerBuilder(); + $container->setParameter('kernel.debug', true); + + $extension = new EnqueueExtension(); + + $extension->load([[ + 'transport' => [], + 'extensions' => [ + 'signal_extension' => false, + ], + ]], $container); + + self::assertFalse($container->hasDefinition('enqueue.consumption.signal_extension')); + } } diff --git a/pkg/enqueue-bundle/Tests/Unit/FormaproMessageQueueBundleTest.php b/pkg/enqueue-bundle/Tests/Unit/EnqueueBundleTest.php similarity index 100% rename from pkg/enqueue-bundle/Tests/Unit/FormaproMessageQueueBundleTest.php rename to pkg/enqueue-bundle/Tests/Unit/EnqueueBundleTest.php index 04a72bea4..71b652842 100644 --- a/pkg/enqueue-bundle/Tests/Unit/FormaproMessageQueueBundleTest.php +++ b/pkg/enqueue-bundle/Tests/Unit/EnqueueBundleTest.php @@ -3,9 +3,6 @@ use Enqueue\AmqpExt\Symfony\AmqpTransportFactory; use Enqueue\AmqpExt\Symfony\RabbitMqTransportFactory; -use Enqueue\Symfony\DefaultTransportFactory; -use Enqueue\Symfony\NullTransportFactory; -use Enqueue\Test\ClassExtensionTrait; use Enqueue\Bundle\DependencyInjection\Compiler\BuildClientRoutingPass; use Enqueue\Bundle\DependencyInjection\Compiler\BuildExtensionsPass; use Enqueue\Bundle\DependencyInjection\Compiler\BuildMessageProcessorRegistryPass; @@ -15,6 +12,9 @@ use Enqueue\Bundle\EnqueueBundle; use Enqueue\Stomp\Symfony\RabbitMqStompTransportFactory; use Enqueue\Stomp\Symfony\StompTransportFactory; +use Enqueue\Symfony\DefaultTransportFactory; +use Enqueue\Symfony\NullTransportFactory; +use Enqueue\Test\ClassExtensionTrait; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\HttpKernel\Bundle\Bundle;