From d5a39085b34742fd56679d0089744cccbced71e7 Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Thu, 28 Apr 2022 21:16:35 +0200 Subject: [PATCH 01/11] refactor(core): improvements --- phpstan.neon.8.0.dist | 2 +- phpstan.neon.8.1.dist | 2 +- .../Configuration/FiberConfiguration.php | 30 +++++++++---------- .../ProbeStateSubscriberTest.php | 1 + tests/EventListener/TaskSubscriberTest.php | 1 + 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/phpstan.neon.8.0.dist b/phpstan.neon.8.0.dist index 6957a20f..25f22d7b 100644 --- a/phpstan.neon.8.0.dist +++ b/phpstan.neon.8.0.dist @@ -6,7 +6,7 @@ includes: - vendor/phpstan/phpstan-symfony/extension.neon parameters: - level: 8 + level: 9 paths: - src - tests diff --git a/phpstan.neon.8.1.dist b/phpstan.neon.8.1.dist index 244764fe..5bcef050 100644 --- a/phpstan.neon.8.1.dist +++ b/phpstan.neon.8.1.dist @@ -6,7 +6,7 @@ includes: - vendor/phpstan/phpstan-symfony/extension.neon parameters: - level: 8 + level: 9 paths: - src - tests diff --git a/src/Transport/Configuration/FiberConfiguration.php b/src/Transport/Configuration/FiberConfiguration.php index 77bba057..66f64386 100644 --- a/src/Transport/Configuration/FiberConfiguration.php +++ b/src/Transport/Configuration/FiberConfiguration.php @@ -18,7 +18,7 @@ public function __construct( private ConfigurationInterface $configuration, ?LoggerInterface $logger = null ) { - parent::__construct($logger); + parent::__construct(logger: $logger); } /** @@ -28,8 +28,8 @@ public function __construct( */ public function init(array $options, array $extraOptions = []): void { - $this->handleOperationViaFiber(function () use ($options, $extraOptions): void { - $this->configuration->init($options, $extraOptions); + $this->handleOperationViaFiber(func: function () use ($options, $extraOptions): void { + $this->configuration->init(options: $options, extraOptions: $extraOptions); }); } @@ -40,8 +40,8 @@ public function init(array $options, array $extraOptions = []): void */ public function set(string $key, mixed $value): void { - $this->handleOperationViaFiber(function () use ($key, $value): void { - $this->configuration->set($key, $value); + $this->handleOperationViaFiber(func: function () use ($key, $value): void { + $this->configuration->set(key: $key, value: $value); }); } @@ -52,8 +52,8 @@ public function set(string $key, mixed $value): void */ public function update(string $key, $newValue): void { - $this->handleOperationViaFiber(function () use ($key, $newValue): void { - $this->configuration->update($key, $newValue); + $this->handleOperationViaFiber(func: function () use ($key, $newValue): void { + $this->configuration->update(key: $key, newValue: $newValue); }); } @@ -64,7 +64,7 @@ public function update(string $key, $newValue): void */ public function get(string $key): mixed { - return $this->handleOperationViaFiber(fn (): mixed => $this->configuration->get($key)); + return $this->handleOperationViaFiber(func: fn (): mixed => $this->configuration->get(key: $key)); } /** @@ -74,8 +74,8 @@ public function get(string $key): mixed */ public function remove(string $key): void { - $this->handleOperationViaFiber(function () use ($key): void { - $this->configuration->remove($key); + $this->handleOperationViaFiber(func: function () use ($key): void { + $this->configuration->remove(key: $key); }); } @@ -86,7 +86,7 @@ public function remove(string $key): void */ public function walk(Closure $func): ConfigurationInterface { - return $this->handleOperationViaFiber(fn (): ConfigurationInterface => $this->configuration->walk($func)); + return $this->handleOperationViaFiber(func: fn (): ConfigurationInterface => $this->configuration->walk(func: $func)); } /** @@ -96,7 +96,7 @@ public function walk(Closure $func): ConfigurationInterface */ public function map(Closure $func): array { - return $this->handleOperationViaFiber(fn (): array => $this->configuration->map($func)); + return $this->handleOperationViaFiber(func: fn (): array => $this->configuration->map(func: $func)); } /** @@ -106,7 +106,7 @@ public function map(Closure $func): array */ public function toArray(): array { - return $this->handleOperationViaFiber(fn (): array => $this->configuration->toArray()); + return $this->handleOperationViaFiber(func: fn (): array => $this->configuration->toArray()); } /** @@ -116,7 +116,7 @@ public function toArray(): array */ public function clear(): void { - $this->handleOperationViaFiber(function (): void { + $this->handleOperationViaFiber(func: function (): void { $this->configuration->clear(); }); } @@ -128,6 +128,6 @@ public function clear(): void */ public function count(): int { - return $this->handleOperationViaFiber(fn (): int => $this->configuration->count()); + return $this->handleOperationViaFiber(func: fn (): int => $this->configuration->count()); } } diff --git a/tests/EventListener/ProbeStateSubscriberTest.php b/tests/EventListener/ProbeStateSubscriberTest.php index c6af3884..49e9c672 100644 --- a/tests/EventListener/ProbeStateSubscriberTest.php +++ b/tests/EventListener/ProbeStateSubscriberTest.php @@ -96,6 +96,7 @@ public function testSubscriberCanBeUsed(): void self::assertIsString($content); $body = json_decode($content, true, 512, JSON_THROW_ON_ERROR); + self::assertIsArray($body); self::assertArrayHasKey('scheduledTasks', $body); self::assertSame(0, $body['scheduledTasks']); self::assertArrayHasKey('executedTasks', $body); diff --git a/tests/EventListener/TaskSubscriberTest.php b/tests/EventListener/TaskSubscriberTest.php index fcdd6282..6eb3d368 100644 --- a/tests/EventListener/TaskSubscriberTest.php +++ b/tests/EventListener/TaskSubscriberTest.php @@ -241,6 +241,7 @@ public function testResponseIsSetWhenWorkerErrorIsThrown(): void $content = $response->getContent(); self::assertIsString($content); + self::assertIsArray(json_decode($content, true, 512, JSON_THROW_ON_ERROR)); self::assertArrayHasKey('code', json_decode($content, true, 512, JSON_THROW_ON_ERROR)); self::assertArrayHasKey('message', json_decode($content, true, 512, JSON_THROW_ON_ERROR)); self::assertArrayHasKey('trace', json_decode($content, true, 512, JSON_THROW_ON_ERROR)); From f9108fbccf6c8eb0a9dd164b7605e1495df58fd3 Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Fri, 29 Apr 2022 08:57:05 +0200 Subject: [PATCH 02/11] refactor(core): improvements & tests --- .../Transport/Configuration/Connection.php | 3 +- src/Command/RemoveFailedTaskCommand.php | 11 +++- src/Middleware/MiddlewareStackInterface.php | 2 +- src/Runner/HttpTaskRunner.php | 12 ++--- src/Runner/ProbeTaskRunner.php | 18 +++---- .../FiberConfigurationFactory.php | 16 ++++-- .../LazyConfigurationFactory.php | 16 ++++-- tests/Worker/WorkerTest.php | 52 +++++++++++++++++++ 8 files changed, 100 insertions(+), 30 deletions(-) diff --git a/src/Bridge/Doctrine/Transport/Configuration/Connection.php b/src/Bridge/Doctrine/Transport/Configuration/Connection.php index 5c73461b..242a8f72 100644 --- a/src/Bridge/Doctrine/Transport/Configuration/Connection.php +++ b/src/Bridge/Doctrine/Transport/Configuration/Connection.php @@ -8,6 +8,7 @@ use Doctrine\DBAL\Connection as DbalConnection; use Doctrine\DBAL\Exception; use Doctrine\DBAL\ParameterType; +use Doctrine\DBAL\Result; use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Query\Expr; @@ -345,7 +346,7 @@ protected function addTableToSchema(Schema $schema): void /** * {@inheritdoc} */ - protected function executeQuery(string $sql, array $parameters = [], array $types = []) + protected function executeQuery(string $sql, array $parameters = [], array $types = []): Result { try { return $this->connection->executeQuery($sql, $parameters, $types); diff --git a/src/Command/RemoveFailedTaskCommand.php b/src/Command/RemoveFailedTaskCommand.php index 7f22d54d..751e9803 100644 --- a/src/Command/RemoveFailedTaskCommand.php +++ b/src/Command/RemoveFailedTaskCommand.php @@ -20,7 +20,10 @@ use SchedulerBundle\Worker\WorkerInterface; use Throwable; +use function filter_var; +use function is_string; use function sprintf; +use const FILTER_SANITIZE_STRING; /** * @author Guillaume Loulier @@ -89,8 +92,14 @@ protected function execute(InputInterface $input, OutputInterface $output): int $name = $input->getArgument(name: 'name'); $force = $input->getOption(name: 'force'); + $name = filter_var(value: $name, filter: FILTER_SANITIZE_STRING); + if (!is_string($name)) { + throw new InvalidArgumentException(message: sprintf('The task name "%s" is not valid.', $name)); + } + try { - $toRemoveTask = $this->worker->getFailedTasks()->get(taskName: $name); + $failedTasks = $this->worker->getFailedTasks(); + $toRemoveTask = $failedTasks->get(taskName: $name); } catch (InvalidArgumentException) { $symfonyStyle->error(message: sprintf('The task "%s" does not fails', $name)); diff --git a/src/Middleware/MiddlewareStackInterface.php b/src/Middleware/MiddlewareStackInterface.php index 2f34b7cd..145d8703 100644 --- a/src/Middleware/MiddlewareStackInterface.php +++ b/src/Middleware/MiddlewareStackInterface.php @@ -12,7 +12,7 @@ interface MiddlewareStackInterface /** * Return the middleware used by a specific middleware stack. * - * @return array + * @return array */ public function getMiddlewareList(): array; } diff --git a/src/Runner/HttpTaskRunner.php b/src/Runner/HttpTaskRunner.php index fed22881..aa155a82 100644 --- a/src/Runner/HttpTaskRunner.php +++ b/src/Runner/HttpTaskRunner.php @@ -17,9 +17,7 @@ */ final class HttpTaskRunner implements RunnerInterface { - private HttpClientInterface $httpClient; - - public function __construct(HttpClientInterface $httpClient = null) + public function __construct(private ?HttpClientInterface $httpClient = null) { $this->httpClient = $httpClient ?? HttpClient::create(); } @@ -30,14 +28,14 @@ public function __construct(HttpClientInterface $httpClient = null) public function run(TaskInterface $task, WorkerInterface $worker): Output { if (!$task instanceof HttpTask) { - return new Output($task, null, Output::ERROR); + return new Output(task: $task, output: null, type: Output::ERROR); } try { - $response = $this->httpClient->request($task->getMethod(), $task->getUrl(), $task->getClientOptions()); - return new Output($task, $response->getContent()); + $response = $this->httpClient->request(method: $task->getMethod(), url: $task->getUrl(), options: $task->getClientOptions()); + return new Output(task: $task, output: $response->getContent()); } catch (Throwable $throwable) { - return new Output($task, $throwable->getMessage(), Output::ERROR); + return new Output(task: $task, output: $throwable->getMessage(), type: Output::ERROR); } } diff --git a/src/Runner/ProbeTaskRunner.php b/src/Runner/ProbeTaskRunner.php index c68bdd5e..6b50cb13 100644 --- a/src/Runner/ProbeTaskRunner.php +++ b/src/Runner/ProbeTaskRunner.php @@ -20,9 +20,7 @@ */ final class ProbeTaskRunner implements RunnerInterface { - private HttpClientInterface $httpClient; - - public function __construct(?HttpClientInterface $httpClient = null) + public function __construct(private ?HttpClientInterface $httpClient = null) { $this->httpClient = $httpClient ?? HttpClient::create(); } @@ -33,19 +31,19 @@ public function __construct(?HttpClientInterface $httpClient = null) public function run(TaskInterface $task, WorkerInterface $worker): Output { if (!$task instanceof ProbeTask) { - return new Output($task, null, Output::ERROR); + return new Output(task: $task, output: null, type: Output::ERROR); } try { - $response = $this->httpClient->request('GET', $task->getExternalProbePath()); - $body = $response->toArray(true); - if (!array_key_exists('failedTasks', $body) || ($task->getErrorOnFailedTasks() && 0 !== $body['failedTasks'])) { - throw new RuntimeException('The probe state is invalid'); + $response = $this->httpClient->request(method: 'GET', url: $task->getExternalProbePath()); + $body = $response->toArray(); + if (!array_key_exists(key: 'failedTasks', array: $body) || ($task->getErrorOnFailedTasks() && 0 !== $body['failedTasks'])) { + throw new RuntimeException(message: 'The probe state is invalid'); } - return new Output($task, 'The probe succeed'); + return new Output(task: $task, output: 'The probe succeed'); } catch (Throwable $throwable) { - return new Output($task, $throwable->getMessage(), Output::ERROR); + return new Output(task: $task, output: $throwable->getMessage(), type: Output::ERROR); } } diff --git a/src/Transport/Configuration/FiberConfigurationFactory.php b/src/Transport/Configuration/FiberConfigurationFactory.php index 063f3aef..857ae720 100644 --- a/src/Transport/Configuration/FiberConfigurationFactory.php +++ b/src/Transport/Configuration/FiberConfigurationFactory.php @@ -4,10 +4,12 @@ namespace SchedulerBundle\Transport\Configuration; +use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\Transport\Dsn; use Symfony\Component\Serializer\SerializerInterface; +use function is_string; use function sprintf; use function str_starts_with; @@ -26,20 +28,24 @@ public function __construct(private iterable $factories) public function create(Dsn $dsn, SerializerInterface $serializer): FiberConfiguration { foreach ($this->factories as $factory) { - if (!$factory->support($dsn->getOptions()[0])) { + if (!is_string(value: $dsn->getOptions()[0])) { + throw new InvalidArgumentException(message: 'The embedded configuration DSN must be a string.'); + } + + if (!$factory->support(dsn: $dsn->getOptions()[0])) { continue; } - $dsn = Dsn::fromString($dsn->getOptions()[0]); + $dsn = Dsn::fromString(dsn: $dsn->getOptions()[0]); - return new FiberConfiguration($factory->create($dsn, $serializer)); + return new FiberConfiguration(configuration: $factory->create(dsn: $dsn, serializer: $serializer)); } - throw new RuntimeException(sprintf('No factory found for the DSN "%s"', $dsn->getRoot())); + throw new RuntimeException(message: sprintf('No factory found for the DSN "%s"', $dsn->getRoot())); } public function support(string $dsn): bool { - return str_starts_with($dsn, 'configuration://fiber'); + return str_starts_with(haystack: $dsn, needle: 'configuration://fiber'); } } diff --git a/src/Transport/Configuration/LazyConfigurationFactory.php b/src/Transport/Configuration/LazyConfigurationFactory.php index f35b7b62..f03b0a5c 100644 --- a/src/Transport/Configuration/LazyConfigurationFactory.php +++ b/src/Transport/Configuration/LazyConfigurationFactory.php @@ -4,10 +4,12 @@ namespace SchedulerBundle\Transport\Configuration; +use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\Transport\Dsn; use Symfony\Component\Serializer\SerializerInterface; +use function is_string; use function sprintf; use function str_starts_with; @@ -29,16 +31,20 @@ public function __construct(private iterable $factories) public function create(Dsn $dsn, SerializerInterface $serializer): LazyConfiguration { foreach ($this->factories as $factory) { - if (!$factory->support($dsn->getOptions()[0])) { + if (!is_string(value: $dsn->getOptions()[0])) { + throw new InvalidArgumentException(message: 'The embedded configuration DSN must be a string.'); + } + + if (!$factory->support(dsn: $dsn->getOptions()[0])) { continue; } - $dsn = Dsn::fromString($dsn->getOptions()[0]); + $dsn = Dsn::fromString(dsn: $dsn->getOptions()[0]); - return new LazyConfiguration($factory->create($dsn, $serializer)); + return new LazyConfiguration(sourceConfiguration: $factory->create(dsn: $dsn, serializer: $serializer)); } - throw new RuntimeException(sprintf('No factory found for the DSN "%s"', $dsn->getRoot())); + throw new RuntimeException(message: sprintf('No factory found for the DSN "%s"', $dsn->getRoot())); } /** @@ -46,6 +52,6 @@ public function create(Dsn $dsn, SerializerInterface $serializer): LazyConfigura */ public function support(string $dsn): bool { - return str_starts_with($dsn, 'configuration://lazy'); + return str_starts_with(haystack: $dsn, needle: 'configuration://lazy'); } } diff --git a/tests/Worker/WorkerTest.php b/tests/Worker/WorkerTest.php index 67f9b891..a1e18e69 100644 --- a/tests/Worker/WorkerTest.php +++ b/tests/Worker/WorkerTest.php @@ -13,6 +13,7 @@ use SchedulerBundle\Event\WorkerRunningEvent; use SchedulerBundle\Middleware\NotifierMiddleware; use SchedulerBundle\Middleware\MaxExecutionMiddleware; +use SchedulerBundle\Middleware\ProbeTaskMiddleware; use SchedulerBundle\Middleware\SchedulerMiddlewareStack; use SchedulerBundle\Middleware\SingleRunTaskMiddleware; use SchedulerBundle\Middleware\TaskCallbackMiddleware; @@ -23,6 +24,7 @@ use SchedulerBundle\Runner\CallbackTaskRunner; use SchedulerBundle\Runner\ChainedTaskRunner; use SchedulerBundle\Runner\NullTaskRunner; +use SchedulerBundle\Runner\ProbeTaskRunner; use SchedulerBundle\Runner\RunnerRegistry; use SchedulerBundle\Runner\ShellTaskRunner; use SchedulerBundle\SchedulePolicy\FirstInFirstOutPolicy; @@ -33,6 +35,7 @@ use SchedulerBundle\Task\CommandTask; use SchedulerBundle\Task\FailedTask; use SchedulerBundle\Task\NullTask; +use SchedulerBundle\Task\ProbeTask; use SchedulerBundle\Task\TaskExecutionTracker; use SchedulerBundle\Task\TaskListInterface; use SchedulerBundle\TaskBag\AccessLockBag; @@ -55,6 +58,8 @@ use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Task\TaskList; use SchedulerBundle\Worker\Worker; +use Symfony\Component\HttpClient\MockHttpClient; +use Symfony\Component\HttpClient\Response\MockResponse; use Symfony\Component\Lock\Key; use Symfony\Component\Lock\LockFactory; use Symfony\Component\Lock\Store\InMemoryStore; @@ -1799,4 +1804,51 @@ public function testWorkerCannotPreemptEmptyList(): void self::assertNull($barTask->getLastExecution()); self::assertNull($randomTask->getLastExecution()); } + + /** + * @group time-sensitive + * + * @throws Throwable {@see WorkerInterface::execute()} + */ + public function testWorkerCanExecuteProbeTasksWithDelay(): void + { + $tracker = $this->createMock(TaskExecutionTrackerInterface::class); + $logger = $this->createMock(LoggerInterface::class); + + $mockedHttpClient = new MockHttpClient([ + new MockResponse('', [ + 'http_code' => 200, + ]), + new MockResponse('', [ + 'http_code' => 200, + ]), + ]); + + $transport = new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([ + new FirstInFirstOutPolicy(), + ])); + + $scheduler = new Scheduler('UTC', $transport, new SchedulerMiddlewareStack(), new EventDispatcher()); + $scheduler->schedule(new ProbeTask('foo', 'https://foo.com', false, 10)); + $scheduler->schedule(new ProbeTask('bar', 'https://foo.com', false, 50)); + + $lockFactory = new LockFactory(new InMemoryStore()); + + $worker = new Worker($scheduler, new RunnerRegistry([ + new ProbeTaskRunner($mockedHttpClient), + ]), new ExecutionPolicyRegistry([ + new DefaultPolicy(), + ]), $tracker, new WorkerMiddlewareStack([ + new SingleRunTaskMiddleware($transport), + new TaskUpdateMiddleware($transport), + new TaskLockBagMiddleware($lockFactory), + new ProbeTaskMiddleware(), + ]), new EventDispatcher(), $lockFactory, $logger); + + $worker->execute(WorkerConfiguration::create()); + + self::assertSame(2, $mockedHttpClient->getRequestsCount()); + self::assertInstanceOf(ProbeTask::class, $worker->getLastExecutedTask()); + self::assertSame('bar', $worker->getLastExecutedTask()->getName()); + } } From 0de71356266b544ce8b1a0cb9abe5b148ef3fb9f Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Fri, 29 Apr 2022 09:01:22 +0200 Subject: [PATCH 03/11] refactor(core): improvements & tests --- src/Command/RemoveFailedTaskCommand.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Command/RemoveFailedTaskCommand.php b/src/Command/RemoveFailedTaskCommand.php index 751e9803..3f97aec9 100644 --- a/src/Command/RemoveFailedTaskCommand.php +++ b/src/Command/RemoveFailedTaskCommand.php @@ -22,8 +22,9 @@ use function filter_var; use function is_string; +use function htmlspecialchars; use function sprintf; -use const FILTER_SANITIZE_STRING; +use const ENT_QUOTES; /** * @author Guillaume Loulier @@ -92,10 +93,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int $name = $input->getArgument(name: 'name'); $force = $input->getOption(name: 'force'); - $name = filter_var(value: $name, filter: FILTER_SANITIZE_STRING); - if (!is_string($name)) { - throw new InvalidArgumentException(message: sprintf('The task name "%s" is not valid.', $name)); - } + $name = htmlspecialchars(string: $name, flags: ENT_QUOTES, encoding: 'UTF-8'); try { $failedTasks = $this->worker->getFailedTasks(); From c17aab4df0cabd1b795bd57b3d43877017db1b3f Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Fri, 29 Apr 2022 10:45:19 +0200 Subject: [PATCH 04/11] tests(scheduler): improvements --- tests/LazySchedulerTest.php | 26 ++++++++------------------ tests/Worker/WorkerTest.php | 2 ++ 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/tests/LazySchedulerTest.php b/tests/LazySchedulerTest.php index 3088f8cd..34d2a9eb 100644 --- a/tests/LazySchedulerTest.php +++ b/tests/LazySchedulerTest.php @@ -7,7 +7,6 @@ use DateTimeImmutable; use Exception; use Generator; -use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\RuntimeException; @@ -56,8 +55,15 @@ /** * @author Guillaume Loulier */ -final class LazySchedulerTest extends TestCase +final class LazySchedulerTest extends AbstractSchedulerTestCase { + protected function buildScheduler(): SchedulerInterface + { + return new LazyScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([ + new FirstInFirstOutPolicy(), + ])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher())); + } + /** * @throws Exception {@see Scheduler::__construct()} * @throws Throwable {@see SchedulerInterface::getTasks()} @@ -843,22 +849,6 @@ public function testSchedulerCanReturnTheTimezone(): void self::assertTrue($scheduler->isInitialized()); } - /** - * @throws Exception {@see Scheduler::__construct()} - * @throws Throwable {@see SchedulerInterface::getDueTasks()} - */ - public function testSchedulerPoolConfigurationIsAvailable(): void - { - $scheduler = new LazyScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([ - new FirstInFirstOutPolicy(), - ])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher())); - - $poolConfiguration = $scheduler->getPoolConfiguration(); - - self::assertSame('UTC', $poolConfiguration->getTimezone()->getName()); - self::assertCount(0, $poolConfiguration->getDueTasks()); - } - /** * @return Generator> */ diff --git a/tests/Worker/WorkerTest.php b/tests/Worker/WorkerTest.php index a1e18e69..aa8bd4a6 100644 --- a/tests/Worker/WorkerTest.php +++ b/tests/Worker/WorkerTest.php @@ -1829,6 +1829,7 @@ public function testWorkerCanExecuteProbeTasksWithDelay(): void ])); $scheduler = new Scheduler('UTC', $transport, new SchedulerMiddlewareStack(), new EventDispatcher()); + $scheduler->schedule(new NullTask('random')); $scheduler->schedule(new ProbeTask('foo', 'https://foo.com', false, 10)); $scheduler->schedule(new ProbeTask('bar', 'https://foo.com', false, 50)); @@ -1836,6 +1837,7 @@ public function testWorkerCanExecuteProbeTasksWithDelay(): void $worker = new Worker($scheduler, new RunnerRegistry([ new ProbeTaskRunner($mockedHttpClient), + new NullTaskRunner(), ]), new ExecutionPolicyRegistry([ new DefaultPolicy(), ]), $tracker, new WorkerMiddlewareStack([ From f781abb0fda9b869d01d5ca285c2601271923aea Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Fri, 29 Apr 2022 10:52:32 +0200 Subject: [PATCH 05/11] tests(scheduler): improvements --- tests/AbstractSchedulerTestCase.php | 58 +++++++++++++++++++++++++++++ tests/FiberSchedulerTest.php | 51 ------------------------- tests/SchedulerTest.php | 53 +------------------------- 3 files changed, 59 insertions(+), 103 deletions(-) diff --git a/tests/AbstractSchedulerTestCase.php b/tests/AbstractSchedulerTestCase.php index 4c555c96..5c4cd760 100644 --- a/tests/AbstractSchedulerTestCase.php +++ b/tests/AbstractSchedulerTestCase.php @@ -12,6 +12,7 @@ use SchedulerBundle\Scheduler; use SchedulerBundle\SchedulerInterface; use SchedulerBundle\Task\NullTask; +use SchedulerBundle\Task\TaskInterface; use Throwable; /** @@ -64,6 +65,63 @@ public function testSchedulerCanReturnTheTimezone(): void self::assertSame(expected: 'UTC', actual: $timezone->getName()); } + /** + * @throws Throwable {@see Scheduler::__construct()} + */ + public function testSchedulerCanRebootWithEmptyTasks(): void + { + $scheduler = $this->buildScheduler(); + + $scheduler->schedule(new NullTask('bar')); + self::assertCount(1, $scheduler->getTasks()); + + $scheduler->reboot(); + self::assertCount(0, $scheduler->getTasks()); + } + + /** + * @throws Throwable {@see Scheduler::__construct()} + */ + public function testSchedulerCanReboot(): void + { + $scheduler = $this->buildScheduler(); + + $scheduler->schedule(new NullTask('foo', [ + 'expression' => '@reboot', + ])); + $scheduler->schedule(new NullTask('bar')); + self::assertCount(2, $scheduler->getTasks()); + + $scheduler->reboot(); + self::assertCount(1, $scheduler->getTasks()); + } + + /** + * @throws Throwable {@see Scheduler::__construct()} + * @throws Throwable {@see SchedulerInterface::schedule()} + */ + public function testSchedulerCannotPreemptEmptyDueTasks(): void + { + $task = new NullTask('foo'); + + $scheduler = $this->buildScheduler(); + + $scheduler->preempt('foo', static fn (TaskInterface $task): bool => $task->getName() === 'bar'); + self::assertNotSame(TaskInterface::READY_TO_EXECUTE, $task->getState()); + } + + /** + * @throws Exception {@see Scheduler::__construct()} + * @throws Throwable {@see FiberScheduler::getTimezone()} + */ + public function testSchedulerCanReturnTheTimezone(): void + { + $scheduler = $this->buildScheduler(); + + $timezone = $scheduler->getTimezone(); + self::assertSame('UTC', $timezone->getName()); + } + /** * @throws Exception {@see Scheduler::__construct()} * @throws Throwable {@see SchedulerInterface::getPoolConfiguration()} diff --git a/tests/FiberSchedulerTest.php b/tests/FiberSchedulerTest.php index 6c4dfa0d..03405922 100644 --- a/tests/FiberSchedulerTest.php +++ b/tests/FiberSchedulerTest.php @@ -1566,57 +1566,6 @@ public function testSchedulerCanReturnNextDueTaskAsynchronously(): void self::assertSame('bar', $task->getName()); } - /** - * @throws Throwable {@see Scheduler::__construct()} - */ - public function testSchedulerCanRebootWithEmptyTasks(): void - { - $scheduler = new FiberScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([ - new FirstInFirstOutPolicy(), - ])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher())); - - $scheduler->schedule(new NullTask('bar')); - self::assertCount(1, $scheduler->getTasks()); - - $scheduler->reboot(); - self::assertCount(0, $scheduler->getTasks()); - } - - /** - * @throws Throwable {@see Scheduler::__construct()} - */ - public function testSchedulerCanReboot(): void - { - $scheduler = new FiberScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([ - new FirstInFirstOutPolicy(), - ])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher())); - - $scheduler->schedule(new NullTask('foo', [ - 'expression' => '@reboot', - ])); - $scheduler->schedule(new NullTask('bar')); - self::assertCount(2, $scheduler->getTasks()); - - $scheduler->reboot(); - self::assertCount(1, $scheduler->getTasks()); - } - - /** - * @throws Throwable {@see Scheduler::__construct()} - * @throws Throwable {@see SchedulerInterface::schedule()} - */ - public function testSchedulerCannotPreemptEmptyDueTasks(): void - { - $task = new NullTask('foo'); - - $scheduler = new FiberScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([ - new FirstInFirstOutPolicy(), - ])), new SchedulerMiddlewareStack(), new EventDispatcher())); - - $scheduler->preempt('foo', fn (TaskInterface $task): bool => $task->getName() === 'bar'); - self::assertNotSame(TaskInterface::READY_TO_EXECUTE, $task->getState()); - } - /** * @throws Throwable {@see Scheduler::__construct()} * @throws Throwable {@see SchedulerInterface::getDueTasks()} diff --git a/tests/SchedulerTest.php b/tests/SchedulerTest.php index 1cf67289..627a9ea7 100644 --- a/tests/SchedulerTest.php +++ b/tests/SchedulerTest.php @@ -1558,57 +1558,6 @@ public function testSchedulerCanReturnNextDueTaskAsynchronously(): void self::assertSame('bar', $task->getName()); } - /** - * @throws Throwable {@see Scheduler::__construct()} - */ - public function testSchedulerCanRebootWithEmptyTasks(): void - { - $scheduler = new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([ - new FirstInFirstOutPolicy(), - ])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher()); - - $scheduler->schedule(new NullTask('bar')); - self::assertCount(1, $scheduler->getTasks()); - - $scheduler->reboot(); - self::assertCount(0, $scheduler->getTasks()); - } - - /** - * @throws Throwable {@see Scheduler::__construct()} - */ - public function testSchedulerCanReboot(): void - { - $scheduler = new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([ - new FirstInFirstOutPolicy(), - ])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher()); - - $scheduler->schedule(new NullTask('foo', [ - 'expression' => '@reboot', - ])); - $scheduler->schedule(new NullTask('bar')); - self::assertCount(2, $scheduler->getTasks()); - - $scheduler->reboot(); - self::assertCount(1, $scheduler->getTasks()); - } - - /** - * @throws Throwable {@see Scheduler::__construct()} - * @throws Throwable {@see SchedulerInterface::schedule()} - */ - public function testSchedulerCannotPreemptEmptyDueTasks(): void - { - $task = new NullTask('foo'); - - $scheduler = new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([ - new FirstInFirstOutPolicy(), - ])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher()); - - $scheduler->preempt('foo', fn (TaskInterface $task): bool => $task->getName() === 'bar'); - self::assertNotSame(TaskInterface::READY_TO_EXECUTE, $task->getState()); - } - /** * @throws Throwable {@see Scheduler::__construct()} * @throws Throwable {@see SchedulerInterface::getDueTasks()} @@ -1623,7 +1572,7 @@ public function testSchedulerCannotPreemptEmptyToPreemptTasks(): void ])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), $eventDispatcher); $scheduler->schedule(new NullTask('foo')); - $scheduler->preempt('foo', fn (TaskInterface $task): bool => $task->getName() === 'bar'); + $scheduler->preempt('foo', static fn (TaskInterface $task): bool => $task->getName() === 'bar'); } /** From b6325de3ecd20d2ae12693c6212919e0bc2ec855 Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Mon, 2 May 2022 09:16:10 +0200 Subject: [PATCH 06/11] refactor(core): improvements on constraints & tests --- src/Test/Constraint/Probe/ProbeExecutedTask.php | 4 ++++ src/Test/Constraint/Probe/ProbeFailedTask.php | 4 ++++ src/Test/Constraint/Probe/ProbeScheduledTask.php | 8 ++++++++ src/Test/Constraint/Probe/ProbeState.php | 4 ++++ src/Test/Constraint/Scheduler/SchedulerDueTask.php | 7 +++++++ src/Test/Constraint/TaskExecuted.php | 4 ++++ src/Test/Constraint/TaskFailed.php | 7 +++++-- src/Test/Constraint/TaskQueued.php | 4 ++++ src/Test/Constraint/TaskScheduled.php | 6 +++++- src/Test/Constraint/TaskUnscheduled.php | 6 +++++- 10 files changed, 50 insertions(+), 4 deletions(-) diff --git a/src/Test/Constraint/Probe/ProbeExecutedTask.php b/src/Test/Constraint/Probe/ProbeExecutedTask.php index f6ea2144..698af81b 100644 --- a/src/Test/Constraint/Probe/ProbeExecutedTask.php +++ b/src/Test/Constraint/Probe/ProbeExecutedTask.php @@ -31,6 +31,10 @@ public function toString(): string */ protected function matches($other): bool { + if (!$other instanceof ProbeInterface) { + return false; + } + return $this->expectedCount === $other->getExecutedTasks(); } } diff --git a/src/Test/Constraint/Probe/ProbeFailedTask.php b/src/Test/Constraint/Probe/ProbeFailedTask.php index 2c0fbff6..3504fd63 100644 --- a/src/Test/Constraint/Probe/ProbeFailedTask.php +++ b/src/Test/Constraint/Probe/ProbeFailedTask.php @@ -31,6 +31,10 @@ public function toString(): string */ protected function matches($other): bool { + if (!$other instanceof ProbeInterface) { + return false; + } + return $this->expectedCount === $other->getFailedTasks(); } } diff --git a/src/Test/Constraint/Probe/ProbeScheduledTask.php b/src/Test/Constraint/Probe/ProbeScheduledTask.php index 05515788..cad3817b 100644 --- a/src/Test/Constraint/Probe/ProbeScheduledTask.php +++ b/src/Test/Constraint/Probe/ProbeScheduledTask.php @@ -7,6 +7,8 @@ use PHPUnit\Framework\Constraint\Constraint; use SchedulerBundle\Probe\ProbeInterface; +use SchedulerBundle\SchedulerInterface; +use Throwable; use function sprintf; /** @@ -28,9 +30,15 @@ public function toString(): string /** * @param mixed|ProbeInterface $other + * + * @throws Throwable {@see SchedulerInterface::getTasks()} */ protected function matches($other): bool { + if (!$other instanceof ProbeInterface) { + return false; + } + return $this->expectedCount === $other->getScheduledTasks(); } } diff --git a/src/Test/Constraint/Probe/ProbeState.php b/src/Test/Constraint/Probe/ProbeState.php index 1f41091e..1cffa316 100644 --- a/src/Test/Constraint/Probe/ProbeState.php +++ b/src/Test/Constraint/Probe/ProbeState.php @@ -35,6 +35,10 @@ public function toString(): string */ protected function matches($other): bool { + if (!$other instanceof ProbeInterface) { + return false; + } + return $this->expectedState === [ 'executedTasks' => $other->getExecutedTasks(), 'failedTasks' => $other->getFailedTasks(), diff --git a/src/Test/Constraint/Scheduler/SchedulerDueTask.php b/src/Test/Constraint/Scheduler/SchedulerDueTask.php index 700f5943..3f3ae471 100644 --- a/src/Test/Constraint/Scheduler/SchedulerDueTask.php +++ b/src/Test/Constraint/Scheduler/SchedulerDueTask.php @@ -7,6 +7,7 @@ use PHPUnit\Framework\Constraint\Constraint; use SchedulerBundle\SchedulerInterface; +use Throwable; use function sprintf; /** @@ -28,9 +29,15 @@ public function toString(): string /** * @param mixed|SchedulerInterface $other + * + * @throws Throwable {@see SchedulerInterface::getDueTasks()} */ protected function matches($other): bool { + if (!$other instanceof SchedulerInterface) { + return false; + } + return $this->expectedCount === $other->getDueTasks()->count(); } } diff --git a/src/Test/Constraint/TaskExecuted.php b/src/Test/Constraint/TaskExecuted.php index 743e9324..a3af76f5 100644 --- a/src/Test/Constraint/TaskExecuted.php +++ b/src/Test/Constraint/TaskExecuted.php @@ -33,6 +33,10 @@ public function toString(): string */ protected function matches($other): bool { + if (!$other instanceof TaskEventList) { + return false; + } + return $this->expectedCount === $this->countExecutedTasks($other); } diff --git a/src/Test/Constraint/TaskFailed.php b/src/Test/Constraint/TaskFailed.php index c4c4b3f4..5fac5515 100644 --- a/src/Test/Constraint/TaskFailed.php +++ b/src/Test/Constraint/TaskFailed.php @@ -8,7 +8,6 @@ use SchedulerBundle\Event\TaskEventList; use function count; -use function is_countable; use function sprintf; /** @@ -33,6 +32,10 @@ public function toString(): string */ protected function matches($other): bool { - return $this->expectedCount === (is_countable($other->getFailedTaskEvents()) ? count($other->getFailedTaskEvents()) : 0); + if (!$other instanceof TaskEventList) { + return false; + } + + return $this->expectedCount === count($other->getFailedTaskEvents()); } } diff --git a/src/Test/Constraint/TaskQueued.php b/src/Test/Constraint/TaskQueued.php index 443eece6..72788bf3 100644 --- a/src/Test/Constraint/TaskQueued.php +++ b/src/Test/Constraint/TaskQueued.php @@ -32,6 +32,10 @@ public function toString(): string */ protected function matches($other): bool { + if (!$other instanceof TaskEventList) { + return false; + } + return $this->expectedCount === $this->countQueuedTasks($other); } diff --git a/src/Test/Constraint/TaskScheduled.php b/src/Test/Constraint/TaskScheduled.php index 3e31603a..3620e724 100644 --- a/src/Test/Constraint/TaskScheduled.php +++ b/src/Test/Constraint/TaskScheduled.php @@ -32,6 +32,10 @@ public function toString(): string */ protected function matches($other): bool { - return $this->expectedCount === (is_countable($other->getScheduledTaskEvents()) ? count($other->getScheduledTaskEvents()) : 0); + if (!$other instanceof TaskEventList) { + return false; + } + + return $this->expectedCount === count($other->getScheduledTaskEvents()); } } diff --git a/src/Test/Constraint/TaskUnscheduled.php b/src/Test/Constraint/TaskUnscheduled.php index 1711fc9f..94936c22 100644 --- a/src/Test/Constraint/TaskUnscheduled.php +++ b/src/Test/Constraint/TaskUnscheduled.php @@ -32,6 +32,10 @@ public function toString(): string */ protected function matches($other): bool { - return $this->expectedCount === (is_countable($other->getUnscheduledTaskEvents()) ? count($other->getUnscheduledTaskEvents()) : 0); + if (!$other instanceof TaskEventList) { + return false; + } + + return $this->expectedCount === count($other->getUnscheduledTaskEvents()); } } From 75157d6bfd3c1086f1a5d6e1641754125f647e81 Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Wed, 4 May 2022 09:36:52 +0200 Subject: [PATCH 07/11] refactor(core): improvements on AbstractFiberHandler --- src/Fiber/AbstractFiberHandler.php | 9 ++++++++- tests/Task/Builder/ChainedBuilderTest.php | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Fiber/AbstractFiberHandler.php b/src/Fiber/AbstractFiberHandler.php index fc4e1b91..2d68ad8a 100644 --- a/src/Fiber/AbstractFiberHandler.php +++ b/src/Fiber/AbstractFiberHandler.php @@ -5,9 +5,16 @@ namespace SchedulerBundle\Fiber; use Closure; +use DateTimeZone; use Fiber; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; +use SchedulerBundle\Pool\Configuration\SchedulerConfiguration; +use SchedulerBundle\Task\LazyTask; +use SchedulerBundle\Task\LazyTaskList; +use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\Task\TaskListInterface; +use SchedulerBundle\Transport\Configuration\ConfigurationInterface; use Throwable; use function sprintf; @@ -24,7 +31,7 @@ public function __construct(?LoggerInterface $logger = null) $this->logger = $logger ?? new NullLogger(); } - protected function handleOperationViaFiber(Closure $func): mixed + protected function handleOperationViaFiber(Closure $func): TaskListInterface|LazyTaskList|TaskInterface|LazyTask|SchedulerConfiguration|ConfigurationInterface|DateTimeZone|string|float|int|bool|array|null { $fiber = new Fiber(callback: function (Closure $operation): void { $value = $operation(); diff --git a/tests/Task/Builder/ChainedBuilderTest.php b/tests/Task/Builder/ChainedBuilderTest.php index b147df10..e6e9fd6f 100644 --- a/tests/Task/Builder/ChainedBuilderTest.php +++ b/tests/Task/Builder/ChainedBuilderTest.php @@ -110,6 +110,7 @@ public function testBuilderCanBuild(array $configuration): void self::assertInstanceOf(ChainedTask::class, $task); self::assertCount(3, $task->getTasks()); + self::assertIsArray($configuration['tasks']); self::assertInstanceOf(ShellTask::class, $task->getTask($configuration['tasks'][0]['name'])); self::assertSame('foo', $task->getTask($configuration['tasks'][0]['name'])->getName()); self::assertInstanceOf(NullTask::class, $task->getTask($configuration['tasks'][1]['name'])); From ca07d6b32ff08a682e9af4dbe0f607f01de26d6c Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Tue, 31 May 2022 15:15:50 +0200 Subject: [PATCH 08/11] refactor(core): improvements && deps updated --- src/Command/RemoveFailedTaskCommand.php | 2 +- src/Command/RetryFailedTaskCommand.php | 2 +- src/Command/YieldTaskCommand.php | 2 +- src/Task/TaskListInterface.php | 2 +- src/Transport/FiberTransportFactory.php | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Command/RemoveFailedTaskCommand.php b/src/Command/RemoveFailedTaskCommand.php index 3f97aec9..00d970cf 100644 --- a/src/Command/RemoveFailedTaskCommand.php +++ b/src/Command/RemoveFailedTaskCommand.php @@ -93,7 +93,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int $name = $input->getArgument(name: 'name'); $force = $input->getOption(name: 'force'); - $name = htmlspecialchars(string: $name, flags: ENT_QUOTES, encoding: 'UTF-8'); + $name = htmlspecialchars(string: (string) $name, flags: ENT_QUOTES, encoding: 'UTF-8'); try { $failedTasks = $this->worker->getFailedTasks(); diff --git a/src/Command/RetryFailedTaskCommand.php b/src/Command/RetryFailedTaskCommand.php index e2b4c6b1..b8f7839b 100644 --- a/src/Command/RetryFailedTaskCommand.php +++ b/src/Command/RetryFailedTaskCommand.php @@ -99,7 +99,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int $force = $input->getOption(name: 'force'); try { - $task = $this->worker->getFailedTasks()->get(taskName: $name); + $task = $this->worker->getFailedTasks()->get(taskName: (string) $name); } catch (InvalidArgumentException) { $symfonyStyle->error(message: sprintf('The task "%s" does not fails', $name)); diff --git a/src/Command/YieldTaskCommand.php b/src/Command/YieldTaskCommand.php index d83d1781..f930c1c5 100644 --- a/src/Command/YieldTaskCommand.php +++ b/src/Command/YieldTaskCommand.php @@ -91,7 +91,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int if (true === $force || $symfonyStyle->confirm(question: 'Do you want to yield this task?', default: false)) { try { - $this->scheduler->yieldTask(name: $name, async: $input->getOption('async')); + $this->scheduler->yieldTask(name: (string) $name, async: (bool) $input->getOption('async')); } catch (Throwable $throwable) { $symfonyStyle->error(message: [ 'An error occurred when trying to yield the task:', diff --git a/src/Task/TaskListInterface.php b/src/Task/TaskListInterface.php index 39fb5082..03a05ed4 100644 --- a/src/Task/TaskListInterface.php +++ b/src/Task/TaskListInterface.php @@ -67,7 +67,7 @@ public function walk(Closure $func): TaskListInterface|LazyTaskList; /** * Return an array containing the results of applying @param Closure $func to each tasks * - * Depending on @param bool $keepKeys, the final array can be indexed using numeric keys. + * Depending on @param bool $keepKeys The final array can be indexed using numeric keys. * * @return array */ diff --git a/src/Transport/FiberTransportFactory.php b/src/Transport/FiberTransportFactory.php index cae0bdfe..e2cefe07 100644 --- a/src/Transport/FiberTransportFactory.php +++ b/src/Transport/FiberTransportFactory.php @@ -40,11 +40,11 @@ public function createTransport( SchedulePolicyOrchestratorInterface $schedulePolicyOrchestrator ): FiberTransport { foreach ($this->factories as $factory) { - if (!$factory->support($dsn->getOptions()[0])) { + if (!$factory->support((string) $dsn->getOptions()[0])) { continue; } - $dsn = Dsn::fromString($dsn->getOptions()[0]); + $dsn = Dsn::fromString((string) $dsn->getOptions()[0]); return new FiberTransport( $factory->createTransport($dsn, $options, $configuration, $serializer, $schedulePolicyOrchestrator), From e12affb1ac36dc0f3143d029580b4aed310da812 Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Fri, 3 Jun 2022 16:59:26 +0200 Subject: [PATCH 09/11] refactor(task): improvements --- phpstan.neon.8.0.dist | 2 +- phpstan.neon.8.1.dist | 2 +- src/Task/HttpTask.php | 24 ++++++++++-------------- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/phpstan.neon.8.0.dist b/phpstan.neon.8.0.dist index 25f22d7b..6957a20f 100644 --- a/phpstan.neon.8.0.dist +++ b/phpstan.neon.8.0.dist @@ -6,7 +6,7 @@ includes: - vendor/phpstan/phpstan-symfony/extension.neon parameters: - level: 9 + level: 8 paths: - src - tests diff --git a/phpstan.neon.8.1.dist b/phpstan.neon.8.1.dist index 5bcef050..244764fe 100644 --- a/phpstan.neon.8.1.dist +++ b/phpstan.neon.8.1.dist @@ -6,7 +6,7 @@ includes: - vendor/phpstan/phpstan-symfony/extension.neon parameters: - level: 9 + level: 8 paths: - src - tests diff --git a/src/Task/HttpTask.php b/src/Task/HttpTask.php index dae554f2..3f0f69ea 100644 --- a/src/Task/HttpTask.php +++ b/src/Task/HttpTask.php @@ -5,13 +5,11 @@ namespace SchedulerBundle\Task; use SchedulerBundle\Exception\InvalidArgumentException; -use SchedulerBundle\Exception\RuntimeException; use Symfony\Contracts\HttpClient\HttpClientInterface; use function array_key_exists; use function array_walk; use function is_array; -use function is_string; use function sprintf; /** @@ -19,6 +17,9 @@ */ final class HttpTask extends AbstractTask { + private string $url; + private string $method; + /** * @param array $clientOptions */ @@ -26,42 +27,37 @@ public function __construct(string $name, string $url, string $method = 'GET', a { $this->validateClientOptions(clientOptions: $clientOptions); $this->defineOptions(options: [ - 'url' => $url, - 'method' => $method, 'client_options' => $clientOptions, ], additionalOptions: [ - 'url' => 'string', - 'method' => 'string', 'client_options' => ['array', 'string[]'], ]); + $this->url = $url; + $this->method = $method; + parent::__construct(name: $name); } public function getUrl(): string { - if (!is_string(value: $this->options['url'])) { - throw new RuntimeException(message: 'The url is not defined'); - } - - return $this->options['url']; + return $this->url; } public function setUrl(string $url): self { - $this->options['url'] = $url; + $this->url = $url; return $this; } public function getMethod(): string { - return $this->options['method'] ?? 'GET'; + return $this->method; } public function setMethod(string $method): self { - $this->options['method'] = $method; + $this->method = $method; return $this; } From 5b36a41ab206154177a03ee718efcd181c59bb1b Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Wed, 22 Jun 2022 09:00:44 +0200 Subject: [PATCH 10/11] refactor(core): static analysis improvements --- .../Transport/Configuration/Connection.php | 16 +++++----- src/Fiber/AbstractFiberHandler.php | 2 +- src/Runner/HttpTaskRunner.php | 4 ++- src/Runner/ProbeTaskRunner.php | 5 +++- src/Transport/FiberTransport.php | 30 +++++++++---------- tests/AbstractSchedulerTestCase.php | 22 ++++---------- tests/LazySchedulerTest.php | 19 +----------- 7 files changed, 37 insertions(+), 61 deletions(-) diff --git a/src/Bridge/Doctrine/Transport/Configuration/Connection.php b/src/Bridge/Doctrine/Transport/Configuration/Connection.php index 242a8f72..d9a8d57f 100644 --- a/src/Bridge/Doctrine/Transport/Configuration/Connection.php +++ b/src/Bridge/Doctrine/Transport/Configuration/Connection.php @@ -35,7 +35,7 @@ public function __construct( private DbalConnection $connection, private bool $autoSetup ) { - parent::__construct($connection); + parent::__construct(driverConnection: $connection); } /** @@ -286,7 +286,7 @@ public function toArray(): array $statement = $this->executeQuery($queryBuilder->getSQL()); $keys = $statement->fetchAllAssociative(); - if (!$keys) { + if ([] === $keys) { throw new RuntimeException('No result found'); } @@ -311,7 +311,7 @@ public function count(): int $statement = $this->executeQuery($queryBuilder->getSQL()); $result = $statement->fetchAssociative(); - if (!$result) { + if (false === $result || [] === $result) { throw new RuntimeException('No result found'); } @@ -349,7 +349,7 @@ protected function addTableToSchema(Schema $schema): void protected function executeQuery(string $sql, array $parameters = [], array $types = []): Result { try { - return $this->connection->executeQuery($sql, $parameters, $types); + return $this->connection->executeQuery(sql: $sql, params: $parameters, types: $types); } catch (Throwable $throwable) { if ($this->connection->isTransactionActive()) { throw $throwable; @@ -359,7 +359,7 @@ protected function executeQuery(string $sql, array $parameters = [], array $type $this->setup(); } - return $this->connection->executeQuery($sql, $parameters, $types); + return $this->connection->executeQuery(sql: $sql, params: $parameters, types: $types); } } @@ -372,11 +372,11 @@ public function configureSchema(Schema $schema, DBALConnection $dbalConnection): return; } - if ($schema->hasTable(self::TABLE_NAME)) { + if ($schema->hasTable(name: self::TABLE_NAME)) { return; } - $this->addTableToSchema($schema); + $this->addTableToSchema(schema: $schema); } /** @@ -388,7 +388,7 @@ private function setup(): void $schemaAssetsFilter = $configuration->getSchemaAssetsFilter(); $configuration->setSchemaAssetsFilter(); $this->updateSchema(); - $configuration->setSchemaAssetsFilter($schemaAssetsFilter); + $configuration->setSchemaAssetsFilter(callable: $schemaAssetsFilter); $this->autoSetup = false; } diff --git a/src/Fiber/AbstractFiberHandler.php b/src/Fiber/AbstractFiberHandler.php index 2d68ad8a..005bd0d4 100644 --- a/src/Fiber/AbstractFiberHandler.php +++ b/src/Fiber/AbstractFiberHandler.php @@ -40,7 +40,7 @@ protected function handleOperationViaFiber(Closure $func): TaskListInterface|Laz }); try { - $return = $fiber->start($func); + $return = $fiber->start(args: $func); } catch (Throwable $throwable) { $this->logger->critical(message: sprintf('An error occurred while performing the action: %s', $throwable->getMessage())); diff --git a/src/Runner/HttpTaskRunner.php b/src/Runner/HttpTaskRunner.php index aa155a82..af3ec896 100644 --- a/src/Runner/HttpTaskRunner.php +++ b/src/Runner/HttpTaskRunner.php @@ -17,7 +17,9 @@ */ final class HttpTaskRunner implements RunnerInterface { - public function __construct(private ?HttpClientInterface $httpClient = null) + private HttpClientInterface $httpClient; + + public function __construct(?HttpClientInterface $httpClient = null) { $this->httpClient = $httpClient ?? HttpClient::create(); } diff --git a/src/Runner/ProbeTaskRunner.php b/src/Runner/ProbeTaskRunner.php index 6b50cb13..360f2858 100644 --- a/src/Runner/ProbeTaskRunner.php +++ b/src/Runner/ProbeTaskRunner.php @@ -20,7 +20,9 @@ */ final class ProbeTaskRunner implements RunnerInterface { - public function __construct(private ?HttpClientInterface $httpClient = null) + private HttpClientInterface $httpClient; + + public function __construct(?HttpClientInterface $httpClient = null) { $this->httpClient = $httpClient ?? HttpClient::create(); } @@ -36,6 +38,7 @@ public function run(TaskInterface $task, WorkerInterface $worker): Output try { $response = $this->httpClient->request(method: 'GET', url: $task->getExternalProbePath()); + $body = $response->toArray(); if (!array_key_exists(key: 'failedTasks', array: $body) || ($task->getErrorOnFailedTasks() && 0 !== $body['failedTasks'])) { throw new RuntimeException(message: 'The probe state is invalid'); diff --git a/src/Transport/FiberTransport.php b/src/Transport/FiberTransport.php index 0c629e39..588ee8cd 100644 --- a/src/Transport/FiberTransport.php +++ b/src/Transport/FiberTransport.php @@ -22,7 +22,7 @@ public function __construct( private TransportInterface $transport, protected ?LoggerInterface $logger = null ) { - parent::__construct($logger); + parent::__construct(logger: $logger); } /** @@ -32,7 +32,7 @@ public function __construct( */ public function get(string $name, bool $lazy = false): TaskInterface|LazyTask { - return $this->handleOperationViaFiber(fn (): TaskInterface|LazyTask => $this->transport->get($name, $lazy)); + return $this->handleOperationViaFiber(func: fn (): TaskInterface|LazyTask => $this->transport->get(name: $name, lazy: $lazy)); } /** @@ -42,7 +42,7 @@ public function get(string $name, bool $lazy = false): TaskInterface|LazyTask */ public function list(bool $lazy = false): TaskListInterface|LazyTaskList { - return $this->handleOperationViaFiber(fn (): TaskListInterface|LazyTaskList => $this->transport->list($lazy)); + return $this->handleOperationViaFiber(func: fn (): TaskListInterface|LazyTaskList => $this->transport->list(lazy: $lazy)); } /** @@ -52,8 +52,8 @@ public function list(bool $lazy = false): TaskListInterface|LazyTaskList */ public function create(TaskInterface $task): void { - $this->handleOperationViaFiber(function () use ($task): void { - $this->transport->create($task); + $this->handleOperationViaFiber(func: function () use ($task): void { + $this->transport->create(task: $task); }); } @@ -64,8 +64,8 @@ public function create(TaskInterface $task): void */ public function update(string $name, TaskInterface $updatedTask): void { - $this->handleOperationViaFiber(function () use ($name, $updatedTask): void { - $this->transport->update($name, $updatedTask); + $this->handleOperationViaFiber(func: function () use ($name, $updatedTask): void { + $this->transport->update(name: $name, updatedTask: $updatedTask); }); } @@ -76,8 +76,8 @@ public function update(string $name, TaskInterface $updatedTask): void */ public function delete(string $name): void { - $this->handleOperationViaFiber(function () use ($name): void { - $this->transport->delete($name); + $this->handleOperationViaFiber(func: function () use ($name): void { + $this->transport->delete(name: $name); }); } @@ -88,8 +88,8 @@ public function delete(string $name): void */ public function pause(string $name): void { - $this->handleOperationViaFiber(function () use ($name): void { - $this->transport->pause($name); + $this->handleOperationViaFiber(func: function () use ($name): void { + $this->transport->pause(name: $name); }); } @@ -100,8 +100,8 @@ public function pause(string $name): void */ public function resume(string $name): void { - $this->handleOperationViaFiber(function () use ($name): void { - $this->transport->resume($name); + $this->handleOperationViaFiber(func: function () use ($name): void { + $this->transport->resume(name: $name); }); } @@ -112,7 +112,7 @@ public function resume(string $name): void */ public function clear(): void { - $this->handleOperationViaFiber(function (): void { + $this->handleOperationViaFiber(func: function (): void { $this->transport->clear(); }); } @@ -124,6 +124,6 @@ public function clear(): void */ public function getConfiguration(): ConfigurationInterface { - return $this->handleOperationViaFiber(fn (): ConfigurationInterface => $this->transport->getConfiguration()); + return $this->handleOperationViaFiber(func: fn (): ConfigurationInterface => $this->transport->getConfiguration()); } } diff --git a/tests/AbstractSchedulerTestCase.php b/tests/AbstractSchedulerTestCase.php index 5c4cd760..64b37ef4 100644 --- a/tests/AbstractSchedulerTestCase.php +++ b/tests/AbstractSchedulerTestCase.php @@ -53,24 +53,12 @@ public function testSchedulerCanScheduleTasksWithCustomTimezone(): void self::assertCount(expectedCount: 1, haystack: $scheduler->getTasks()); } - /** - * @throws Exception {@see Scheduler::__construct()} - * @throws Throwable {@see FiberScheduler::getTimezone()} - */ - public function testSchedulerCanReturnTheTimezone(): void - { - $scheduler = $this->getScheduler(); - - $timezone = $scheduler->getTimezone(); - self::assertSame(expected: 'UTC', actual: $timezone->getName()); - } - /** * @throws Throwable {@see Scheduler::__construct()} */ public function testSchedulerCanRebootWithEmptyTasks(): void { - $scheduler = $this->buildScheduler(); + $scheduler = $this->getScheduler(); $scheduler->schedule(new NullTask('bar')); self::assertCount(1, $scheduler->getTasks()); @@ -84,7 +72,7 @@ public function testSchedulerCanRebootWithEmptyTasks(): void */ public function testSchedulerCanReboot(): void { - $scheduler = $this->buildScheduler(); + $scheduler = $this->getScheduler(); $scheduler->schedule(new NullTask('foo', [ 'expression' => '@reboot', @@ -104,7 +92,7 @@ public function testSchedulerCannotPreemptEmptyDueTasks(): void { $task = new NullTask('foo'); - $scheduler = $this->buildScheduler(); + $scheduler = $this->getScheduler(); $scheduler->preempt('foo', static fn (TaskInterface $task): bool => $task->getName() === 'bar'); self::assertNotSame(TaskInterface::READY_TO_EXECUTE, $task->getState()); @@ -116,10 +104,10 @@ public function testSchedulerCannotPreemptEmptyDueTasks(): void */ public function testSchedulerCanReturnTheTimezone(): void { - $scheduler = $this->buildScheduler(); + $scheduler = $this->getScheduler(); $timezone = $scheduler->getTimezone(); - self::assertSame('UTC', $timezone->getName()); + self::assertSame(expected: 'UTC', actual: $timezone->getName()); } /** diff --git a/tests/LazySchedulerTest.php b/tests/LazySchedulerTest.php index 34d2a9eb..fd600442 100644 --- a/tests/LazySchedulerTest.php +++ b/tests/LazySchedulerTest.php @@ -57,7 +57,7 @@ */ final class LazySchedulerTest extends AbstractSchedulerTestCase { - protected function buildScheduler(): SchedulerInterface + protected function getScheduler(): SchedulerInterface { return new LazyScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration(), new SchedulePolicyOrchestrator([ new FirstInFirstOutPolicy(), @@ -832,23 +832,6 @@ public function testTaskCanBeUpdatedAsynchronously(): void self::assertSame('0 * * * *', $scheduler->getTasks()->get('foo')->getExpression()); } - /** - * @throws Exception {@see Scheduler::__construct()} - */ - public function testSchedulerCanReturnTheTimezone(): void - { - $scheduler = new LazyScheduler(new Scheduler('UTC', new InMemoryTransport(new InMemoryConfiguration([ - 'execution_mode' => 'first_in_first_out', - ]), new SchedulePolicyOrchestrator([ - new FirstInFirstOutPolicy(), - ])), new SchedulerMiddlewareStack(), new EventDispatcher())); - self::assertFalse($scheduler->isInitialized()); - - $timezone = $scheduler->getTimezone(); - self::assertSame('UTC', $timezone->getName()); - self::assertTrue($scheduler->isInitialized()); - } - /** * @return Generator> */ From 966ce40ed852389f3d5c98512e608fb7c43554f9 Mon Sep 17 00:00:00 2001 From: Guillaume Loulier Date: Thu, 18 Aug 2022 08:57:53 +0200 Subject: [PATCH 11/11] refactor(core): style improvements --- .php-cs-fixer.dist.php | 5 +++ .../Transport/Configuration/Connection.php | 7 ++-- .../DoctrineConfigurationFactory.php | 3 +- src/Bridge/Doctrine/Transport/Connection.php | 18 ++++++--- .../Transport/DoctrineTransportFactory.php | 3 +- src/Bridge/Redis/Transport/Connection.php | 8 ++-- .../Redis/Transport/RedisTransportFactory.php | 6 ++- src/Command/ConsumeTasksCommand.php | 31 +++++++++------- src/Command/DebugConfigurationCommand.php | 6 ++- src/Command/DebugMiddlewareCommand.php | 11 ++++-- src/Command/DebugProbeCommand.php | 6 ++- src/Command/ExecuteExternalProbeCommand.php | 6 ++- src/Command/ExecuteTaskCommand.php | 23 +++++++----- src/Command/ListFailedTasksCommand.php | 16 +++++--- src/Command/ListTasksCommand.php | 26 ++++++++----- src/Command/RebootSchedulerCommand.php | 15 ++++---- src/Command/RemoveFailedTaskCommand.php | 19 ++++++---- src/Command/RetryFailedTaskCommand.php | 10 +++-- src/Command/StopWorkerCommand.php | 5 ++- src/DataCollector/SchedulerDataCollector.php | 11 +++--- .../SchedulerBundleConfiguration.php | 11 +++--- .../SchedulerBundleExtension.php | 27 ++++++++------ src/DependencyInjection/SchedulerPass.php | 5 ++- src/Event/TaskEventList.php | 6 +-- src/EventListener/MercureEventSubscriber.php | 11 ++++-- src/EventListener/ProbeStateSubscriber.php | 5 ++- .../StopWorkerOnFailureLimitSubscriber.php | 5 ++- .../StopWorkerOnNextTaskSubscriber.php | 5 ++- .../StopWorkerOnSignalSubscriber.php | 16 +++++--- .../StopWorkerOnTaskLimitSubscriber.php | 2 +- .../StopWorkerOnTimeLimitSubscriber.php | 6 ++- src/EventListener/TaskLoggerSubscriber.php | 4 +- src/EventListener/TaskSubscriber.php | 15 +++++--- src/Expression/ComputedExpressionBuilder.php | 10 ++--- src/Expression/Expression.php | 11 ++++-- src/Fiber/AbstractFiberHandler.php | 12 +++++- src/HttpScheduler.php | 6 ++- src/Messenger/TaskToExecuteMessageHandler.php | 3 +- src/Middleware/AbstractMiddlewareStack.php | 7 ++-- src/Middleware/MaxExecutionMiddleware.php | 6 ++- src/Middleware/MiddlewareRegistry.php | 11 ++++-- .../MiddlewareRegistryInterface.php | 5 ++- src/Middleware/SchedulerMiddlewareStack.php | 5 ++- src/Middleware/SingleRunTaskMiddleware.php | 4 +- src/Middleware/TaskCallbackMiddleware.php | 6 ++- src/Middleware/TaskLockBagMiddleware.php | 6 ++- src/Middleware/WorkerMiddlewareStack.php | 5 ++- src/Pool/SchedulerPool.php | 4 +- src/Runner/CallbackTaskRunner.php | 4 +- src/Runner/CommandTaskRunner.php | 17 +++++---- src/Runner/HttpTaskRunner.php | 4 +- src/Runner/MessengerTaskRunner.php | 4 +- src/Runner/NotificationTaskRunner.php | 4 +- src/Runner/ProbeTaskRunner.php | 5 ++- src/Runner/RunnerRegistry.php | 13 ++++--- src/Runner/ShellTaskRunner.php | 4 +- src/Scheduler.php | 31 +++++++++------- src/Serializer/AccessLockBagNormalizer.php | 6 ++- .../NotificationTaskBagNormalizer.php | 11 ++++-- .../SchedulerConfigurationNormalizer.php | 9 +++-- src/Serializer/TaskNormalizer.php | 37 +++++++++++-------- src/Task/AbstractTask.php | 25 ++++++++----- src/Task/Builder/AbstractTaskBuilder.php | 2 +- src/Task/Builder/BuilderInterface.php | 2 +- src/Task/Builder/ChainedBuilder.php | 5 ++- src/Task/Builder/CommandBuilder.php | 2 +- src/Task/Builder/HttpBuilder.php | 2 +- src/Task/Builder/NullBuilder.php | 2 +- src/Task/Builder/ShellBuilder.php | 2 +- src/Task/CommandTask.php | 6 +-- src/Task/HttpTask.php | 11 ++++-- src/Task/TaskBuilder.php | 5 ++- src/Task/TaskExecutionTracker.php | 5 ++- src/Task/TaskList.php | 27 +++++++++----- .../Constraint/Probe/ProbeScheduledTask.php | 4 +- src/Test/Constraint/Probe/ProbeState.php | 4 +- .../Constraint/Scheduler/SchedulerDueTask.php | 3 +- src/Test/Constraint/TaskFailed.php | 4 +- src/Test/Constraint/TaskScheduled.php | 4 +- src/Test/Constraint/TaskUnscheduled.php | 4 +- .../AbstractCompoundTransportFactory.php | 9 +++-- src/Transport/CacheTransport.php | 15 +++++--- .../AbstractCompoundConfigurationFactory.php | 9 +++-- .../Configuration/AbstractConfiguration.php | 4 +- .../Configuration/CacheConfiguration.php | 12 ++++-- .../CacheConfigurationFactory.php | 3 +- .../Configuration/ConfigurationFactory.php | 3 +- .../Configuration/ConfigurationRegistry.php | 7 +++- .../FailOverConfigurationFactory.php | 3 +- .../FiberConfigurationFactory.php | 6 ++- .../Configuration/InMemoryConfiguration.php | 6 ++- .../LazyConfigurationFactory.php | 6 ++- src/Transport/Dsn.php | 6 ++- src/Transport/FailOverTransportFactory.php | 3 +- src/Transport/FiberTransportFactory.php | 4 +- src/Transport/FilesystemTransport.php | 17 +++++---- src/Transport/LazyTransportFactory.php | 4 +- src/Transport/LongTailTransportFactory.php | 3 +- src/Transport/TransportFactory.php | 3 +- src/Transport/TransportRegistry.php | 6 ++- .../ExecutionPolicyRegistry.php | 6 ++- src/Worker/Worker.php | 6 ++- tests/AbstractSchedulerTestCase.php | 2 +- .../ConnectionIntegrationPostgresqlTest.php | 8 ++-- .../ConnectionIntegrationTest.php | 5 ++- .../DoctrineConfigurationFactoryTest.php | 6 ++- .../DoctrineConfigurationIntegrationTest.php | 5 ++- .../ConnectionIntegrationSQLiteTest.php | 5 ++- .../Transport/ConnectionIntegrationTest.php | 13 +++++-- .../Transport/ConnectionIntegrationTest.php | 12 ++++-- .../Bridge/Redis/Transport/ConnectionTest.php | 6 ++- .../Transport/RedisTransportFactoryTest.php | 7 ++-- .../RedisTransportIntegrationTest.php | 8 ++-- tests/Command/ConsumeTasksCommandTest.php | 24 ++++++------ tests/Command/ListFailedTasksCommandTest.php | 8 ++-- tests/Command/ListTasksCommandTest.php | 8 ++-- tests/Command/RebootSchedulerCommandTest.php | 8 ++-- tests/Command/RemoveFailedTaskCommandTest.php | 6 +-- tests/Command/RetryFailedTaskCommandTest.php | 4 +- .../SchedulerBundleExtensionTest.php | 8 ++-- .../DependencyInjection/SchedulerPassTest.php | 6 +-- .../MercureEventSubscriberTest.php | 11 ++++-- .../ProbeStateSubscriberTest.php | 5 ++- .../StopWorkerOnNextTaskSubscriberTest.php | 5 ++- tests/EventListener/TaskSubscriberTest.php | 12 +++--- .../ComputedExpressionBuilderTest.php | 5 ++- tests/FiberSchedulerTest.php | 22 +++++++---- tests/LazySchedulerTest.php | 6 +-- .../Middleware/TaskCallbackMiddlewareTest.php | 16 ++++---- tests/Runner/Assets/BarCommand.php | 5 ++- tests/Runner/Assets/FooCommand.php | 5 ++- tests/Runner/CommandTaskRunnerTest.php | 6 +-- tests/Runner/HttpTaskRunnerTest.php | 11 +++--- tests/Runner/MessengerTaskRunnerTest.php | 6 +-- tests/Runner/NotificationTaskRunnerTest.php | 4 +- tests/Runner/RunnerRegistryTest.php | 2 +- .../SchedulePolicyOrchestratorTest.php | 4 +- tests/SchedulerTest.php | 28 ++++++++------ tests/Serializer/TaskNormalizerTest.php | 30 +++++++-------- tests/Task/Builder/CommandBuilderTest.php | 4 +- tests/Task/Builder/HttpBuilderTest.php | 4 +- tests/Task/Builder/NullBuilderTest.php | 4 +- tests/Task/Builder/ShellBuilderTest.php | 2 +- tests/Task/CallbackTaskTest.php | 12 +++--- tests/Task/LazyTaskListTest.php | 10 ++--- tests/Task/LazyTaskTest.php | 2 +- tests/Task/NotificationTaskTest.php | 2 +- tests/Task/NullTaskTest.php | 6 ++- tests/Task/ShellTaskTest.php | 4 +- tests/Task/TaskBuilderTest.php | 4 +- tests/Task/TaskExecutionTrackerTest.php | 3 +- .../CacheConfigurationFactoryTest.php | 2 +- .../FiberConfigurationFactoryTest.php | 2 +- .../Configuration/FiberConfigurationTest.php | 2 +- .../InMemoryConfigurationTest.php | 2 +- tests/Transport/FiberTransportFactoryTest.php | 2 +- tests/Transport/FiberTransportTest.php | 2 +- tests/Transport/FilesystemTransportTest.php | 20 +++++----- tests/Transport/InMemoryTransportTest.php | 6 ++- tests/Transport/LongTailTransportTest.php | 2 +- tests/Transport/RoundRobinTransportTest.php | 2 +- tests/Worker/Assets/LongExecutionCommand.php | 5 ++- tests/Worker/FiberWorkerTest.php | 10 ++--- tests/Worker/WorkerTest.php | 32 ++++++++-------- 164 files changed, 802 insertions(+), 539 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 2d7af7cc..7782165d 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -37,12 +37,17 @@ 'no_trailing_comma_in_singleline_array' => true, 'no_unused_imports' => true, 'no_useless_return' => true, + 'ordered_imports' => true, 'return_assignment' => true, + 'semicolon_after_instruction' => true, 'short_scalar_cast' => true, 'simplified_null_return' => true, 'single_line_throw' => true, + 'static_lambda' => true, 'strict_comparison' => true, 'strict_param' => true, + 'ternary_to_null_coalescing' => true, 'use_arrow_functions' => true, 'void_return' => true, + 'yoda_style' => true, ])->setFinder($finder); diff --git a/src/Bridge/Doctrine/Transport/Configuration/Connection.php b/src/Bridge/Doctrine/Transport/Configuration/Connection.php index d9a8d57f..3fba4b20 100644 --- a/src/Bridge/Doctrine/Transport/Configuration/Connection.php +++ b/src/Bridge/Doctrine/Transport/Configuration/Connection.php @@ -4,6 +4,9 @@ namespace SchedulerBundle\Bridge\Doctrine\Transport\Configuration; +use function array_map; +use function array_walk; + use Closure; use Doctrine\DBAL\Connection as DbalConnection; use Doctrine\DBAL\Exception; @@ -18,12 +21,10 @@ use SchedulerBundle\Exception\LogicException; use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\Exception\TransportException; + use SchedulerBundle\Transport\Configuration\ExternalConnectionInterface; use Throwable; -use function array_map; -use function array_walk; - /** * @author Guillaume Loulier */ diff --git a/src/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationFactory.php b/src/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationFactory.php index 50ca7cc8..cf778962 100644 --- a/src/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationFactory.php +++ b/src/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationFactory.php @@ -11,10 +11,11 @@ use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Transport\Configuration\ConfigurationFactoryInterface; use SchedulerBundle\Transport\Dsn; -use Symfony\Component\Serializer\SerializerInterface; use function sprintf; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Bridge/Doctrine/Transport/Connection.php b/src/Bridge/Doctrine/Transport/Connection.php index 12602efa..2facb857 100644 --- a/src/Bridge/Doctrine/Transport/Connection.php +++ b/src/Bridge/Doctrine/Transport/Connection.php @@ -4,6 +4,8 @@ namespace SchedulerBundle\Bridge\Doctrine\Transport; +use function array_map; + use Doctrine\DBAL\Connection as DBALConnection; use Doctrine\DBAL\ParameterType; use Doctrine\DBAL\Result; @@ -11,6 +13,11 @@ use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Query\Expr; use Exception; + +use const FILTER_VALIDATE_BOOLEAN; + +use function filter_var; + use SchedulerBundle\Bridge\Doctrine\Connection\AbstractDoctrineConnection; use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\LogicException; @@ -20,15 +27,14 @@ use SchedulerBundle\Task\TaskList; use SchedulerBundle\Task\TaskListInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; + use SchedulerBundle\Transport\ConnectionInterface; -use Symfony\Component\Serializer\SerializerInterface; -use Throwable; -use function array_map; -use function filter_var; use function sprintf; -use const FILTER_VALIDATE_BOOLEAN; +use Symfony\Component\Serializer\SerializerInterface; + +use Throwable; /** * @author Guillaume Loulier @@ -49,7 +55,7 @@ public function __construct( */ public function list(): TaskListInterface { - $existingTasksCount = $this->createQueryBuilder(table: $this->configuration->get(key: 'table_name'), alias: 't') + $existingTasksCount = $this->createQueryBuilder(table: (string) $this->configuration->get(key: 'table_name'), alias: 't') ->select(select: (new Expr())->countDistinct(x: 't.id')) ; diff --git a/src/Bridge/Doctrine/Transport/DoctrineTransportFactory.php b/src/Bridge/Doctrine/Transport/DoctrineTransportFactory.php index f24c5325..b35d7d6a 100644 --- a/src/Bridge/Doctrine/Transport/DoctrineTransportFactory.php +++ b/src/Bridge/Doctrine/Transport/DoctrineTransportFactory.php @@ -13,10 +13,11 @@ use SchedulerBundle\Transport\Configuration\ConfigurationInterface; use SchedulerBundle\Transport\Dsn; use SchedulerBundle\Transport\TransportFactoryInterface; -use Symfony\Component\Serializer\SerializerInterface; use function sprintf; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Bridge/Redis/Transport/Connection.php b/src/Bridge/Redis/Transport/Connection.php index 979c6344..ea78fc49 100644 --- a/src/Bridge/Redis/Transport/Connection.php +++ b/src/Bridge/Redis/Transport/Connection.php @@ -4,6 +4,8 @@ namespace SchedulerBundle\Bridge\Redis\Transport; +use function array_map; + use Redis; use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\TransportException; @@ -12,12 +14,12 @@ use SchedulerBundle\Task\TaskListInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; use SchedulerBundle\Transport\ConnectionInterface; -use Symfony\Component\Serializer\SerializerInterface; -use Throwable; -use function array_map; use function sprintf; +use Symfony\Component\Serializer\SerializerInterface; +use Throwable; + /** * @author Guillaume Loulier */ diff --git a/src/Bridge/Redis/Transport/RedisTransportFactory.php b/src/Bridge/Redis/Transport/RedisTransportFactory.php index 771f776c..161d4884 100644 --- a/src/Bridge/Redis/Transport/RedisTransportFactory.php +++ b/src/Bridge/Redis/Transport/RedisTransportFactory.php @@ -4,17 +4,19 @@ namespace SchedulerBundle\Bridge\Redis\Transport; +use function class_exists; +use function phpversion; + use Redis; use SchedulerBundle\Exception\LogicException; use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestratorInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; use SchedulerBundle\Transport\Dsn; + use SchedulerBundle\Transport\TransportFactoryInterface; use Symfony\Component\Serializer\SerializerInterface; -use function class_exists; -use function phpversion; use function version_compare; /** diff --git a/src/Command/ConsumeTasksCommand.php b/src/Command/ConsumeTasksCommand.php index e9c5f736..e2054705 100644 --- a/src/Command/ConsumeTasksCommand.php +++ b/src/Command/ConsumeTasksCommand.php @@ -4,35 +4,40 @@ namespace SchedulerBundle\Command; +use function array_pop; + use DateTimeImmutable; + +use function implode; +use function in_array; + use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; +use SchedulerBundle\Event\TaskExecutedEvent; use SchedulerBundle\Event\WorkerSleepingEvent; +use SchedulerBundle\EventListener\StopWorkerOnFailureLimitSubscriber; +use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; +use SchedulerBundle\EventListener\StopWorkerOnTimeLimitSubscriber; +use SchedulerBundle\SchedulerInterface; +use SchedulerBundle\Task\Output; use SchedulerBundle\Task\ProbeTask; use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Worker\WorkerConfiguration; +use SchedulerBundle\Worker\WorkerInterface; + +use function sprintf; + use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\Helper; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; + use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -use SchedulerBundle\Event\TaskExecutedEvent; -use SchedulerBundle\EventListener\StopWorkerOnFailureLimitSubscriber; -use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; -use SchedulerBundle\EventListener\StopWorkerOnTimeLimitSubscriber; -use SchedulerBundle\SchedulerInterface; -use SchedulerBundle\Task\Output; -use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Throwable; -use function array_pop; -use function implode; -use function in_array; -use function sprintf; - /** * @author Guillaume Loulier */ @@ -123,7 +128,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int } if (false === $force) { - $nonPausedTasks = $dueTasks->filter(static fn (TaskInterface $task): bool => $task->getState() !== TaskInterface::PAUSED); + $nonPausedTasks = $dueTasks->filter(static fn (TaskInterface $task): bool => TaskInterface::PAUSED !== $task->getState()); if (0 === $nonPausedTasks->count()) { $symfonyStyle->warning([ 'Each tasks has already been executed for the current minute', diff --git a/src/Command/DebugConfigurationCommand.php b/src/Command/DebugConfigurationCommand.php index 277900f4..7ebe42d8 100644 --- a/src/Command/DebugConfigurationCommand.php +++ b/src/Command/DebugConfigurationCommand.php @@ -5,14 +5,16 @@ namespace SchedulerBundle\Command; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; + +use function sprintf; + use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Style\SymfonyStyle; -use function sprintf; +use Symfony\Component\Console\Style\SymfonyStyle; /** * @author Guillaume Loulier diff --git a/src/Command/DebugMiddlewareCommand.php b/src/Command/DebugMiddlewareCommand.php index beef578c..166da908 100644 --- a/src/Command/DebugMiddlewareCommand.php +++ b/src/Command/DebugMiddlewareCommand.php @@ -4,6 +4,9 @@ namespace SchedulerBundle\Command; +use function array_map; +use function count; + use ReflectionClass; use SchedulerBundle\Middleware\OrderedMiddlewareInterface; use SchedulerBundle\Middleware\PostExecutionMiddlewareInterface; @@ -13,17 +16,17 @@ use SchedulerBundle\Middleware\RequiredMiddlewareInterface; use SchedulerBundle\Middleware\SchedulerMiddlewareStackInterface; use SchedulerBundle\Middleware\WorkerMiddlewareStackInterface; + +use function sprintf; + use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\Table; + use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -use function array_map; -use function count; -use function sprintf; - /** * @author Guillaume Loulier */ diff --git a/src/Command/DebugProbeCommand.php b/src/Command/DebugProbeCommand.php index c5d38964..4c1574f1 100644 --- a/src/Command/DebugProbeCommand.php +++ b/src/Command/DebugProbeCommand.php @@ -10,15 +10,17 @@ use SchedulerBundle\SchedulerInterface; use SchedulerBundle\Task\ProbeTask; use SchedulerBundle\Task\TaskInterface; + +use function sprintf; + use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Style\SymfonyStyle; -use function sprintf; +use Symfony\Component\Console\Style\SymfonyStyle; /** * @author Guillaume Loulier diff --git a/src/Command/ExecuteExternalProbeCommand.php b/src/Command/ExecuteExternalProbeCommand.php index 9871af28..c8cf59d6 100644 --- a/src/Command/ExecuteExternalProbeCommand.php +++ b/src/Command/ExecuteExternalProbeCommand.php @@ -9,15 +9,17 @@ use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Worker\WorkerConfiguration; use SchedulerBundle\Worker\WorkerInterface; + +use function sprintf; + use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -use Throwable; -use function sprintf; +use Throwable; /** * @author Guillaume Loulier diff --git a/src/Command/ExecuteTaskCommand.php b/src/Command/ExecuteTaskCommand.php index 9f54e0a5..53f66d59 100644 --- a/src/Command/ExecuteTaskCommand.php +++ b/src/Command/ExecuteTaskCommand.php @@ -4,6 +4,15 @@ namespace SchedulerBundle\Command; +use function array_map; +use function array_merge; +use function array_unique; +use function array_values; +use function array_walk; +use function count; +use function implode; +use function in_array; + use Psr\EventDispatcher\EventDispatcherInterface; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; @@ -12,7 +21,11 @@ use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Worker\WorkerConfiguration; use SchedulerBundle\Worker\WorkerInterface; + +use function sprintf; + use Symfony\Component\Console\Attribute\AsCommand; + use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Completion\CompletionInput; use Symfony\Component\Console\Completion\CompletionSuggestions; @@ -23,16 +36,6 @@ use Symfony\Component\Console\Style\SymfonyStyle; use Throwable; -use function array_map; -use function array_merge; -use function array_values; -use function array_walk; -use function array_unique; -use function count; -use function implode; -use function in_array; -use function sprintf; - /** * @author Guillaume Loulier */ diff --git a/src/Command/ListFailedTasksCommand.php b/src/Command/ListFailedTasksCommand.php index 7afffdf7..e702b764 100644 --- a/src/Command/ListFailedTasksCommand.php +++ b/src/Command/ListFailedTasksCommand.php @@ -4,19 +4,23 @@ namespace SchedulerBundle\Command; +use function count; + +use const DATE_ATOM; + use SchedulerBundle\Task\FailedTask; +use SchedulerBundle\Worker\WorkerInterface; + +use function sprintf; + use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\Table; + use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Style\SymfonyStyle; -use SchedulerBundle\Worker\WorkerInterface; - -use function count; -use function sprintf; -use const DATE_ATOM; +use Symfony\Component\Console\Style\SymfonyStyle; /** * @author Guillaume Loulier diff --git a/src/Command/ListTasksCommand.php b/src/Command/ListTasksCommand.php index 57aa63cd..5997be82 100644 --- a/src/Command/ListTasksCommand.php +++ b/src/Command/ListTasksCommand.php @@ -4,8 +4,22 @@ namespace SchedulerBundle\Command; +use function array_unique; +use function array_walk; + use Cron\CronExpression; + +use const DATE_ATOM; + +use function implode; + +use ReflectionClass; +use SchedulerBundle\SchedulerInterface; use SchedulerBundle\Task\ChainedTask; +use SchedulerBundle\Task\TaskInterface; + +use function sprintf; + use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Completion\CompletionInput; @@ -13,21 +27,13 @@ use Symfony\Component\Console\Completion\Suggestion; use Symfony\Component\Console\Helper\Helper; use Symfony\Component\Console\Helper\Table; + use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -use SchedulerBundle\SchedulerInterface; -use SchedulerBundle\Task\TaskInterface; -use ReflectionClass; -use Throwable; -use function array_unique; -use function array_walk; -use function implode; -use function sprintf; - -use const DATE_ATOM; +use Throwable; /** * @author Guillaume Loulier diff --git a/src/Command/RebootSchedulerCommand.php b/src/Command/RebootSchedulerCommand.php index c31b28f6..c556408c 100644 --- a/src/Command/RebootSchedulerCommand.php +++ b/src/Command/RebootSchedulerCommand.php @@ -4,9 +4,16 @@ namespace SchedulerBundle\Command; +use function implode; + use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; +use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; +use SchedulerBundle\Expression\Expression; +use SchedulerBundle\SchedulerInterface; +use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Worker\WorkerConfiguration; +use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\Table; @@ -14,15 +21,9 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; -use SchedulerBundle\Expression\Expression; -use SchedulerBundle\SchedulerInterface; -use SchedulerBundle\Task\TaskInterface; -use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Throwable; -use function implode; +use Throwable; /** * @author Guillaume Loulier diff --git a/src/Command/RemoveFailedTaskCommand.php b/src/Command/RemoveFailedTaskCommand.php index 00d970cf..44e4f7c7 100644 --- a/src/Command/RemoveFailedTaskCommand.php +++ b/src/Command/RemoveFailedTaskCommand.php @@ -4,8 +4,17 @@ namespace SchedulerBundle\Command; +use const ENT_QUOTES; + +use function htmlspecialchars; + use SchedulerBundle\Exception\InvalidArgumentException; +use SchedulerBundle\SchedulerInterface; use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\Worker\WorkerInterface; + +use function sprintf; + use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Completion\CompletionInput; @@ -14,17 +23,11 @@ use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; + use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -use SchedulerBundle\SchedulerInterface; -use SchedulerBundle\Worker\WorkerInterface; -use Throwable; -use function filter_var; -use function is_string; -use function htmlspecialchars; -use function sprintf; -use const ENT_QUOTES; +use Throwable; /** * @author Guillaume Loulier diff --git a/src/Command/RetryFailedTaskCommand.php b/src/Command/RetryFailedTaskCommand.php index b8f7839b..a3bdb399 100644 --- a/src/Command/RetryFailedTaskCommand.php +++ b/src/Command/RetryFailedTaskCommand.php @@ -6,9 +6,14 @@ use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; +use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Worker\WorkerConfiguration; +use SchedulerBundle\Worker\WorkerInterface; + +use function sprintf; + use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Completion\CompletionInput; @@ -19,12 +24,9 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; -use SchedulerBundle\Worker\WorkerInterface; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; -use Throwable; -use function sprintf; +use Throwable; /** * @author Guillaume Loulier diff --git a/src/Command/StopWorkerCommand.php b/src/Command/StopWorkerCommand.php index b0fb6a42..940ec235 100644 --- a/src/Command/StopWorkerCommand.php +++ b/src/Command/StopWorkerCommand.php @@ -4,6 +4,8 @@ namespace SchedulerBundle\Command; +use function microtime; + use Psr\Cache\CacheItemPoolInterface; use SchedulerBundle\EventListener\StopWorkerOnNextTaskSubscriber; use Symfony\Component\Console\Attribute\AsCommand; @@ -11,9 +13,8 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -use Throwable; -use function microtime; +use Throwable; /** * @author Guillaume Loulier diff --git a/src/DataCollector/SchedulerDataCollector.php b/src/DataCollector/SchedulerDataCollector.php index 04643cab..5a767295 100644 --- a/src/DataCollector/SchedulerDataCollector.php +++ b/src/DataCollector/SchedulerDataCollector.php @@ -4,18 +4,19 @@ namespace SchedulerBundle\DataCollector; +use function array_key_exists; +use function is_array; + +use SchedulerBundle\Event\TaskEventList; +use SchedulerBundle\EventListener\TaskLoggerSubscriber; use SchedulerBundle\Probe\ProbeInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\DataCollector\DataCollector; + use Symfony\Component\HttpKernel\DataCollector\LateDataCollectorInterface; -use SchedulerBundle\Event\TaskEventList; -use SchedulerBundle\EventListener\TaskLoggerSubscriber; use Throwable; -use function array_key_exists; -use function is_array; - /** * @author Guillaume Loulier */ diff --git a/src/DependencyInjection/SchedulerBundleConfiguration.php b/src/DependencyInjection/SchedulerBundleConfiguration.php index b704d343..08b6ac6d 100644 --- a/src/DependencyInjection/SchedulerBundleConfiguration.php +++ b/src/DependencyInjection/SchedulerBundleConfiguration.php @@ -4,13 +4,10 @@ namespace SchedulerBundle\DependencyInjection; -use Symfony\Component\Config\Definition\Builder\TreeBuilder; -use Symfony\Component\Config\Definition\ConfigurationInterface; -use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException; - use function array_combine; -use function array_key_exists; use function array_filter; +use function array_key_exists; + use function array_keys; use function array_map; use function array_merge; @@ -19,6 +16,10 @@ use function count; use function sprintf; +use Symfony\Component\Config\Definition\Builder\TreeBuilder; +use Symfony\Component\Config\Definition\ConfigurationInterface; +use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException; + /** * @author Guillaume Loulier */ diff --git a/src/DependencyInjection/SchedulerBundleExtension.php b/src/DependencyInjection/SchedulerBundleExtension.php index ac24190e..92476c74 100644 --- a/src/DependencyInjection/SchedulerBundleExtension.php +++ b/src/DependencyInjection/SchedulerBundleExtension.php @@ -4,6 +4,11 @@ namespace SchedulerBundle\DependencyInjection; +use function array_key_exists; +use function array_merge; +use function class_exists; +use function interface_exists; + use Psr\EventDispatcher\EventDispatcherInterface; use Psr\Log\LoggerInterface; use Redis; @@ -48,13 +53,15 @@ use SchedulerBundle\Messenger\TaskToYieldMessageHandler; use SchedulerBundle\Middleware\FiberAwareSchedulerMiddlewareStack; use SchedulerBundle\Middleware\FiberAwareWorkerMiddlewareStack; +use SchedulerBundle\Middleware\MaxExecutionMiddleware; use SchedulerBundle\Middleware\MiddlewareRegistry; use SchedulerBundle\Middleware\MiddlewareRegistryInterface; use SchedulerBundle\Middleware\MiddlewareStackInterface; use SchedulerBundle\Middleware\NotifierMiddleware; +use SchedulerBundle\Middleware\PostExecutionMiddlewareInterface; use SchedulerBundle\Middleware\PostSchedulingMiddlewareInterface; +use SchedulerBundle\Middleware\PreExecutionMiddlewareInterface; use SchedulerBundle\Middleware\PreSchedulingMiddlewareInterface; -use SchedulerBundle\Middleware\MaxExecutionMiddleware; use SchedulerBundle\Middleware\ProbeTaskMiddleware; use SchedulerBundle\Middleware\SchedulerMiddlewareStack; use SchedulerBundle\Middleware\SchedulerMiddlewareStackInterface; @@ -64,8 +71,6 @@ use SchedulerBundle\Middleware\TaskLockBagMiddleware; use SchedulerBundle\Middleware\TaskUpdateMiddleware; use SchedulerBundle\Middleware\WorkerMiddlewareStack; -use SchedulerBundle\Middleware\PostExecutionMiddlewareInterface; -use SchedulerBundle\Middleware\PreExecutionMiddlewareInterface; use SchedulerBundle\Middleware\WorkerMiddlewareStackInterface; use SchedulerBundle\Pool\SchedulerPool; use SchedulerBundle\Pool\SchedulerPoolInterface; @@ -119,8 +124,8 @@ use SchedulerBundle\Transport\Configuration\ConfigurationFactory; use SchedulerBundle\Transport\Configuration\ConfigurationFactoryInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface as TransportConfigurationInterface; -use SchedulerBundle\Transport\Configuration\FiberConfigurationFactory; use SchedulerBundle\Transport\Configuration\FailOverConfigurationFactory; +use SchedulerBundle\Transport\Configuration\FiberConfigurationFactory; use SchedulerBundle\Transport\Configuration\InMemoryConfigurationFactory; use SchedulerBundle\Transport\Configuration\LazyConfigurationFactory; use SchedulerBundle\Transport\Configuration\LongTailConfigurationFactory; @@ -144,6 +149,9 @@ use SchedulerBundle\Worker\WorkerInterface; use SchedulerBundle\Worker\WorkerRegistry; use SchedulerBundle\Worker\WorkerRegistryInterface; + +use function sprintf; + use Symfony\Bundle\FrameworkBundle\Console\Application; use Symfony\Component\Config\Definition\ConfigurationInterface; use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument; @@ -153,23 +161,18 @@ use Symfony\Component\DependencyInjection\Extension\Extension; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\HttpKernel\KernelInterface; -use Symfony\Component\Mercure\Hub; -use Symfony\Component\Mercure\Jwt\StaticTokenProvider; use Symfony\Component\Lock\LockFactory; use Symfony\Component\Lock\PersistingStoreInterface; use Symfony\Component\Lock\Store\StoreFactory; +use Symfony\Component\Mercure\Hub; +use Symfony\Component\Mercure\Jwt\StaticTokenProvider; + use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Notifier\NotifierInterface; use Symfony\Component\Serializer\SerializerInterface; use Symfony\Component\Stopwatch\Stopwatch; use Symfony\Contracts\HttpClient\HttpClientInterface; -use function array_key_exists; -use function array_merge; -use function class_exists; -use function interface_exists; -use function sprintf; - /** * @author Guillaume Loulier */ diff --git a/src/DependencyInjection/SchedulerPass.php b/src/DependencyInjection/SchedulerPass.php index a25e59a3..9d4d6daa 100644 --- a/src/DependencyInjection/SchedulerPass.php +++ b/src/DependencyInjection/SchedulerPass.php @@ -4,13 +4,14 @@ namespace SchedulerBundle\DependencyInjection; +use function array_keys; + use SchedulerBundle\SchedulerInterface; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\DependencyInjection\Reference; -use function array_keys; +use Symfony\Component\DependencyInjection\Reference; /** * @author Guillaume Loulier diff --git a/src/Event/TaskEventList.php b/src/Event/TaskEventList.php index b2a83f73..5b710809 100644 --- a/src/Event/TaskEventList.php +++ b/src/Event/TaskEventList.php @@ -4,12 +4,12 @@ namespace SchedulerBundle\Event; -use Countable; -use SchedulerBundle\Task\ProbeTask; - use function array_filter; use function count; +use Countable; +use SchedulerBundle\Task\ProbeTask; + /** * @author Guillaume Loulier */ diff --git a/src/EventListener/MercureEventSubscriber.php b/src/EventListener/MercureEventSubscriber.php index caa9847f..6dd76552 100644 --- a/src/EventListener/MercureEventSubscriber.php +++ b/src/EventListener/MercureEventSubscriber.php @@ -5,6 +5,11 @@ namespace SchedulerBundle\EventListener; use DateTimeImmutable; + +use function json_encode; + +use const JSON_THROW_ON_ERROR; + use JsonException; use SchedulerBundle\Event\TaskExecutedEvent; use SchedulerBundle\Event\TaskFailedEvent; @@ -17,12 +22,10 @@ use SchedulerBundle\Event\WorkerStoppedEvent; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Mercure\HubInterface; -use Symfony\Component\Mercure\Update; -use Symfony\Component\Serializer\SerializerInterface; -use function json_encode; +use Symfony\Component\Mercure\Update; -use const JSON_THROW_ON_ERROR; +use Symfony\Component\Serializer\SerializerInterface; /** * @author Guillaume Loulier diff --git a/src/EventListener/ProbeStateSubscriber.php b/src/EventListener/ProbeStateSubscriber.php index d2804560..0a424b04 100644 --- a/src/EventListener/ProbeStateSubscriber.php +++ b/src/EventListener/ProbeStateSubscriber.php @@ -4,6 +4,8 @@ namespace SchedulerBundle\EventListener; +use function rawurldecode; + use SchedulerBundle\Probe\ProbeInterface; use SchedulerBundle\SchedulerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -11,9 +13,8 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; -use Throwable; -use function rawurldecode; +use Throwable; /** * @author Guillaume Loulier diff --git a/src/EventListener/StopWorkerOnFailureLimitSubscriber.php b/src/EventListener/StopWorkerOnFailureLimitSubscriber.php index c63dbd5f..132ea3da 100644 --- a/src/EventListener/StopWorkerOnFailureLimitSubscriber.php +++ b/src/EventListener/StopWorkerOnFailureLimitSubscriber.php @@ -6,13 +6,14 @@ use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; -use SchedulerBundle\Exception\InvalidArgumentException; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; use SchedulerBundle\Event\TaskFailedEvent; use SchedulerBundle\Event\WorkerRunningEvent; +use SchedulerBundle\Exception\InvalidArgumentException; use function sprintf; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + /** * @author Guillaume Loulier */ diff --git a/src/EventListener/StopWorkerOnNextTaskSubscriber.php b/src/EventListener/StopWorkerOnNextTaskSubscriber.php index 217cfec7..77835362 100644 --- a/src/EventListener/StopWorkerOnNextTaskSubscriber.php +++ b/src/EventListener/StopWorkerOnNextTaskSubscriber.php @@ -4,14 +4,15 @@ namespace SchedulerBundle\EventListener; +use function microtime; + use Psr\Cache\CacheItemPoolInterface; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; use SchedulerBundle\Event\WorkerRunningEvent; use SchedulerBundle\Event\WorkerStartedEvent; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use function microtime; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * @author Guillaume Loulier diff --git a/src/EventListener/StopWorkerOnSignalSubscriber.php b/src/EventListener/StopWorkerOnSignalSubscriber.php index 125b88de..f5e91716 100644 --- a/src/EventListener/StopWorkerOnSignalSubscriber.php +++ b/src/EventListener/StopWorkerOnSignalSubscriber.php @@ -4,25 +4,29 @@ namespace SchedulerBundle\EventListener; +use function function_exists; +use function pcntl_signal; + use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; use SchedulerBundle\Event\TaskExecutingEvent; use SchedulerBundle\Event\WorkerEventInterface; -use SchedulerBundle\Event\WorkerSleepingEvent; -use SchedulerBundle\Task\TaskInterface; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; use SchedulerBundle\Event\WorkerRunningEvent; +use SchedulerBundle\Event\WorkerSleepingEvent; use SchedulerBundle\Event\WorkerStartedEvent; -use function function_exists; -use function pcntl_signal; -use function sprintf; +use SchedulerBundle\Task\TaskInterface; use const SIGHUP; use const SIGINT; + use const SIGQUIT; use const SIGTERM; +use function sprintf; + +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + /** * @author Guillaume Loulier */ diff --git a/src/EventListener/StopWorkerOnTaskLimitSubscriber.php b/src/EventListener/StopWorkerOnTaskLimitSubscriber.php index 9eaa3415..9d2fdda6 100644 --- a/src/EventListener/StopWorkerOnTaskLimitSubscriber.php +++ b/src/EventListener/StopWorkerOnTaskLimitSubscriber.php @@ -6,8 +6,8 @@ use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; use SchedulerBundle\Event\WorkerRunningEvent; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * @author Guillaume Loulier diff --git a/src/EventListener/StopWorkerOnTimeLimitSubscriber.php b/src/EventListener/StopWorkerOnTimeLimitSubscriber.php index 288415be..89fefb2c 100644 --- a/src/EventListener/StopWorkerOnTimeLimitSubscriber.php +++ b/src/EventListener/StopWorkerOnTimeLimitSubscriber.php @@ -4,16 +4,18 @@ namespace SchedulerBundle\EventListener; +use function microtime; + use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; use SchedulerBundle\Event\WorkerRunningEvent; use SchedulerBundle\Event\WorkerStartedEvent; use SchedulerBundle\Task\TaskInterface; -use function microtime; use function sprintf; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + /** * @author Guillaume Loulier */ diff --git a/src/EventListener/TaskLoggerSubscriber.php b/src/EventListener/TaskLoggerSubscriber.php index ab5bbc75..d42aa02f 100644 --- a/src/EventListener/TaskLoggerSubscriber.php +++ b/src/EventListener/TaskLoggerSubscriber.php @@ -4,14 +4,14 @@ namespace SchedulerBundle\EventListener; -use SchedulerBundle\Test\Constraint\TaskQueued; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; use SchedulerBundle\Event\TaskEventInterface; use SchedulerBundle\Event\TaskEventList; use SchedulerBundle\Event\TaskExecutedEvent; use SchedulerBundle\Event\TaskFailedEvent; use SchedulerBundle\Event\TaskScheduledEvent; use SchedulerBundle\Event\TaskUnscheduledEvent; +use SchedulerBundle\Test\Constraint\TaskQueued; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * @author Guillaume Loulier diff --git a/src/EventListener/TaskSubscriber.php b/src/EventListener/TaskSubscriber.php index 356525c6..cce0d896 100644 --- a/src/EventListener/TaskSubscriber.php +++ b/src/EventListener/TaskSubscriber.php @@ -4,10 +4,18 @@ namespace SchedulerBundle\EventListener; +use function array_key_exists; + use InvalidArgumentException; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; + +use function rawurldecode; + +use SchedulerBundle\SchedulerInterface; +use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Worker\WorkerConfiguration; +use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\JsonResponse; @@ -15,15 +23,10 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; -use SchedulerBundle\SchedulerInterface; -use SchedulerBundle\Task\TaskInterface; -use SchedulerBundle\Worker\WorkerInterface; + use Symfony\Component\Serializer\SerializerInterface; use Throwable; -use function array_key_exists; -use function rawurldecode; - /** * @author Guillaume Loulier */ diff --git a/src/Expression/ComputedExpressionBuilder.php b/src/Expression/ComputedExpressionBuilder.php index 8cbef2ff..c8ae33fb 100644 --- a/src/Expression/ComputedExpressionBuilder.php +++ b/src/Expression/ComputedExpressionBuilder.php @@ -22,19 +22,19 @@ public function build(string $expression, string $timezone = 'UTC'): Expression $parts = explode(' ', $expression); foreach ($parts as $position => $part) { - if (0 === $position && $part === '#') { + if (0 === $position && '#' === $part) { $parts[$position] = random_int(0, 59); } - if (1 === $position && $part === '#') { + if (1 === $position && '#' === $part) { $parts[$position] = random_int(0, 23); } - if (2 === $position && $part === '#') { + if (2 === $position && '#' === $part) { $parts[$position] = random_int(1, 31); } - if (3 === $position && $part === '#') { + if (3 === $position && '#' === $part) { $parts[$position] = random_int(1, 12); } @@ -42,7 +42,7 @@ public function build(string $expression, string $timezone = 'UTC'): Expression continue; } - if ($part !== '#') { + if ('#' !== $part) { continue; } diff --git a/src/Expression/Expression.php b/src/Expression/Expression.php index 95b50a0f..cf6586ef 100644 --- a/src/Expression/Expression.php +++ b/src/Expression/Expression.php @@ -4,16 +4,19 @@ namespace SchedulerBundle\Expression; -use Stringable; -use SchedulerBundle\Exception\InvalidArgumentException; -use SchedulerBundle\Exception\InvalidExpressionException; - use function array_key_exists; use function count; use function explode; + use function implode; + +use SchedulerBundle\Exception\InvalidArgumentException; +use SchedulerBundle\Exception\InvalidExpressionException; + use function sprintf; +use Stringable; + /** * @author Guillaume Loulier */ diff --git a/src/Fiber/AbstractFiberHandler.php b/src/Fiber/AbstractFiberHandler.php index 005bd0d4..a47972e4 100644 --- a/src/Fiber/AbstractFiberHandler.php +++ b/src/Fiber/AbstractFiberHandler.php @@ -15,10 +15,11 @@ use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Task\TaskListInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use Throwable; use function sprintf; +use Throwable; + /** * @author Guillaume Loulier */ @@ -31,9 +32,16 @@ public function __construct(?LoggerInterface $logger = null) $this->logger = $logger ?? new NullLogger(); } + /** + * @param Closure $func + * + * @return TaskListInterface|LazyTaskList|TaskInterface|LazyTask|SchedulerConfiguration|ConfigurationInterface|DateTimeZone|string|float|int|bool|array|null + * + * @throws Throwable + */ protected function handleOperationViaFiber(Closure $func): TaskListInterface|LazyTaskList|TaskInterface|LazyTask|SchedulerConfiguration|ConfigurationInterface|DateTimeZone|string|float|int|bool|array|null { - $fiber = new Fiber(callback: function (Closure $operation): void { + $fiber = new Fiber(callback: static function (Closure $operation): void { $value = $operation(); Fiber::suspend(value: $value); diff --git a/src/HttpScheduler.php b/src/HttpScheduler.php index d54b87bc..6a986c78 100644 --- a/src/HttpScheduler.php +++ b/src/HttpScheduler.php @@ -14,11 +14,13 @@ use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Task\TaskList; use SchedulerBundle\Task\TaskListInterface; -use Symfony\Component\Serializer\SerializerInterface; -use Symfony\Contracts\HttpClient\HttpClientInterface; use function sprintf; +use Symfony\Component\Serializer\SerializerInterface; + +use Symfony\Contracts\HttpClient\HttpClientInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Messenger/TaskToExecuteMessageHandler.php b/src/Messenger/TaskToExecuteMessageHandler.php index 225e1843..7cdb97cf 100644 --- a/src/Messenger/TaskToExecuteMessageHandler.php +++ b/src/Messenger/TaskToExecuteMessageHandler.php @@ -11,11 +11,12 @@ use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; use SchedulerBundle\Worker\WorkerConfiguration; -use Symfony\Component\Messenger\Handler\MessageHandlerInterface; use SchedulerBundle\Worker\WorkerInterface; use function sprintf; +use Symfony\Component\Messenger\Handler\MessageHandlerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Middleware/AbstractMiddlewareStack.php b/src/Middleware/AbstractMiddlewareStack.php index d888b038..4e62a0bc 100644 --- a/src/Middleware/AbstractMiddlewareStack.php +++ b/src/Middleware/AbstractMiddlewareStack.php @@ -4,13 +4,14 @@ namespace SchedulerBundle\Middleware; +use function array_replace; +use function array_values; + use Closure; + use SplObjectStorage; use Throwable; -use function array_replace; -use function array_values; - /** * @author Guillaume Loulier */ diff --git a/src/Middleware/MaxExecutionMiddleware.php b/src/Middleware/MaxExecutionMiddleware.php index e0ac3b8f..f7c5584e 100644 --- a/src/Middleware/MaxExecutionMiddleware.php +++ b/src/Middleware/MaxExecutionMiddleware.php @@ -9,11 +9,13 @@ use SchedulerBundle\Exception\MiddlewareException; use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Worker\WorkerInterface; + +use function sprintf; + use Symfony\Component\RateLimiter\Exception\RateLimitExceededException; use Symfony\Component\RateLimiter\Exception\ReserveNotSupportedException; -use Symfony\Component\RateLimiter\RateLimiterFactory; -use function sprintf; +use Symfony\Component\RateLimiter\RateLimiterFactory; /** * @author Guillaume Loulier diff --git a/src/Middleware/MiddlewareRegistry.php b/src/Middleware/MiddlewareRegistry.php index b33dcbdd..12a268f4 100644 --- a/src/Middleware/MiddlewareRegistry.php +++ b/src/Middleware/MiddlewareRegistry.php @@ -4,17 +4,20 @@ namespace SchedulerBundle\Middleware; +use function array_filter; + +use const ARRAY_FILTER_USE_BOTH; + +use function array_walk; + use ArrayIterator; use Closure; -use function array_filter; -use function array_walk; use function count; use function is_array; use function iterator_to_array; -use function uasort; -use const ARRAY_FILTER_USE_BOTH; +use function uasort; /** * @author Guillaume Loulier diff --git a/src/Middleware/MiddlewareRegistryInterface.php b/src/Middleware/MiddlewareRegistryInterface.php index f09890bc..0a202e87 100644 --- a/src/Middleware/MiddlewareRegistryInterface.php +++ b/src/Middleware/MiddlewareRegistryInterface.php @@ -4,14 +4,15 @@ namespace SchedulerBundle\Middleware; +use const ARRAY_FILTER_USE_BOTH; + use Closure; use Countable; + use IteratorAggregate; use function uasort; -use const ARRAY_FILTER_USE_BOTH; - /** * @author Guillaume Loulier * diff --git a/src/Middleware/SchedulerMiddlewareStack.php b/src/Middleware/SchedulerMiddlewareStack.php index 21f3bc6d..23ac460b 100644 --- a/src/Middleware/SchedulerMiddlewareStack.php +++ b/src/Middleware/SchedulerMiddlewareStack.php @@ -4,10 +4,11 @@ namespace SchedulerBundle\Middleware; +use function array_unique; + use SchedulerBundle\SchedulerInterface; -use SchedulerBundle\Task\TaskInterface; -use function array_unique; +use SchedulerBundle\Task\TaskInterface; use const SORT_REGULAR; diff --git a/src/Middleware/SingleRunTaskMiddleware.php b/src/Middleware/SingleRunTaskMiddleware.php index 805202e2..401df5a2 100644 --- a/src/Middleware/SingleRunTaskMiddleware.php +++ b/src/Middleware/SingleRunTaskMiddleware.php @@ -4,13 +4,15 @@ namespace SchedulerBundle\Middleware; +use function in_array; + use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Transport\TransportInterface; + use SchedulerBundle\Worker\WorkerInterface; -use function in_array; use function sprintf; /** diff --git a/src/Middleware/TaskCallbackMiddleware.php b/src/Middleware/TaskCallbackMiddleware.php index 5dcb0392..3e9d1ebf 100644 --- a/src/Middleware/TaskCallbackMiddleware.php +++ b/src/Middleware/TaskCallbackMiddleware.php @@ -4,13 +4,15 @@ namespace SchedulerBundle\Middleware; +use function call_user_func; +use function is_callable; + use SchedulerBundle\Exception\MiddlewareException; use SchedulerBundle\SchedulerInterface; + use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Worker\WorkerInterface; -use function call_user_func; -use function is_callable; use function sprintf; /** diff --git a/src/Middleware/TaskLockBagMiddleware.php b/src/Middleware/TaskLockBagMiddleware.php index 88d26ab0..293c6146 100644 --- a/src/Middleware/TaskLockBagMiddleware.php +++ b/src/Middleware/TaskLockBagMiddleware.php @@ -11,11 +11,13 @@ use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\TaskBag\AccessLockBag; use SchedulerBundle\Worker\WorkerInterface; -use Symfony\Component\Lock\Key; -use Symfony\Component\Lock\LockFactory; use function sprintf; +use Symfony\Component\Lock\Key; + +use Symfony\Component\Lock\LockFactory; + /** * @author Guillaume Loulier */ diff --git a/src/Middleware/WorkerMiddlewareStack.php b/src/Middleware/WorkerMiddlewareStack.php index 4001ec37..e8e040f3 100644 --- a/src/Middleware/WorkerMiddlewareStack.php +++ b/src/Middleware/WorkerMiddlewareStack.php @@ -4,10 +4,11 @@ namespace SchedulerBundle\Middleware; +use function array_unique; + use SchedulerBundle\Task\TaskInterface; -use SchedulerBundle\Worker\WorkerInterface; -use function array_unique; +use SchedulerBundle\Worker\WorkerInterface; use const SORT_REGULAR; diff --git a/src/Pool/SchedulerPool.php b/src/Pool/SchedulerPool.php index 4b59bef6..0eb98466 100644 --- a/src/Pool/SchedulerPool.php +++ b/src/Pool/SchedulerPool.php @@ -4,10 +4,10 @@ namespace SchedulerBundle\Pool; -use SchedulerBundle\SchedulerInterface; - use function count; +use SchedulerBundle\SchedulerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Runner/CallbackTaskRunner.php b/src/Runner/CallbackTaskRunner.php index 3397f31e..545152e5 100644 --- a/src/Runner/CallbackTaskRunner.php +++ b/src/Runner/CallbackTaskRunner.php @@ -4,13 +4,15 @@ namespace SchedulerBundle\Runner; +use function call_user_func_array; + use SchedulerBundle\Task\CallbackTask; use SchedulerBundle\Task\Output; use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Worker\WorkerInterface; + use Throwable; -use function call_user_func_array; use function trim; /** diff --git a/src/Runner/CommandTaskRunner.php b/src/Runner/CommandTaskRunner.php index 79f6cde2..b212aae0 100644 --- a/src/Runner/CommandTaskRunner.php +++ b/src/Runner/CommandTaskRunner.php @@ -4,21 +4,24 @@ namespace SchedulerBundle\Runner; +use function implode; +use function is_int; + use SchedulerBundle\Exception\InvalidArgumentException; +use SchedulerBundle\Task\CommandTask; +use SchedulerBundle\Task\Output; +use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Worker\WorkerInterface; + +use function sprintf; + use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\Command; + use Symfony\Component\Console\Input\StringInput; use Symfony\Component\Console\Output\BufferedOutput; -use SchedulerBundle\Task\CommandTask; -use SchedulerBundle\Task\Output; -use SchedulerBundle\Task\TaskInterface; use Throwable; -use function implode; -use function is_int; -use function sprintf; - /** * @author Guillaume Loulier */ diff --git a/src/Runner/HttpTaskRunner.php b/src/Runner/HttpTaskRunner.php index af3ec896..edfec3b3 100644 --- a/src/Runner/HttpTaskRunner.php +++ b/src/Runner/HttpTaskRunner.php @@ -4,11 +4,11 @@ namespace SchedulerBundle\Runner; -use SchedulerBundle\Worker\WorkerInterface; -use Symfony\Component\HttpClient\HttpClient; use SchedulerBundle\Task\HttpTask; use SchedulerBundle\Task\Output; use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\Worker\WorkerInterface; +use Symfony\Component\HttpClient\HttpClient; use Symfony\Contracts\HttpClient\HttpClientInterface; use Throwable; diff --git a/src/Runner/MessengerTaskRunner.php b/src/Runner/MessengerTaskRunner.php index f0d16d29..52d23299 100644 --- a/src/Runner/MessengerTaskRunner.php +++ b/src/Runner/MessengerTaskRunner.php @@ -4,11 +4,11 @@ namespace SchedulerBundle\Runner; -use SchedulerBundle\Worker\WorkerInterface; -use Symfony\Component\Messenger\MessageBusInterface; use SchedulerBundle\Task\MessengerTask; use SchedulerBundle\Task\Output; use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\Worker\WorkerInterface; +use Symfony\Component\Messenger\MessageBusInterface; use Throwable; /** diff --git a/src/Runner/NotificationTaskRunner.php b/src/Runner/NotificationTaskRunner.php index 14d5143e..d77a55a0 100644 --- a/src/Runner/NotificationTaskRunner.php +++ b/src/Runner/NotificationTaskRunner.php @@ -4,11 +4,11 @@ namespace SchedulerBundle\Runner; -use SchedulerBundle\Worker\WorkerInterface; -use Symfony\Component\Notifier\NotifierInterface; use SchedulerBundle\Task\NotificationTask; use SchedulerBundle\Task\Output; use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\Worker\WorkerInterface; +use Symfony\Component\Notifier\NotifierInterface; use Throwable; /** diff --git a/src/Runner/ProbeTaskRunner.php b/src/Runner/ProbeTaskRunner.php index 360f2858..54dbf488 100644 --- a/src/Runner/ProbeTaskRunner.php +++ b/src/Runner/ProbeTaskRunner.php @@ -4,6 +4,8 @@ namespace SchedulerBundle\Runner; +use function array_key_exists; + use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\Task\Output; use SchedulerBundle\Task\ProbeTask; @@ -11,9 +13,8 @@ use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\HttpClient\HttpClient; use Symfony\Contracts\HttpClient\HttpClientInterface; -use Throwable; -use function array_key_exists; +use Throwable; /** * @author Guillaume Loulier diff --git a/src/Runner/RunnerRegistry.php b/src/Runner/RunnerRegistry.php index 039e84e5..1e2addb6 100644 --- a/src/Runner/RunnerRegistry.php +++ b/src/Runner/RunnerRegistry.php @@ -4,17 +4,20 @@ namespace SchedulerBundle\Runner; +use function array_filter; + use Closure; -use SchedulerBundle\Exception\InvalidArgumentException; -use SchedulerBundle\Exception\RuntimeException; -use SchedulerBundle\Task\TaskInterface; -use function array_filter; -use function current; use function count; +use function current; + use function is_array; use function iterator_to_array; +use SchedulerBundle\Exception\InvalidArgumentException; +use SchedulerBundle\Exception\RuntimeException; +use SchedulerBundle\Task\TaskInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Runner/ShellTaskRunner.php b/src/Runner/ShellTaskRunner.php index bc26b5d9..80caa359 100644 --- a/src/Runner/ShellTaskRunner.php +++ b/src/Runner/ShellTaskRunner.php @@ -4,11 +4,11 @@ namespace SchedulerBundle\Runner; -use SchedulerBundle\Worker\WorkerInterface; -use Symfony\Component\Process\Process; use SchedulerBundle\Task\Output; use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\Worker\WorkerInterface; +use Symfony\Component\Process\Process; use function trim; diff --git a/src/Scheduler.php b/src/Scheduler.php index c021e2d0..65f49a1e 100644 --- a/src/Scheduler.php +++ b/src/Scheduler.php @@ -10,9 +10,19 @@ use DateTimeImmutable; use DateTimeZone; use Exception; + +use function is_bool; +use function next; + +use SchedulerBundle\Event\SchedulerRebootedEvent; use SchedulerBundle\Event\TaskExecutingEvent; +use SchedulerBundle\Event\TaskScheduledEvent; +use SchedulerBundle\Event\TaskUnscheduledEvent; use SchedulerBundle\Exception\InvalidArgumentException; +use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\Exception\TransportException; +use SchedulerBundle\Expression\Expression; +use SchedulerBundle\Messenger\TaskToExecuteMessage; use SchedulerBundle\Messenger\TaskToPauseMessage; use SchedulerBundle\Messenger\TaskToUpdateMessage; use SchedulerBundle\Messenger\TaskToYieldMessage; @@ -20,24 +30,17 @@ use SchedulerBundle\Pool\Configuration\SchedulerConfiguration; use SchedulerBundle\Task\LazyTask; use SchedulerBundle\Task\LazyTaskList; -use SchedulerBundle\Task\TaskList; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\Messenger\MessageBusInterface; -use SchedulerBundle\Event\SchedulerRebootedEvent; -use SchedulerBundle\Event\TaskScheduledEvent; -use SchedulerBundle\Event\TaskUnscheduledEvent; -use SchedulerBundle\Exception\RuntimeException; -use SchedulerBundle\Expression\Expression; -use SchedulerBundle\Messenger\TaskToExecuteMessage; use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\Task\TaskList; use SchedulerBundle\Task\TaskListInterface; use SchedulerBundle\Transport\TransportInterface; -use Throwable; -use function is_bool; -use function next; use function sprintf; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\Messenger\MessageBusInterface; +use Throwable; + /** * @author Guillaume Loulier */ @@ -196,7 +199,7 @@ public function getDueTasks(bool $lazy = false, bool $strict = false): TaskListI { $synchronizedCurrentDate = $this->getSynchronizedCurrentDate(); - if ($synchronizedCurrentDate->format(format: 's') !== '00' && $strict) { + if ('00' !== $synchronizedCurrentDate->format(format: 's') && $strict) { return $lazy ? new LazyTaskList(sourceList: new TaskList()) : new TaskList(); } @@ -265,7 +268,7 @@ public function next(bool $lazy = false): TaskInterface|LazyTask } return $lazy - ? new LazyTask(name: $nextTask->getName(), sourceTaskClosure: Closure::bind(fn (): TaskInterface => $nextTask, $this)) + ? new LazyTask(name: $nextTask->getName(), sourceTaskClosure: Closure::bind(static fn (): TaskInterface => $nextTask, $this)) : $nextTask ; } diff --git a/src/Serializer/AccessLockBagNormalizer.php b/src/Serializer/AccessLockBagNormalizer.php index becbe2e4..0c96c7f0 100644 --- a/src/Serializer/AccessLockBagNormalizer.php +++ b/src/Serializer/AccessLockBagNormalizer.php @@ -8,14 +8,16 @@ use Psr\Log\NullLogger; use SchedulerBundle\Exception\BadMethodCallException; use SchedulerBundle\TaskBag\AccessLockBag; + +use function sprintf; + use Symfony\Component\Lock\Key; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; -use Throwable; -use function sprintf; +use Throwable; /** * @author Guillaume Loulier diff --git a/src/Serializer/NotificationTaskBagNormalizer.php b/src/Serializer/NotificationTaskBagNormalizer.php index 597349de..82634fc0 100644 --- a/src/Serializer/NotificationTaskBagNormalizer.php +++ b/src/Serializer/NotificationTaskBagNormalizer.php @@ -4,19 +4,22 @@ namespace SchedulerBundle\Serializer; +use function array_map; +use function array_merge; + use SchedulerBundle\Exception\BadMethodCallException; use SchedulerBundle\TaskBag\NotificationTaskBag; + +use function sprintf; + use Symfony\Component\Notifier\Notification\Notification; use Symfony\Component\Notifier\Recipient\Recipient; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; + use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; -use function array_map; -use function array_merge; -use function sprintf; - /** * @author Guillaume Loulier */ diff --git a/src/Serializer/SchedulerConfigurationNormalizer.php b/src/Serializer/SchedulerConfigurationNormalizer.php index d25ea6a1..29782136 100644 --- a/src/Serializer/SchedulerConfigurationNormalizer.php +++ b/src/Serializer/SchedulerConfigurationNormalizer.php @@ -4,20 +4,23 @@ namespace SchedulerBundle\Serializer; +use function array_map; + use SchedulerBundle\Exception\BadMethodCallException; use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\Pool\Configuration\SchedulerConfiguration; use SchedulerBundle\Task\TaskInterface; + +use function sprintf; + use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; use Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; + use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; -use function array_map; -use function sprintf; - /** * @author Guillaume Loulier */ diff --git a/src/Serializer/TaskNormalizer.php b/src/Serializer/TaskNormalizer.php index a1f46dfd..ab90a67e 100644 --- a/src/Serializer/TaskNormalizer.php +++ b/src/Serializer/TaskNormalizer.php @@ -4,30 +4,42 @@ namespace SchedulerBundle\Serializer; +use function array_key_exists; +use function array_map; +use function array_merge; + use Closure; use DateInterval; use DateTimeImmutable; use DateTimeZone; + +use function is_array; +use function is_object; + use SchedulerBundle\Exception\BadMethodCallException; -use SchedulerBundle\Exception\RuntimeException; -use SchedulerBundle\Task\ChainedTask; -use SchedulerBundle\Task\TaskListInterface; -use SchedulerBundle\Task\ProbeTask; -use SchedulerBundle\TaskBag\AccessLockBag; -use SchedulerBundle\TaskBag\NotificationTaskBag; -use Symfony\Component\Notifier\Notification\Notification; -use Symfony\Component\Notifier\Recipient\Recipient; use SchedulerBundle\Exception\InvalidArgumentException; +use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\Task\CallbackTask; +use SchedulerBundle\Task\ChainedTask; use SchedulerBundle\Task\CommandTask; use SchedulerBundle\Task\HttpTask; use SchedulerBundle\Task\MessengerTask; use SchedulerBundle\Task\NotificationTask; use SchedulerBundle\Task\NullTask; +use SchedulerBundle\Task\ProbeTask; use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\Task\TaskListInterface; +use SchedulerBundle\TaskBag\AccessLockBag; +use SchedulerBundle\TaskBag\NotificationTaskBag; use SchedulerBundle\Worker\Worker; + +use function sprintf; + +use Symfony\Component\Notifier\Notification\Notification; +use Symfony\Component\Notifier\Recipient\Recipient; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; + use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer; use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; use Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer; @@ -35,13 +47,6 @@ use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; -use function array_key_exists; -use function array_map; -use function array_merge; -use function is_array; -use function is_object; -use function sprintf; - /** * @author Guillaume Loulier */ @@ -349,6 +354,6 @@ public function denormalize($data, string $type, string $format = null, array $c */ public function supportsDenormalization($data, string $type, string $format = null, array $context = []): bool { - return is_array(value: $data) && array_key_exists(key: self::NORMALIZATION_DISCRIMINATOR, array: $data) || $type === TaskInterface::class; + return is_array(value: $data) && array_key_exists(key: self::NORMALIZATION_DISCRIMINATOR, array: $data) || TaskInterface::class === $type; } } diff --git a/src/Task/AbstractTask.php b/src/Task/AbstractTask.php index 7e221c11..3482b730 100644 --- a/src/Task/AbstractTask.php +++ b/src/Task/AbstractTask.php @@ -4,30 +4,35 @@ namespace SchedulerBundle\Task; +use function array_key_exists; + use Cron\CronExpression; use DateInterval; use DateTimeImmutable; use DateTimeZone; use Exception; -use SchedulerBundle\Exception\RuntimeException; -use SchedulerBundle\Expression\Expression; -use SchedulerBundle\TaskBag\AccessLockBag; -use SchedulerBundle\TaskBag\NotificationTaskBag; -use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolver; -use SchedulerBundle\Exception\InvalidArgumentException; -use SchedulerBundle\Exception\LogicException; -use function array_key_exists; use function in_array; use function is_array; use function is_bool; use function is_float; use function is_int; use function is_string; + +use SchedulerBundle\Exception\InvalidArgumentException; + +use SchedulerBundle\Exception\LogicException; +use SchedulerBundle\Exception\RuntimeException; +use SchedulerBundle\Expression\Expression; +use SchedulerBundle\TaskBag\AccessLockBag; +use SchedulerBundle\TaskBag\NotificationTaskBag; + use function sprintf; use function strtotime; +use Symfony\Component\OptionsResolver\Options; +use Symfony\Component\OptionsResolver\OptionsResolver; + /** * @author Guillaume Loulier */ @@ -179,7 +184,7 @@ protected function defineOptions(array $options = [], array $additionalOptions = $optionsResolver->setInfo(option: 'tracked', info: 'Define if the task will be tracked during execution, this option enable the "duration" sort'); $optionsResolver->setInfo(option: 'timezone', info: 'Define the timezone used by the task, this value is set by the Scheduler and can be overridden'); - if ($additionalOptions === []) { + if ([] === $additionalOptions) { $this->options = $optionsResolver->resolve(options: $options); } diff --git a/src/Task/Builder/AbstractTaskBuilder.php b/src/Task/Builder/AbstractTaskBuilder.php index 8c11b16c..3c017f56 100644 --- a/src/Task/Builder/AbstractTaskBuilder.php +++ b/src/Task/Builder/AbstractTaskBuilder.php @@ -6,8 +6,8 @@ use DateTimeZone; use SchedulerBundle\Expression\BuilderInterface as ExpressionBuilderInterface; -use Symfony\Component\PropertyAccess\PropertyAccessorInterface; use SchedulerBundle\Task\TaskInterface; +use Symfony\Component\PropertyAccess\PropertyAccessorInterface; /** * @author Guillaume Loulier diff --git a/src/Task/Builder/BuilderInterface.php b/src/Task/Builder/BuilderInterface.php index 30f66407..f05e13b1 100644 --- a/src/Task/Builder/BuilderInterface.php +++ b/src/Task/Builder/BuilderInterface.php @@ -4,8 +4,8 @@ namespace SchedulerBundle\Task\Builder; -use Symfony\Component\PropertyAccess\PropertyAccessorInterface; use SchedulerBundle\Task\TaskInterface; +use Symfony\Component\PropertyAccess\PropertyAccessorInterface; /** * @author Guillaume Loulier diff --git a/src/Task/Builder/ChainedBuilder.php b/src/Task/Builder/ChainedBuilder.php index b1f6b687..1e41c396 100644 --- a/src/Task/Builder/ChainedBuilder.php +++ b/src/Task/Builder/ChainedBuilder.php @@ -4,13 +4,14 @@ namespace SchedulerBundle\Task\Builder; +use function array_map; + use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Expression\BuilderInterface as ExpressionBuilderInterface; use SchedulerBundle\Task\ChainedTask; use SchedulerBundle\Task\TaskInterface; -use Symfony\Component\PropertyAccess\PropertyAccessorInterface; -use function array_map; +use Symfony\Component\PropertyAccess\PropertyAccessorInterface; /** * @author Guillaume Loulier diff --git a/src/Task/Builder/CommandBuilder.php b/src/Task/Builder/CommandBuilder.php index 6f1b98a9..f4d8a8ee 100644 --- a/src/Task/Builder/CommandBuilder.php +++ b/src/Task/Builder/CommandBuilder.php @@ -4,9 +4,9 @@ namespace SchedulerBundle\Task\Builder; +use SchedulerBundle\Task\CommandTask; use SchedulerBundle\Task\TaskInterface; use Symfony\Component\PropertyAccess\PropertyAccessorInterface; -use SchedulerBundle\Task\CommandTask; /** * @author Guillaume Loulier diff --git a/src/Task/Builder/HttpBuilder.php b/src/Task/Builder/HttpBuilder.php index 6d1cacd2..92dcace2 100644 --- a/src/Task/Builder/HttpBuilder.php +++ b/src/Task/Builder/HttpBuilder.php @@ -4,9 +4,9 @@ namespace SchedulerBundle\Task\Builder; +use SchedulerBundle\Task\HttpTask; use SchedulerBundle\Task\TaskInterface; use Symfony\Component\PropertyAccess\PropertyAccessorInterface; -use SchedulerBundle\Task\HttpTask; /** * @author Guillaume Loulier diff --git a/src/Task/Builder/NullBuilder.php b/src/Task/Builder/NullBuilder.php index 54aa7146..c5a605f7 100644 --- a/src/Task/Builder/NullBuilder.php +++ b/src/Task/Builder/NullBuilder.php @@ -4,9 +4,9 @@ namespace SchedulerBundle\Task\Builder; +use SchedulerBundle\Task\NullTask; use SchedulerBundle\Task\TaskInterface; use Symfony\Component\PropertyAccess\PropertyAccessorInterface; -use SchedulerBundle\Task\NullTask; /** * @author Guillaume Loulier diff --git a/src/Task/Builder/ShellBuilder.php b/src/Task/Builder/ShellBuilder.php index 85955fa6..f28e1cdf 100644 --- a/src/Task/Builder/ShellBuilder.php +++ b/src/Task/Builder/ShellBuilder.php @@ -4,9 +4,9 @@ namespace SchedulerBundle\Task\Builder; +use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Task\TaskInterface; use Symfony\Component\PropertyAccess\PropertyAccessorInterface; -use SchedulerBundle\Task\ShellTask; /** * @author Guillaume Loulier diff --git a/src/Task/CommandTask.php b/src/Task/CommandTask.php index 4a5c7087..1c80f893 100644 --- a/src/Task/CommandTask.php +++ b/src/Task/CommandTask.php @@ -4,12 +4,12 @@ namespace SchedulerBundle\Task; -use SchedulerBundle\Exception\InvalidArgumentException; -use SchedulerBundle\Exception\RuntimeException; - use function is_array; use function is_string; +use SchedulerBundle\Exception\InvalidArgumentException; +use SchedulerBundle\Exception\RuntimeException; + /** * @author Guillaume Loulier */ diff --git a/src/Task/HttpTask.php b/src/Task/HttpTask.php index 3f0f69ea..ee33b479 100644 --- a/src/Task/HttpTask.php +++ b/src/Task/HttpTask.php @@ -4,14 +4,17 @@ namespace SchedulerBundle\Task; -use SchedulerBundle\Exception\InvalidArgumentException; -use Symfony\Contracts\HttpClient\HttpClientInterface; - use function array_key_exists; use function array_walk; + use function is_array; + +use SchedulerBundle\Exception\InvalidArgumentException; + use function sprintf; +use Symfony\Contracts\HttpClient\HttpClientInterface; + /** * @author Guillaume Loulier */ @@ -89,7 +92,7 @@ private function validateClientOptions(array $clientOptions = []): void return; } - array_walk(array: $clientOptions, callback: function ($_, $key): void { + array_walk(array: $clientOptions, callback: static function ($_, $key): void { if (!array_key_exists(key: $key, array: HttpClientInterface::OPTIONS_DEFAULTS)) { throw new InvalidArgumentException(message: sprintf('The following option: "%s" is not supported', $key)); } diff --git a/src/Task/TaskBuilder.php b/src/Task/TaskBuilder.php index cce46307..6f0e6738 100644 --- a/src/Task/TaskBuilder.php +++ b/src/Task/TaskBuilder.php @@ -4,12 +4,13 @@ namespace SchedulerBundle\Task; -use SchedulerBundle\Task\Builder\BuilderInterface; -use Symfony\Component\PropertyAccess\PropertyAccessorInterface; use SchedulerBundle\Exception\InvalidArgumentException; +use SchedulerBundle\Task\Builder\BuilderInterface; use function sprintf; +use Symfony\Component\PropertyAccess\PropertyAccessorInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Task/TaskExecutionTracker.php b/src/Task/TaskExecutionTracker.php index fad7ce03..0896f8e4 100644 --- a/src/Task/TaskExecutionTracker.php +++ b/src/Task/TaskExecutionTracker.php @@ -4,11 +4,12 @@ namespace SchedulerBundle\Task; -use Symfony\Component\Stopwatch\Stopwatch; - use function memory_get_usage; + use function sprintf; +use Symfony\Component\Stopwatch\Stopwatch; + /** * @author Guillaume Loulier */ diff --git a/src/Task/TaskList.php b/src/Task/TaskList.php index 1b5efb06..55733c02 100644 --- a/src/Task/TaskList.php +++ b/src/Task/TaskList.php @@ -4,28 +4,35 @@ namespace SchedulerBundle\Task; -use ArrayIterator; -use Closure; -use SchedulerBundle\Exception\InvalidArgumentException; -use SchedulerBundle\Exception\RuntimeException; -use Throwable; -use Traversable; - use function array_chunk; use function array_filter; + +use const ARRAY_FILTER_USE_BOTH; + use function array_key_exists; use function array_key_last; +use function array_map; + use function array_values; use function array_walk; -use function array_map; -use function uasort; + +use ArrayIterator; +use Closure; + use function count; use function gettype; use function in_array; use function is_string; + +use SchedulerBundle\Exception\InvalidArgumentException; +use SchedulerBundle\Exception\RuntimeException; + use function sprintf; -use const ARRAY_FILTER_USE_BOTH; +use Throwable; +use Traversable; + +use function uasort; /** * @author Guillaume Loulier diff --git a/src/Test/Constraint/Probe/ProbeScheduledTask.php b/src/Test/Constraint/Probe/ProbeScheduledTask.php index cad3817b..68550810 100644 --- a/src/Test/Constraint/Probe/ProbeScheduledTask.php +++ b/src/Test/Constraint/Probe/ProbeScheduledTask.php @@ -8,9 +8,11 @@ use SchedulerBundle\Probe\ProbeInterface; use SchedulerBundle\SchedulerInterface; -use Throwable; + use function sprintf; +use Throwable; + /** * @author Guillaume Loulier */ diff --git a/src/Test/Constraint/Probe/ProbeState.php b/src/Test/Constraint/Probe/ProbeState.php index 1cffa316..f62f2501 100644 --- a/src/Test/Constraint/Probe/ProbeState.php +++ b/src/Test/Constraint/Probe/ProbeState.php @@ -4,10 +4,12 @@ namespace SchedulerBundle\Test\Constraint\Probe; +use function json_encode; + use PHPUnit\Framework\Constraint\Constraint; + use SchedulerBundle\Probe\ProbeInterface; -use function json_encode; use function sprintf; /** diff --git a/src/Test/Constraint/Scheduler/SchedulerDueTask.php b/src/Test/Constraint/Scheduler/SchedulerDueTask.php index 3f3ae471..9103f3e9 100644 --- a/src/Test/Constraint/Scheduler/SchedulerDueTask.php +++ b/src/Test/Constraint/Scheduler/SchedulerDueTask.php @@ -7,9 +7,10 @@ use PHPUnit\Framework\Constraint\Constraint; use SchedulerBundle\SchedulerInterface; -use Throwable; use function sprintf; +use Throwable; + /** * @author Guillaume Loulier */ diff --git a/src/Test/Constraint/TaskFailed.php b/src/Test/Constraint/TaskFailed.php index 5fac5515..ec0dad44 100644 --- a/src/Test/Constraint/TaskFailed.php +++ b/src/Test/Constraint/TaskFailed.php @@ -4,10 +4,12 @@ namespace SchedulerBundle\Test\Constraint; +use function count; + use PHPUnit\Framework\Constraint\Constraint; + use SchedulerBundle\Event\TaskEventList; -use function count; use function sprintf; /** diff --git a/src/Test/Constraint/TaskScheduled.php b/src/Test/Constraint/TaskScheduled.php index 3620e724..2c6ad697 100644 --- a/src/Test/Constraint/TaskScheduled.php +++ b/src/Test/Constraint/TaskScheduled.php @@ -4,10 +4,12 @@ namespace SchedulerBundle\Test\Constraint; +use function count; + use PHPUnit\Framework\Constraint\Constraint; + use SchedulerBundle\Event\TaskEventList; -use function count; use function sprintf; /** diff --git a/src/Test/Constraint/TaskUnscheduled.php b/src/Test/Constraint/TaskUnscheduled.php index 94936c22..5829da43 100644 --- a/src/Test/Constraint/TaskUnscheduled.php +++ b/src/Test/Constraint/TaskUnscheduled.php @@ -4,10 +4,12 @@ namespace SchedulerBundle\Test\Constraint; +use function count; + use PHPUnit\Framework\Constraint\Constraint; + use SchedulerBundle\Event\TaskEventList; -use function count; use function sprintf; /** diff --git a/src/Transport/AbstractCompoundTransportFactory.php b/src/Transport/AbstractCompoundTransportFactory.php index eeef10a0..21f68eae 100644 --- a/src/Transport/AbstractCompoundTransportFactory.php +++ b/src/Transport/AbstractCompoundTransportFactory.php @@ -4,16 +4,19 @@ namespace SchedulerBundle\Transport; +use function array_map; +use function explode; + use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\LogicException; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestratorInterface; + use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use Symfony\Component\Serializer\SerializerInterface; -use function array_map; -use function explode; use function sprintf; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/CacheTransport.php b/src/Transport/CacheTransport.php index db0d4fe6..39d2e2f2 100644 --- a/src/Transport/CacheTransport.php +++ b/src/Transport/CacheTransport.php @@ -4,7 +4,14 @@ namespace SchedulerBundle\Transport; +use function array_map; +use function array_search; + use Closure; + +use function in_array; +use function is_string; + use Psr\Cache\CacheItemPoolInterface; use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\RuntimeException; @@ -12,17 +19,15 @@ use SchedulerBundle\Task\LazyTask; use SchedulerBundle\Task\LazyTaskList; use SchedulerBundle\Task\TaskInterface; + use SchedulerBundle\Task\TaskList; use SchedulerBundle\Task\TaskListInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use Symfony\Component\Serializer\SerializerInterface; -use function array_map; -use function array_search; -use function in_array; -use function is_string; use function sprintf; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/Configuration/AbstractCompoundConfigurationFactory.php b/src/Transport/Configuration/AbstractCompoundConfigurationFactory.php index c5cf699c..e0c4b2cb 100644 --- a/src/Transport/Configuration/AbstractCompoundConfigurationFactory.php +++ b/src/Transport/Configuration/AbstractCompoundConfigurationFactory.php @@ -4,15 +4,18 @@ namespace SchedulerBundle\Transport\Configuration; +use function array_map; +use function explode; + use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\LogicException; + use SchedulerBundle\Transport\Dsn; -use Symfony\Component\Serializer\SerializerInterface; -use function array_map; -use function explode; use function sprintf; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/Configuration/AbstractConfiguration.php b/src/Transport/Configuration/AbstractConfiguration.php index 8832be66..9b8398e9 100644 --- a/src/Transport/Configuration/AbstractConfiguration.php +++ b/src/Transport/Configuration/AbstractConfiguration.php @@ -4,10 +4,10 @@ namespace SchedulerBundle\Transport\Configuration; -use Symfony\Component\OptionsResolver\OptionsResolver; - use function array_walk; +use Symfony\Component\OptionsResolver\OptionsResolver; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/Configuration/CacheConfiguration.php b/src/Transport/Configuration/CacheConfiguration.php index 9eb6bbb6..8004669f 100644 --- a/src/Transport/Configuration/CacheConfiguration.php +++ b/src/Transport/Configuration/CacheConfiguration.php @@ -4,15 +4,19 @@ namespace SchedulerBundle\Transport\Configuration; +use function array_map; +use function array_walk; + use Closure; + +use function count; + +use function in_array; + use Psr\Cache\CacheItemPoolInterface; use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\RuntimeException; -use function count; -use function array_map; -use function array_walk; -use function in_array; use function sprintf; /** diff --git a/src/Transport/Configuration/CacheConfigurationFactory.php b/src/Transport/Configuration/CacheConfigurationFactory.php index 7b285ec5..3548aa69 100644 --- a/src/Transport/Configuration/CacheConfigurationFactory.php +++ b/src/Transport/Configuration/CacheConfigurationFactory.php @@ -6,10 +6,11 @@ use Psr\Cache\CacheItemPoolInterface; use SchedulerBundle\Transport\Dsn; -use Symfony\Component\Serializer\SerializerInterface; use function str_starts_with; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/Configuration/ConfigurationFactory.php b/src/Transport/Configuration/ConfigurationFactory.php index 7a68c63a..5bd8e943 100644 --- a/src/Transport/Configuration/ConfigurationFactory.php +++ b/src/Transport/Configuration/ConfigurationFactory.php @@ -7,10 +7,11 @@ use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\Transport\Dsn; -use Symfony\Component\Serializer\SerializerInterface; use function sprintf; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/Configuration/ConfigurationRegistry.php b/src/Transport/Configuration/ConfigurationRegistry.php index 240d4909..6f6a4834 100644 --- a/src/Transport/Configuration/ConfigurationRegistry.php +++ b/src/Transport/Configuration/ConfigurationRegistry.php @@ -6,12 +6,15 @@ use ArrayIterator; use Closure; -use SchedulerBundle\Exception\RuntimeException; -use Traversable; use function is_array; use function iterator_to_array; + use function reset; + +use SchedulerBundle\Exception\RuntimeException; +use Traversable; + use function usort; /** diff --git a/src/Transport/Configuration/FailOverConfigurationFactory.php b/src/Transport/Configuration/FailOverConfigurationFactory.php index fe559735..4bca9dd8 100644 --- a/src/Transport/Configuration/FailOverConfigurationFactory.php +++ b/src/Transport/Configuration/FailOverConfigurationFactory.php @@ -5,10 +5,11 @@ namespace SchedulerBundle\Transport\Configuration; use SchedulerBundle\Transport\Dsn; -use Symfony\Component\Serializer\SerializerInterface; use function str_starts_with; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/Configuration/FiberConfigurationFactory.php b/src/Transport/Configuration/FiberConfigurationFactory.php index 857ae720..b95c30db 100644 --- a/src/Transport/Configuration/FiberConfigurationFactory.php +++ b/src/Transport/Configuration/FiberConfigurationFactory.php @@ -4,15 +4,17 @@ namespace SchedulerBundle\Transport\Configuration; +use function is_string; + use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\Transport\Dsn; -use Symfony\Component\Serializer\SerializerInterface; -use function is_string; use function sprintf; use function str_starts_with; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/Configuration/InMemoryConfiguration.php b/src/Transport/Configuration/InMemoryConfiguration.php index 45b95482..00672e2e 100644 --- a/src/Transport/Configuration/InMemoryConfiguration.php +++ b/src/Transport/Configuration/InMemoryConfiguration.php @@ -4,11 +4,13 @@ namespace SchedulerBundle\Transport\Configuration; -use Closure; - use function array_key_exists; + use function array_map; use function array_walk; + +use Closure; + use function count; /** diff --git a/src/Transport/Configuration/LazyConfigurationFactory.php b/src/Transport/Configuration/LazyConfigurationFactory.php index f03b0a5c..ddb2a3a8 100644 --- a/src/Transport/Configuration/LazyConfigurationFactory.php +++ b/src/Transport/Configuration/LazyConfigurationFactory.php @@ -4,15 +4,17 @@ namespace SchedulerBundle\Transport\Configuration; +use function is_string; + use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\Transport\Dsn; -use Symfony\Component\Serializer\SerializerInterface; -use function is_string; use function sprintf; use function str_starts_with; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/Dsn.php b/src/Transport/Dsn.php index 8769f79e..667460c4 100644 --- a/src/Transport/Dsn.php +++ b/src/Transport/Dsn.php @@ -4,13 +4,15 @@ namespace SchedulerBundle\Transport; -use SchedulerBundle\Exception\InvalidArgumentException; - use function array_merge; + use function count; use function parse_str; use function parse_url; use function preg_match; + +use SchedulerBundle\Exception\InvalidArgumentException; + use function sprintf; use function strtr; use function urldecode; diff --git a/src/Transport/FailOverTransportFactory.php b/src/Transport/FailOverTransportFactory.php index 95b055fb..41045213 100644 --- a/src/Transport/FailOverTransportFactory.php +++ b/src/Transport/FailOverTransportFactory.php @@ -6,10 +6,11 @@ use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestratorInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use Symfony\Component\Serializer\SerializerInterface; use function str_starts_with; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/FiberTransportFactory.php b/src/Transport/FiberTransportFactory.php index e2cefe07..cf44f8c8 100644 --- a/src/Transport/FiberTransportFactory.php +++ b/src/Transport/FiberTransportFactory.php @@ -9,11 +9,13 @@ use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestratorInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use Symfony\Component\Serializer\SerializerInterface; use function sprintf; + use function str_starts_with; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/FilesystemTransport.php b/src/Transport/FilesystemTransport.php index be9cbb98..d434648a 100644 --- a/src/Transport/FilesystemTransport.php +++ b/src/Transport/FilesystemTransport.php @@ -5,23 +5,26 @@ namespace SchedulerBundle\Transport; use Closure; -use SchedulerBundle\Task\LazyTask; -use SchedulerBundle\Task\LazyTaskList; -use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use Symfony\Component\Filesystem\Filesystem; -use Symfony\Component\Finder\Finder; + +use function file_get_contents; + use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\LogicException; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestratorInterface; +use SchedulerBundle\Task\LazyTask; +use SchedulerBundle\Task\LazyTaskList; use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Task\TaskList; use SchedulerBundle\Task\TaskListInterface; -use Symfony\Component\Serializer\SerializerInterface; +use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use function file_get_contents; use function sprintf; use function strtr; +use Symfony\Component\Filesystem\Filesystem; +use Symfony\Component\Finder\Finder; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/LazyTransportFactory.php b/src/Transport/LazyTransportFactory.php index 72580b28..1b9b6923 100644 --- a/src/Transport/LazyTransportFactory.php +++ b/src/Transport/LazyTransportFactory.php @@ -7,11 +7,13 @@ use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestratorInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use Symfony\Component\Serializer\SerializerInterface; use function sprintf; + use function str_starts_with; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/LongTailTransportFactory.php b/src/Transport/LongTailTransportFactory.php index e360e827..7bb8651b 100644 --- a/src/Transport/LongTailTransportFactory.php +++ b/src/Transport/LongTailTransportFactory.php @@ -6,10 +6,11 @@ use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestratorInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use Symfony\Component\Serializer\SerializerInterface; use function str_starts_with; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/TransportFactory.php b/src/Transport/TransportFactory.php index c5d787cd..7d91c846 100644 --- a/src/Transport/TransportFactory.php +++ b/src/Transport/TransportFactory.php @@ -7,10 +7,11 @@ use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestratorInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use Symfony\Component\Serializer\SerializerInterface; use function sprintf; +use Symfony\Component\Serializer\SerializerInterface; + /** * @author Guillaume Loulier */ diff --git a/src/Transport/TransportRegistry.php b/src/Transport/TransportRegistry.php index 313914dd..c7d018e8 100644 --- a/src/Transport/TransportRegistry.php +++ b/src/Transport/TransportRegistry.php @@ -6,11 +6,13 @@ use ArrayIterator; use Closure; -use SchedulerBundle\Exception\RuntimeException; -use Traversable; use function count; use function reset; + +use SchedulerBundle\Exception\RuntimeException; +use Traversable; + use function usort; /** diff --git a/src/Worker/ExecutionPolicy/ExecutionPolicyRegistry.php b/src/Worker/ExecutionPolicy/ExecutionPolicyRegistry.php index 58ae0bae..8d61979b 100644 --- a/src/Worker/ExecutionPolicy/ExecutionPolicyRegistry.php +++ b/src/Worker/ExecutionPolicy/ExecutionPolicyRegistry.php @@ -5,14 +5,16 @@ namespace SchedulerBundle\Worker\ExecutionPolicy; use Closure; -use SchedulerBundle\Exception\InvalidArgumentException; -use SchedulerBundle\Exception\RuntimeException; use function count; use function current; + use function is_array; use function iterator_to_array; +use SchedulerBundle\Exception\InvalidArgumentException; +use SchedulerBundle\Exception\RuntimeException; + /** * @author Guillaume Loulier */ diff --git a/src/Worker/Worker.php b/src/Worker/Worker.php index 5d5d3ee9..c1414db1 100644 --- a/src/Worker/Worker.php +++ b/src/Worker/Worker.php @@ -6,6 +6,9 @@ use DateTimeImmutable; use Exception; + +use function in_array; + use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; use SchedulerBundle\Event\TaskExecutedEvent; @@ -35,9 +38,8 @@ use Symfony\Component\Lock\Key; use Symfony\Component\Lock\LockFactory; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; -use Throwable; -use function in_array; +use Throwable; /** * @author Guillaume Loulier diff --git a/tests/AbstractSchedulerTestCase.php b/tests/AbstractSchedulerTestCase.php index 64b37ef4..463e7e95 100644 --- a/tests/AbstractSchedulerTestCase.php +++ b/tests/AbstractSchedulerTestCase.php @@ -94,7 +94,7 @@ public function testSchedulerCannotPreemptEmptyDueTasks(): void $scheduler = $this->getScheduler(); - $scheduler->preempt('foo', static fn (TaskInterface $task): bool => $task->getName() === 'bar'); + $scheduler->preempt('foo', static fn (TaskInterface $task): bool => 'bar' === $task->getName()); self::assertNotSame(TaskInterface::READY_TO_EXECUTE, $task->getState()); } diff --git a/tests/Bridge/Doctrine/Transport/Configuration/ConnectionIntegrationPostgresqlTest.php b/tests/Bridge/Doctrine/Transport/Configuration/ConnectionIntegrationPostgresqlTest.php index 7d131034..e60c287c 100644 --- a/tests/Bridge/Doctrine/Transport/Configuration/ConnectionIntegrationPostgresqlTest.php +++ b/tests/Bridge/Doctrine/Transport/Configuration/ConnectionIntegrationPostgresqlTest.php @@ -5,16 +5,18 @@ namespace Tests\SchedulerBundle\Bridge\Doctrine\Transport\Configuration; use Doctrine\DBAL\DriverManager; + +use function getenv; +use function is_bool; + use SchedulerBundle\Bridge\Doctrine\Transport\Connection; use SchedulerBundle\SchedulePolicy\FirstInFirstOutPolicy; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestrator; use SchedulerBundle\Transport\Configuration\InMemoryConfiguration; + use SchedulerBundle\Transport\Dsn; use Tests\SchedulerBundle\Bridge\Doctrine\Transport\AbstractConnectionIntegrationTest; -use function getenv; -use function is_bool; - /** * @author Guillaume Loulier * diff --git a/tests/Bridge/Doctrine/Transport/Configuration/ConnectionIntegrationTest.php b/tests/Bridge/Doctrine/Transport/Configuration/ConnectionIntegrationTest.php index ddda09a6..ebd45b06 100644 --- a/tests/Bridge/Doctrine/Transport/Configuration/ConnectionIntegrationTest.php +++ b/tests/Bridge/Doctrine/Transport/Configuration/ConnectionIntegrationTest.php @@ -6,10 +6,13 @@ use Doctrine\DBAL\Connection as DbalConnection; use Doctrine\DBAL\DriverManager; + +use function file_exists; + use PHPUnit\Framework\TestCase; + use SchedulerBundle\Bridge\Doctrine\Transport\Configuration\Connection; -use function file_exists; use function sprintf; use function sys_get_temp_dir; use function unlink; diff --git a/tests/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationFactoryTest.php b/tests/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationFactoryTest.php index ecb7d60d..293c392e 100644 --- a/tests/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationFactoryTest.php +++ b/tests/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationFactoryTest.php @@ -9,14 +9,16 @@ use Doctrine\Persistence\ConnectionRegistry; use Generator; use InvalidArgumentException as InternalInvalidArgumentException; -use SchedulerBundle\Exception\InvalidArgumentException; use PHPUnit\Framework\TestCase; use SchedulerBundle\Bridge\Doctrine\Transport\Configuration\DoctrineConfigurationFactory; use SchedulerBundle\Exception\ConfigurationException; +use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Transport\Dsn; -use Symfony\Component\Serializer\SerializerInterface; use function sprintf; + +use Symfony\Component\Serializer\SerializerInterface; + use function sys_get_temp_dir; /** diff --git a/tests/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationIntegrationTest.php b/tests/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationIntegrationTest.php index 90d19b67..c1353ce1 100644 --- a/tests/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationIntegrationTest.php +++ b/tests/Bridge/Doctrine/Transport/Configuration/DoctrineConfigurationIntegrationTest.php @@ -6,11 +6,14 @@ use Doctrine\DBAL\Connection as DbalConnection; use Doctrine\DBAL\DriverManager; + +use function file_exists; + use PHPUnit\Framework\TestCase; use SchedulerBundle\Bridge\Doctrine\Transport\Configuration\DoctrineConfiguration; + use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use function file_exists; use function sprintf; use function sys_get_temp_dir; use function unlink; diff --git a/tests/Bridge/Doctrine/Transport/ConnectionIntegrationSQLiteTest.php b/tests/Bridge/Doctrine/Transport/ConnectionIntegrationSQLiteTest.php index 31129e2b..a551f1ad 100644 --- a/tests/Bridge/Doctrine/Transport/ConnectionIntegrationSQLiteTest.php +++ b/tests/Bridge/Doctrine/Transport/ConnectionIntegrationSQLiteTest.php @@ -5,12 +5,15 @@ namespace Tests\SchedulerBundle\Bridge\Doctrine\Transport; use Doctrine\DBAL\DriverManager; + +use function file_exists; + use SchedulerBundle\Bridge\Doctrine\Transport\Connection; use SchedulerBundle\SchedulePolicy\FirstInFirstOutPolicy; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestrator; + use SchedulerBundle\Transport\Configuration\InMemoryConfiguration; -use function file_exists; use function sprintf; use function sys_get_temp_dir; use function unlink; diff --git a/tests/Bridge/Doctrine/Transport/ConnectionIntegrationTest.php b/tests/Bridge/Doctrine/Transport/ConnectionIntegrationTest.php index 8fa56bd1..9d4c5f6a 100644 --- a/tests/Bridge/Doctrine/Transport/ConnectionIntegrationTest.php +++ b/tests/Bridge/Doctrine/Transport/ConnectionIntegrationTest.php @@ -8,6 +8,9 @@ use Doctrine\DBAL\Connection as DbalConnection; use Doctrine\DBAL\DriverManager; use Exception; + +use function file_exists; + use PHPUnit\Framework\TestCase; use SchedulerBundle\Bridge\Doctrine\Transport\Connection; use SchedulerBundle\Exception\TransportException; @@ -21,6 +24,9 @@ use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Transport\Configuration\InMemoryConfiguration; + +use function sprintf; + use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor; use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; use Symfony\Component\PropertyInfo\PropertyInfoExtractor; @@ -30,12 +36,13 @@ use Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer; use Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; + use Symfony\Component\Serializer\Serializer; -use Tests\SchedulerBundle\Bridge\Doctrine\Transport\Assets\MessengerMessage; -use function file_exists; -use function sprintf; use function sys_get_temp_dir; + +use Tests\SchedulerBundle\Bridge\Doctrine\Transport\Assets\MessengerMessage; + use function unlink; /** diff --git a/tests/Bridge/Redis/Transport/ConnectionIntegrationTest.php b/tests/Bridge/Redis/Transport/ConnectionIntegrationTest.php index c61e7a3d..b0022e52 100644 --- a/tests/Bridge/Redis/Transport/ConnectionIntegrationTest.php +++ b/tests/Bridge/Redis/Transport/ConnectionIntegrationTest.php @@ -5,6 +5,10 @@ namespace Tests\SchedulerBundle\Bridge\Redis\Transport; use Generator; + +use function getenv; +use function is_bool; + use PHPUnit\Framework\TestCase; use Redis; use SchedulerBundle\Bridge\Redis\Transport\Connection; @@ -18,18 +22,18 @@ use SchedulerBundle\Task\TaskList; use SchedulerBundle\Transport\Configuration\InMemoryConfiguration; use SchedulerBundle\Transport\Dsn; + +use function sprintf; + use Symfony\Component\Serializer\Encoder\JsonEncoder; use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer; use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; use Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer; + use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; use Symfony\Component\Serializer\Serializer; use Throwable; -use function getenv; -use function is_bool; -use function sprintf; - /** * @author Guillaume Loulier * diff --git a/tests/Bridge/Redis/Transport/ConnectionTest.php b/tests/Bridge/Redis/Transport/ConnectionTest.php index 8b84c2b0..a7f09f02 100644 --- a/tests/Bridge/Redis/Transport/ConnectionTest.php +++ b/tests/Bridge/Redis/Transport/ConnectionTest.php @@ -5,6 +5,9 @@ namespace Tests\SchedulerBundle\Bridge\Redis\Transport; use Generator; + +use function json_encode; + use PHPUnit\Framework\TestCase; use Redis; use SchedulerBundle\Bridge\Redis\Transport\Connection; @@ -13,9 +16,8 @@ use SchedulerBundle\Task\NullTask; use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Transport\Configuration\InMemoryConfiguration; -use Symfony\Component\Serializer\SerializerInterface; -use function json_encode; +use Symfony\Component\Serializer\SerializerInterface; /** * @author Guillaume Loulier diff --git a/tests/Bridge/Redis/Transport/RedisTransportFactoryTest.php b/tests/Bridge/Redis/Transport/RedisTransportFactoryTest.php index 20c750b0..e0419494 100644 --- a/tests/Bridge/Redis/Transport/RedisTransportFactoryTest.php +++ b/tests/Bridge/Redis/Transport/RedisTransportFactoryTest.php @@ -4,17 +4,18 @@ namespace Tests\SchedulerBundle\Bridge\Redis\Transport; +use function getenv; +use function is_bool; + use PHPUnit\Framework\TestCase; use SchedulerBundle\Bridge\Redis\Transport\RedisTransportFactory; use SchedulerBundle\SchedulePolicy\FirstInFirstOutPolicy; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestrator; use SchedulerBundle\Transport\Configuration\InMemoryConfiguration; + use SchedulerBundle\Transport\Dsn; use Symfony\Component\Serializer\SerializerInterface; -use function getenv; -use function is_bool; - /** * @author Guillaume Loulier * diff --git a/tests/Bridge/Redis/Transport/RedisTransportIntegrationTest.php b/tests/Bridge/Redis/Transport/RedisTransportIntegrationTest.php index 2395682e..83a3aadb 100644 --- a/tests/Bridge/Redis/Transport/RedisTransportIntegrationTest.php +++ b/tests/Bridge/Redis/Transport/RedisTransportIntegrationTest.php @@ -5,6 +5,10 @@ namespace Tests\SchedulerBundle\Bridge\Redis\Transport; use Generator; + +use function getenv; +use function is_bool; + use PHPUnit\Framework\TestCase; use SchedulerBundle\Bridge\Redis\Transport\RedisTransport; use SchedulerBundle\Exception\TransportException; @@ -27,12 +31,10 @@ use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; use Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; + use Symfony\Component\Serializer\Serializer; use Throwable; -use function getenv; -use function is_bool; - /** * @author Guillaume Loulier * diff --git a/tests/Command/ConsumeTasksCommandTest.php b/tests/Command/ConsumeTasksCommandTest.php index 90902583..d2b97c7f 100644 --- a/tests/Command/ConsumeTasksCommandTest.php +++ b/tests/Command/ConsumeTasksCommandTest.php @@ -9,42 +9,44 @@ use Generator; use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; +use SchedulerBundle\Command\ConsumeTasksCommand; use SchedulerBundle\EventListener\StopWorkerOnFailureLimitSubscriber; use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; use SchedulerBundle\EventListener\StopWorkerOnTimeLimitSubscriber; use SchedulerBundle\Middleware\MiddlewareRegistry; use SchedulerBundle\Middleware\SchedulerMiddlewareStack; use SchedulerBundle\Middleware\WorkerMiddlewareStack; +use SchedulerBundle\Runner\RunnerInterface; use SchedulerBundle\Runner\RunnerRegistry; use SchedulerBundle\SchedulePolicy\FirstInFirstOutPolicy; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestrator; use SchedulerBundle\Scheduler; +use SchedulerBundle\SchedulerInterface; use SchedulerBundle\Task\NullTask; +use SchedulerBundle\Task\Output; use SchedulerBundle\Task\ProbeTask; +use SchedulerBundle\Task\TaskExecutionTrackerInterface; +use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Task\TaskList; +use SchedulerBundle\Task\TaskListInterface; use SchedulerBundle\Transport\Configuration\InMemoryConfiguration; use SchedulerBundle\Transport\InMemoryTransport; use SchedulerBundle\Worker\ExecutionPolicy\DefaultPolicy; use SchedulerBundle\Worker\ExecutionPolicy\ExecutionPolicyRegistry; +use SchedulerBundle\Worker\Worker; +use SchedulerBundle\Worker\WorkerInterface; + +use function sprintf; + use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Tester\CommandTester; use Symfony\Component\EventDispatcher\EventDispatcher; -use SchedulerBundle\Command\ConsumeTasksCommand; -use SchedulerBundle\Runner\RunnerInterface; -use SchedulerBundle\SchedulerInterface; -use SchedulerBundle\Task\Output; -use SchedulerBundle\Task\TaskExecutionTrackerInterface; -use SchedulerBundle\Task\TaskInterface; -use SchedulerBundle\Task\TaskListInterface; -use SchedulerBundle\Worker\Worker; -use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\Lock\LockFactory; use Symfony\Component\Lock\Store\FlockStore; use Symfony\Component\Lock\Store\InMemoryStore; -use Throwable; -use function sprintf; +use Throwable; /** * @author Guillaume Loulier diff --git a/tests/Command/ListFailedTasksCommandTest.php b/tests/Command/ListFailedTasksCommandTest.php index 2a839283..8c46f07b 100644 --- a/tests/Command/ListFailedTasksCommandTest.php +++ b/tests/Command/ListFailedTasksCommandTest.php @@ -5,14 +5,14 @@ namespace Tests\SchedulerBundle\Command; use PHPUnit\Framework\TestCase; -use SchedulerBundle\Task\TaskList; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Tester\CommandTester; use SchedulerBundle\Command\ListFailedTasksCommand; use SchedulerBundle\Task\FailedTask; use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\Task\TaskList; use SchedulerBundle\Worker\WorkerInterface; +use Symfony\Component\Console\Application; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Tester\CommandTester; /** * @author Guillaume Loulier diff --git a/tests/Command/ListTasksCommandTest.php b/tests/Command/ListTasksCommandTest.php index d9d99f6b..891ea0c2 100644 --- a/tests/Command/ListTasksCommandTest.php +++ b/tests/Command/ListTasksCommandTest.php @@ -7,21 +7,21 @@ use DateTimeImmutable; use Generator; use PHPUnit\Framework\TestCase; +use SchedulerBundle\Command\ListTasksCommand; use SchedulerBundle\Middleware\SchedulerMiddlewareStack; use SchedulerBundle\SchedulePolicy\FirstInFirstOutPolicy; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestrator; use SchedulerBundle\Scheduler; +use SchedulerBundle\SchedulerInterface; use SchedulerBundle\Task\ChainedTask; use SchedulerBundle\Task\NullTask; +use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\Task\TaskList; use SchedulerBundle\Transport\Configuration\InMemoryConfiguration; use SchedulerBundle\Transport\InMemoryTransport; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Tester\CommandCompletionTester; use Symfony\Component\Console\Tester\CommandTester; -use SchedulerBundle\Command\ListTasksCommand; -use SchedulerBundle\SchedulerInterface; -use SchedulerBundle\Task\TaskInterface; -use SchedulerBundle\Task\TaskList; use Symfony\Component\EventDispatcher\EventDispatcher; use Throwable; diff --git a/tests/Command/RebootSchedulerCommandTest.php b/tests/Command/RebootSchedulerCommandTest.php index be27dedc..1fc389d9 100644 --- a/tests/Command/RebootSchedulerCommandTest.php +++ b/tests/Command/RebootSchedulerCommandTest.php @@ -6,16 +6,16 @@ use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; +use SchedulerBundle\Command\RebootSchedulerCommand; use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; +use SchedulerBundle\SchedulerInterface; +use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Task\TaskList; use SchedulerBundle\Worker\WorkerConfiguration; +use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Tester\CommandTester; use Symfony\Component\EventDispatcher\EventDispatcher; -use SchedulerBundle\Command\RebootSchedulerCommand; -use SchedulerBundle\SchedulerInterface; -use SchedulerBundle\Task\TaskInterface; -use SchedulerBundle\Worker\WorkerInterface; use Throwable; /** diff --git a/tests/Command/RemoveFailedTaskCommandTest.php b/tests/Command/RemoveFailedTaskCommandTest.php index 99256b0d..09dfba42 100644 --- a/tests/Command/RemoveFailedTaskCommandTest.php +++ b/tests/Command/RemoveFailedTaskCommandTest.php @@ -6,20 +6,20 @@ use Exception; use PHPUnit\Framework\TestCase; +use SchedulerBundle\Command\RemoveFailedTaskCommand; use SchedulerBundle\Middleware\SchedulerMiddlewareStack; use SchedulerBundle\SchedulePolicy\FirstInFirstOutPolicy; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestrator; use SchedulerBundle\Scheduler; +use SchedulerBundle\SchedulerInterface; use SchedulerBundle\Task\NullTask; use SchedulerBundle\Task\TaskList; use SchedulerBundle\Transport\Configuration\InMemoryConfiguration; use SchedulerBundle\Transport\InMemoryTransport; +use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Tester\CommandCompletionTester; use Symfony\Component\Console\Tester\CommandTester; -use SchedulerBundle\Command\RemoveFailedTaskCommand; -use SchedulerBundle\SchedulerInterface; -use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\EventDispatcher\EventDispatcher; /** diff --git a/tests/Command/RetryFailedTaskCommandTest.php b/tests/Command/RetryFailedTaskCommandTest.php index 45e7b0bf..f85b9950 100644 --- a/tests/Command/RetryFailedTaskCommandTest.php +++ b/tests/Command/RetryFailedTaskCommandTest.php @@ -7,14 +7,14 @@ use Exception; use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; +use SchedulerBundle\Command\RetryFailedTaskCommand; use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; use SchedulerBundle\Task\NullTask; use SchedulerBundle\Task\TaskList; +use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Tester\CommandCompletionTester; use Symfony\Component\Console\Tester\CommandTester; -use SchedulerBundle\Command\RetryFailedTaskCommand; -use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; diff --git a/tests/DependencyInjection/SchedulerBundleExtensionTest.php b/tests/DependencyInjection/SchedulerBundleExtensionTest.php index d4d07863..e3efa5bd 100644 --- a/tests/DependencyInjection/SchedulerBundleExtensionTest.php +++ b/tests/DependencyInjection/SchedulerBundleExtensionTest.php @@ -52,6 +52,7 @@ use SchedulerBundle\Messenger\TaskToYieldMessageHandler; use SchedulerBundle\Middleware\FiberAwareSchedulerMiddlewareStack; use SchedulerBundle\Middleware\FiberAwareWorkerMiddlewareStack; +use SchedulerBundle\Middleware\MaxExecutionMiddleware; use SchedulerBundle\Middleware\MiddlewareRegistry; use SchedulerBundle\Middleware\MiddlewareRegistryInterface; use SchedulerBundle\Middleware\MiddlewareStackInterface; @@ -60,7 +61,6 @@ use SchedulerBundle\Middleware\PostSchedulingMiddlewareInterface; use SchedulerBundle\Middleware\PreExecutionMiddlewareInterface; use SchedulerBundle\Middleware\PreSchedulingMiddlewareInterface; -use SchedulerBundle\Middleware\MaxExecutionMiddleware; use SchedulerBundle\Middleware\ProbeTaskMiddleware; use SchedulerBundle\Middleware\SchedulerMiddlewareStack; use SchedulerBundle\Middleware\SchedulerMiddlewareStackInterface; @@ -122,8 +122,8 @@ use SchedulerBundle\Transport\Configuration\ConfigurationFactory; use SchedulerBundle\Transport\Configuration\ConfigurationFactoryInterface; use SchedulerBundle\Transport\Configuration\ConfigurationInterface; -use SchedulerBundle\Transport\Configuration\FiberConfigurationFactory; use SchedulerBundle\Transport\Configuration\FailOverConfigurationFactory; +use SchedulerBundle\Transport\Configuration\FiberConfigurationFactory; use SchedulerBundle\Transport\Configuration\InMemoryConfigurationFactory; use SchedulerBundle\Transport\Configuration\LazyConfigurationFactory; use SchedulerBundle\Transport\Configuration\LongTailConfigurationFactory; @@ -154,11 +154,11 @@ use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\HttpKernel\KernelInterface; -use Symfony\Component\Mercure\Hub; -use Symfony\Component\Mercure\Jwt\StaticTokenProvider; use Symfony\Component\Lock\LockFactory; use Symfony\Component\Lock\PersistingStoreInterface; use Symfony\Component\Lock\Store\StoreFactory; +use Symfony\Component\Mercure\Hub; +use Symfony\Component\Mercure\Jwt\StaticTokenProvider; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Notifier\NotifierInterface; use Symfony\Component\Serializer\SerializerInterface; diff --git a/tests/DependencyInjection/SchedulerPassTest.php b/tests/DependencyInjection/SchedulerPassTest.php index d6641069..94c51b5a 100644 --- a/tests/DependencyInjection/SchedulerPassTest.php +++ b/tests/DependencyInjection/SchedulerPassTest.php @@ -4,12 +4,12 @@ namespace Tests\SchedulerBundle\DependencyInjection; -use SchedulerBundle\SchedulerInterface; -use stdClass; use PHPUnit\Framework\TestCase; -use Symfony\Component\DependencyInjection\ContainerBuilder; use SchedulerBundle\DependencyInjection\SchedulerPass; +use SchedulerBundle\SchedulerInterface; use SchedulerBundle\Task\TaskInterface; +use stdClass; +use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Reference; use Tests\SchedulerBundle\DependencyInjection\Assets\SchedulerEntryPoint; diff --git a/tests/EventListener/MercureEventSubscriberTest.php b/tests/EventListener/MercureEventSubscriberTest.php index f0b27c31..73afa677 100644 --- a/tests/EventListener/MercureEventSubscriberTest.php +++ b/tests/EventListener/MercureEventSubscriberTest.php @@ -5,6 +5,11 @@ namespace Tests\SchedulerBundle\EventListener; use DateTimeInterface; + +use function json_encode; + +use const JSON_THROW_ON_ERROR; + use JsonException; use PHPUnit\Framework\TestCase; use SchedulerBundle\Event\TaskExecutedEvent; @@ -23,12 +28,10 @@ use SchedulerBundle\Worker\WorkerConfiguration; use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\Mercure\HubInterface; -use Symfony\Component\Mercure\Update; -use Symfony\Component\Serializer\SerializerInterface; -use function json_encode; +use Symfony\Component\Mercure\Update; -use const JSON_THROW_ON_ERROR; +use Symfony\Component\Serializer\SerializerInterface; /** * @author Guillaume Loulier diff --git a/tests/EventListener/ProbeStateSubscriberTest.php b/tests/EventListener/ProbeStateSubscriberTest.php index 49e9c672..4af43658 100644 --- a/tests/EventListener/ProbeStateSubscriberTest.php +++ b/tests/EventListener/ProbeStateSubscriberTest.php @@ -4,6 +4,8 @@ namespace Tests\SchedulerBundle\EventListener; +use function json_decode; + use PHPUnit\Framework\TestCase; use SchedulerBundle\EventListener\ProbeStateSubscriber; use SchedulerBundle\Probe\Probe; @@ -15,9 +17,8 @@ use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\KernelInterface; -use Throwable; -use function json_decode; +use Throwable; /** * @author Guillaume Loulier diff --git a/tests/EventListener/StopWorkerOnNextTaskSubscriberTest.php b/tests/EventListener/StopWorkerOnNextTaskSubscriberTest.php index 72d4d296..8d168c53 100644 --- a/tests/EventListener/StopWorkerOnNextTaskSubscriberTest.php +++ b/tests/EventListener/StopWorkerOnNextTaskSubscriberTest.php @@ -4,15 +4,16 @@ namespace Tests\SchedulerBundle\EventListener; +use function microtime; + use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; use SchedulerBundle\Event\WorkerRunningEvent; use SchedulerBundle\Event\WorkerStartedEvent; use SchedulerBundle\EventListener\StopWorkerOnNextTaskSubscriber; use SchedulerBundle\Worker\WorkerInterface; -use Symfony\Component\Cache\Adapter\ArrayAdapter; -use function microtime; +use Symfony\Component\Cache\Adapter\ArrayAdapter; /** * @author Guillaume Loulier diff --git a/tests/EventListener/TaskSubscriberTest.php b/tests/EventListener/TaskSubscriberTest.php index 6eb3d368..a8c551b7 100644 --- a/tests/EventListener/TaskSubscriberTest.php +++ b/tests/EventListener/TaskSubscriberTest.php @@ -5,16 +5,22 @@ namespace Tests\SchedulerBundle\EventListener; use InvalidArgumentException; + +use function json_decode; + use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; use RuntimeException; use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; +use SchedulerBundle\EventListener\TaskSubscriber; +use SchedulerBundle\SchedulerInterface; use SchedulerBundle\Serializer\AccessLockBagNormalizer; use SchedulerBundle\Serializer\NotificationTaskBagNormalizer; use SchedulerBundle\Serializer\TaskNormalizer; use SchedulerBundle\Task\NullTask; use SchedulerBundle\Task\TaskList; use SchedulerBundle\Worker\WorkerConfiguration; +use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; @@ -22,9 +28,6 @@ use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\KernelEvents; -use SchedulerBundle\EventListener\TaskSubscriber; -use SchedulerBundle\SchedulerInterface; -use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor; use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; use Symfony\Component\PropertyInfo\PropertyInfoExtractor; @@ -34,9 +37,8 @@ use Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer; use Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; -use Symfony\Component\Serializer\Serializer; -use function json_decode; +use Symfony\Component\Serializer\Serializer; /** * @author Guillaume Loulier diff --git a/tests/Expression/ComputedExpressionBuilderTest.php b/tests/Expression/ComputedExpressionBuilderTest.php index ff57ec80..f8b31ffb 100644 --- a/tests/Expression/ComputedExpressionBuilderTest.php +++ b/tests/Expression/ComputedExpressionBuilderTest.php @@ -4,12 +4,13 @@ namespace Tests\SchedulerBundle\Expression; +use function explode; + use Generator; use PHPUnit\Framework\TestCase; use SchedulerBundle\Expression\ComputedExpressionBuilder; -use Throwable; -use function explode; +use Throwable; /** * @author Guillaume Loulier diff --git a/tests/FiberSchedulerTest.php b/tests/FiberSchedulerTest.php index 03405922..1f058c14 100644 --- a/tests/FiberSchedulerTest.php +++ b/tests/FiberSchedulerTest.php @@ -7,6 +7,11 @@ use DateTimeImmutable; use DateTimeZone; use Exception; +use Generator; + +use function getcwd; +use function in_array; + use PDO; use Psr\Log\LoggerInterface; use SchedulerBundle\Event\TaskScheduledEvent; @@ -53,6 +58,9 @@ use SchedulerBundle\Worker\ExecutionPolicy\ExecutionPolicyRegistry; use SchedulerBundle\Worker\Worker; use SchedulerBundle\Worker\WorkerConfiguration; + +use function sprintf; + use stdClass; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\Lock\LockFactory; @@ -74,16 +82,14 @@ use Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer; use Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; + use Symfony\Component\Serializer\Serializer; use Symfony\Component\Stopwatch\Stopwatch; -use Throwable; -use Generator; -use function getcwd; -use function in_array; -use function sprintf; use function sys_get_temp_dir; +use Throwable; + /** * @requires PHP 8.1 * @@ -928,7 +934,7 @@ public function testTaskCanBeUpdatedThenLazilyRetrieved(TaskInterface $task): vo $task->addTag('new_tag'); $scheduler->update($task->getName(), $task); - $updatedTask = $scheduler->getTasks(true)->filter(fn (TaskInterface $task): bool => in_array('new_tag', $task->getTags(), true)); + $updatedTask = $scheduler->getTasks(true)->filter(static fn (TaskInterface $task): bool => in_array('new_tag', $task->getTags(), true)); self::assertInstanceOf(LazyTaskList::class, $updatedTask); self::assertCount(1, $updatedTask); } @@ -1580,7 +1586,7 @@ public function testSchedulerCannotPreemptEmptyToPreemptTasks(): void ])), new SchedulerMiddlewareStack(), $eventDispatcher)); $scheduler->schedule(new NullTask('foo')); - $scheduler->preempt('foo', static fn (TaskInterface $task): bool => $task->getName() === 'bar'); + $scheduler->preempt('foo', static fn (TaskInterface $task): bool => 'bar' === $task->getName()); } /** @@ -1602,7 +1608,7 @@ public function testSchedulerCanPreemptTasks(): void $scheduler->schedule(new NullTask('foo')); $scheduler->schedule(new NullTask('bar')); $scheduler->schedule(new NullTask('reboot')); - $scheduler->preempt('foo', fn (TaskInterface $task): bool => $task->getName() === 'reboot'); + $scheduler->preempt('foo', static fn (TaskInterface $task): bool => 'reboot' === $task->getName()); $lockFactory = new LockFactory(new InMemoryStore()); diff --git a/tests/LazySchedulerTest.php b/tests/LazySchedulerTest.php index fd600442..e110ba2a 100644 --- a/tests/LazySchedulerTest.php +++ b/tests/LazySchedulerTest.php @@ -680,7 +680,7 @@ public function testSchedulerCannotPreemptEmptyDueTasks(): void ])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher())); self::assertFalse($scheduler->isInitialized()); - $scheduler->preempt('foo', static fn (TaskInterface $task): bool => $task->getName() === 'bar'); + $scheduler->preempt('foo', static fn (TaskInterface $task): bool => 'bar' === $task->getName()); self::assertNotSame(TaskInterface::READY_TO_EXECUTE, $task->getState()); } @@ -699,7 +699,7 @@ public function testSchedulerCannotPreemptEmptyToPreemptTasks(): void self::assertFalse($scheduler->isInitialized()); $scheduler->schedule(new NullTask('foo')); - $scheduler->preempt('foo', static fn (TaskInterface $task): bool => $task->getName() === 'bar'); + $scheduler->preempt('foo', static fn (TaskInterface $task): bool => 'bar' === $task->getName()); } /** @@ -722,7 +722,7 @@ public function testSchedulerCanPreemptTasks(): void $scheduler->schedule(new NullTask('foo')); $scheduler->schedule(new NullTask('bar')); $scheduler->schedule(new NullTask('reboot')); - $scheduler->preempt('foo', static fn (TaskInterface $task): bool => $task->getName() === 'reboot'); + $scheduler->preempt('foo', static fn (TaskInterface $task): bool => 'reboot' === $task->getName()); $lockFactory = new LockFactory(new InMemoryStore()); diff --git a/tests/Middleware/TaskCallbackMiddlewareTest.php b/tests/Middleware/TaskCallbackMiddlewareTest.php index 72570e67..a423ad1a 100644 --- a/tests/Middleware/TaskCallbackMiddlewareTest.php +++ b/tests/Middleware/TaskCallbackMiddlewareTest.php @@ -40,7 +40,7 @@ public function testMiddlewareCanBeCalledOnErroredBeforeCallback(): void $scheduler = $this->createMock(SchedulerInterface::class); $task = $this->createMock(TaskInterface::class); - $task->expects(self::once())->method('getBeforeScheduling')->willReturn(fn (): bool => false); + $task->expects(self::once())->method('getBeforeScheduling')->willReturn(static fn (): bool => false); $taskCallbackMiddleware = new TaskCallbackMiddleware(); @@ -55,7 +55,7 @@ public function testMiddlewareCanBeCalledOnValidBeforeCallback(): void $scheduler = $this->createMock(SchedulerInterface::class); $task = $this->createMock(TaskInterface::class); - $task->expects(self::once())->method('getBeforeScheduling')->willReturn(fn (): bool => true); + $task->expects(self::once())->method('getBeforeScheduling')->willReturn(static fn (): bool => true); $taskCallbackMiddleware = new TaskCallbackMiddleware(); $taskCallbackMiddleware->preScheduling($task, $scheduler); @@ -79,7 +79,7 @@ public function testMiddlewareCanBeCalledOnErroredAfterCallback(): void $task = $this->createMock(TaskInterface::class); $task->expects(self::once())->method('getName')->willReturn('foo'); - $task->expects(self::once())->method('getAfterScheduling')->willReturn(fn (): bool => false); + $task->expects(self::once())->method('getAfterScheduling')->willReturn(static fn (): bool => false); $taskCallbackMiddleware = new TaskCallbackMiddleware(); @@ -94,7 +94,7 @@ public function testMiddlewareCanBeCalledOnValidAfterCallback(): void $scheduler = $this->createMock(SchedulerInterface::class); $task = $this->createMock(TaskInterface::class); - $task->expects(self::once())->method('getAfterScheduling')->willReturn(fn (): bool => true); + $task->expects(self::once())->method('getAfterScheduling')->willReturn(static fn (): bool => true); $taskCallbackMiddleware = new TaskCallbackMiddleware(); $taskCallbackMiddleware->postScheduling($task, $scheduler); @@ -112,7 +112,7 @@ public function testMiddlewareCannotPreExecuteEmptyBeforeExecutingCallback(): vo public function testMiddlewareCannotPreExecuteErroredBeforeExecutingCallback(): void { $nullTask = new NullTask('foo', [ - 'before_executing' => fn (): bool => false, + 'before_executing' => static fn (): bool => false, ]); $taskCallbackMiddleware = new TaskCallbackMiddleware(); @@ -127,7 +127,7 @@ public function testMiddlewareCanPreExecuteWithValidBeforeExecutingCallback(): v { $task = $this->createMock(TaskInterface::class); $task->expects(self::never())->method('getName'); - $task->expects(self::once())->method('getBeforeExecuting')->willReturn(fn (): bool => true); + $task->expects(self::once())->method('getBeforeExecuting')->willReturn(static fn (): bool => true); $taskCallbackMiddleware = new TaskCallbackMiddleware(); $taskCallbackMiddleware->preExecute($task); @@ -148,7 +148,7 @@ public function testMiddlewareCannotPostExecuteErroredAfterExecutingCallback(): $worker = $this->createMock(WorkerInterface::class); $nullTask = new NullTask('foo', [ - 'after_executing' => fn (): bool => false, + 'after_executing' => static fn (): bool => false, ]); $taskCallbackMiddleware = new TaskCallbackMiddleware(); @@ -164,7 +164,7 @@ public function testMiddlewareCanPostExecuteWithValidAfterExecutingCallback(): v $worker = $this->createMock(WorkerInterface::class); $task = $this->createMock(TaskInterface::class); $task->expects(self::never())->method('getName'); - $task->expects(self::once())->method('getAfterExecuting')->willReturn(fn (): bool => true); + $task->expects(self::once())->method('getAfterExecuting')->willReturn(static fn (): bool => true); $taskCallbackMiddleware = new TaskCallbackMiddleware(); $taskCallbackMiddleware->postExecute($task, $worker); diff --git a/tests/Runner/Assets/BarCommand.php b/tests/Runner/Assets/BarCommand.php index 119f8a22..c64512c3 100644 --- a/tests/Runner/Assets/BarCommand.php +++ b/tests/Runner/Assets/BarCommand.php @@ -4,13 +4,14 @@ namespace Tests\SchedulerBundle\Runner\Assets; +use function sprintf; + use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use function sprintf; +use Symfony\Component\Console\Output\OutputInterface; /** * @author Guillaume Loulier diff --git a/tests/Runner/Assets/FooCommand.php b/tests/Runner/Assets/FooCommand.php index 05dad7f1..cc08202c 100644 --- a/tests/Runner/Assets/FooCommand.php +++ b/tests/Runner/Assets/FooCommand.php @@ -4,12 +4,13 @@ namespace Tests\SchedulerBundle\Runner\Assets; +use function sprintf; + use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use function sprintf; +use Symfony\Component\Console\Output\OutputInterface; /** * @author Guillaume Loulier diff --git a/tests/Runner/CommandTaskRunnerTest.php b/tests/Runner/CommandTaskRunnerTest.php index 2a4f1d13..aab74220 100644 --- a/tests/Runner/CommandTaskRunnerTest.php +++ b/tests/Runner/CommandTaskRunnerTest.php @@ -5,13 +5,13 @@ namespace Tests\SchedulerBundle\Runner; use PHPUnit\Framework\TestCase; -use SchedulerBundle\Task\ShellTask; -use SchedulerBundle\Worker\WorkerInterface; -use Symfony\Component\Console\Application; use SchedulerBundle\Runner\CommandTaskRunner; use SchedulerBundle\Task\CommandTask; use SchedulerBundle\Task\NullTask; use SchedulerBundle\Task\Output; +use SchedulerBundle\Task\ShellTask; +use SchedulerBundle\Worker\WorkerInterface; +use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\Command; use Tests\SchedulerBundle\Runner\Assets\BarCommand; use Tests\SchedulerBundle\Runner\Assets\FooCommand; diff --git a/tests/Runner/HttpTaskRunnerTest.php b/tests/Runner/HttpTaskRunnerTest.php index 652c987b..a1dd3a5a 100644 --- a/tests/Runner/HttpTaskRunnerTest.php +++ b/tests/Runner/HttpTaskRunnerTest.php @@ -4,18 +4,19 @@ namespace Tests\SchedulerBundle\Runner; +use function json_encode; + use PHPUnit\Framework\TestCase; +use SchedulerBundle\Runner\HttpTaskRunner; +use SchedulerBundle\Task\HttpTask; +use SchedulerBundle\Task\NullTask; use SchedulerBundle\Task\Output; use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\HttpClient\MockHttpClient; use Symfony\Component\HttpClient\Response\MockResponse; -use SchedulerBundle\Runner\HttpTaskRunner; -use SchedulerBundle\Task\HttpTask; -use SchedulerBundle\Task\NullTask; -use Symfony\Contracts\HttpClient\HttpClientInterface; -use function json_encode; +use Symfony\Contracts\HttpClient\HttpClientInterface; /** * @author Guillaume Loulier diff --git a/tests/Runner/MessengerTaskRunnerTest.php b/tests/Runner/MessengerTaskRunnerTest.php index 479f4e4b..f62f0bba 100644 --- a/tests/Runner/MessengerTaskRunnerTest.php +++ b/tests/Runner/MessengerTaskRunnerTest.php @@ -4,16 +4,16 @@ namespace Tests\SchedulerBundle\Runner; -use RuntimeException; use PHPUnit\Framework\TestCase; +use RuntimeException; +use SchedulerBundle\Runner\MessengerTaskRunner; +use SchedulerBundle\Task\MessengerTask; use SchedulerBundle\Task\Output; use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Worker\WorkerInterface; use stdClass; use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\MessageBusInterface; -use SchedulerBundle\Runner\MessengerTaskRunner; -use SchedulerBundle\Task\MessengerTask; use Tests\SchedulerBundle\Runner\Assets\BarTask; /** diff --git a/tests/Runner/NotificationTaskRunnerTest.php b/tests/Runner/NotificationTaskRunnerTest.php index 8d45e153..82870f6e 100644 --- a/tests/Runner/NotificationTaskRunnerTest.php +++ b/tests/Runner/NotificationTaskRunnerTest.php @@ -5,6 +5,8 @@ namespace Tests\SchedulerBundle\Runner; use PHPUnit\Framework\TestCase; +use SchedulerBundle\Runner\NotificationTaskRunner; +use SchedulerBundle\Task\NotificationTask; use SchedulerBundle\Task\Output; use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Worker\WorkerInterface; @@ -12,8 +14,6 @@ use Symfony\Component\Notifier\Notification\Notification; use Symfony\Component\Notifier\NotifierInterface; use Symfony\Component\Notifier\Recipient\Recipient; -use SchedulerBundle\Runner\NotificationTaskRunner; -use SchedulerBundle\Task\NotificationTask; use Tests\SchedulerBundle\Runner\Assets\BarTask; /** diff --git a/tests/Runner/RunnerRegistryTest.php b/tests/Runner/RunnerRegistryTest.php index 1315a8d1..11b8a814 100644 --- a/tests/Runner/RunnerRegistryTest.php +++ b/tests/Runner/RunnerRegistryTest.php @@ -29,7 +29,7 @@ public function testRegistryCanFilterRunnerList(): void self::assertCount(3, $registry); - $filteredList = $registry->filter(fn (RunnerInterface $runner): bool => $runner->support(new NullTask('foo'))); + $filteredList = $registry->filter(static fn (RunnerInterface $runner): bool => $runner->support(new NullTask('foo'))); self::assertCount(1, $filteredList); } diff --git a/tests/SchedulePolicy/SchedulePolicyOrchestratorTest.php b/tests/SchedulePolicy/SchedulePolicyOrchestratorTest.php index 390963fc..cd6dad89 100644 --- a/tests/SchedulePolicy/SchedulePolicyOrchestratorTest.php +++ b/tests/SchedulePolicy/SchedulePolicyOrchestratorTest.php @@ -4,11 +4,11 @@ namespace Tests\SchedulerBundle\SchedulePolicy; -use RuntimeException; -use InvalidArgumentException; use DateInterval; use DateTimeImmutable; +use InvalidArgumentException; use PHPUnit\Framework\TestCase; +use RuntimeException; use SchedulerBundle\SchedulePolicy\BatchPolicy; use SchedulerBundle\SchedulePolicy\DeadlinePolicy; use SchedulerBundle\SchedulePolicy\ExecutionDurationPolicy; diff --git a/tests/SchedulerTest.php b/tests/SchedulerTest.php index 627a9ea7..82ddb980 100644 --- a/tests/SchedulerTest.php +++ b/tests/SchedulerTest.php @@ -8,6 +8,10 @@ use DateTimeZone; use Exception; use Generator; + +use function getcwd; +use function in_array; + use PDO; use Psr\Log\LoggerInterface; use SchedulerBundle\Event\TaskScheduledEvent; @@ -54,6 +58,9 @@ use SchedulerBundle\Worker\ExecutionPolicy\ExecutionPolicyRegistry; use SchedulerBundle\Worker\Worker; use SchedulerBundle\Worker\WorkerConfiguration; + +use function sprintf; + use stdClass; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\Lock\LockFactory; @@ -75,15 +82,14 @@ use Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer; use Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; + use Symfony\Component\Serializer\Serializer; use Symfony\Component\Stopwatch\Stopwatch; -use Throwable; -use function getcwd; -use function in_array; -use function sprintf; use function sys_get_temp_dir; +use Throwable; + /** * @author Guillaume Loulier */ @@ -519,7 +525,7 @@ public function testDueTasksCanBeReturnedWithSpecificFilter(TaskInterface $task) ])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), new EventDispatcher()); $scheduler->schedule($task); - $filteredTasks = $scheduler->getTasks()->filter(fn (TaskInterface $task): bool => null !== $task->getTimezone() && 0 === $task->getPriority()); + $filteredTasks = $scheduler->getTasks()->filter(static fn (TaskInterface $task): bool => null !== $task->getTimezone() && 0 === $task->getPriority()); self::assertCount(1, $filteredTasks); } @@ -542,7 +548,7 @@ public function testLazyDueTasksCanBeReturnedWithSpecificFilter(TaskInterface $t $dueTasks = $scheduler->getTasks(true); self::assertInstanceOf(LazyTaskList::class, $dueTasks); - $dueTasks = $dueTasks->filter(fn (TaskInterface $task): bool => null !== $task->getTimezone() && 0 === $task->getPriority()); + $dueTasks = $dueTasks->filter(static fn (TaskInterface $task): bool => null !== $task->getTimezone() && 0 === $task->getPriority()); self::assertCount(1, $dueTasks); } @@ -925,7 +931,7 @@ public function testTaskCanBeUpdatedThenLazilyRetrieved(TaskInterface $task): vo $task->addTag('new_tag'); $scheduler->update($task->getName(), $task); - $updatedTask = $scheduler->getTasks(true)->filter(fn (TaskInterface $task): bool => in_array('new_tag', $task->getTags(), true)); + $updatedTask = $scheduler->getTasks(true)->filter(static fn (TaskInterface $task): bool => in_array('new_tag', $task->getTags(), true)); self::assertInstanceOf(LazyTaskList::class, $updatedTask); self::assertCount(1, $updatedTask); } @@ -950,11 +956,11 @@ public function testTaskCanBePausedAndResumed(TaskInterface $task): void self::assertCount(1, $scheduler->getTasks()); $scheduler->pause($task->getName()); - $pausedTasks = $scheduler->getTasks()->filter(fn (TaskInterface $storedTask): bool => $task->getName() === $storedTask->getName() && TaskInterface::PAUSED === $task->getState()); + $pausedTasks = $scheduler->getTasks()->filter(static fn (TaskInterface $storedTask): bool => $task->getName() === $storedTask->getName() && TaskInterface::PAUSED === $task->getState()); self::assertNotEmpty($pausedTasks); $scheduler->resume($task->getName()); - $resumedTasks = $scheduler->getTasks()->filter(fn (TaskInterface $storedTask): bool => $task->getName() === $storedTask->getName() && TaskInterface::ENABLED === $task->getState()); + $resumedTasks = $scheduler->getTasks()->filter(static fn (TaskInterface $storedTask): bool => $task->getName() === $storedTask->getName() && TaskInterface::ENABLED === $task->getState()); self::assertNotEmpty($resumedTasks); } @@ -1572,7 +1578,7 @@ public function testSchedulerCannotPreemptEmptyToPreemptTasks(): void ])), new SchedulerMiddlewareStack(new MiddlewareRegistry([])), $eventDispatcher); $scheduler->schedule(new NullTask('foo')); - $scheduler->preempt('foo', static fn (TaskInterface $task): bool => $task->getName() === 'bar'); + $scheduler->preempt('foo', static fn (TaskInterface $task): bool => 'bar' === $task->getName()); } /** @@ -1594,7 +1600,7 @@ public function testSchedulerCanPreemptTasks(): void $scheduler->schedule(new NullTask('foo')); $scheduler->schedule(new NullTask('bar')); $scheduler->schedule(new NullTask('reboot')); - $scheduler->preempt('foo', fn (TaskInterface $task): bool => $task->getName() === 'reboot'); + $scheduler->preempt('foo', static fn (TaskInterface $task): bool => 'reboot' === $task->getName()); $lockFactory = new LockFactory(new InMemoryStore()); diff --git a/tests/Serializer/TaskNormalizerTest.php b/tests/Serializer/TaskNormalizerTest.php index f149a08b..4110f05e 100644 --- a/tests/Serializer/TaskNormalizerTest.php +++ b/tests/Serializer/TaskNormalizerTest.php @@ -7,27 +7,27 @@ use DateTimeImmutable; use DateTimeZone; use PHPUnit\Framework\TestCase; +use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Serializer\AccessLockBagNormalizer; use SchedulerBundle\Serializer\NotificationTaskBagNormalizer; -use SchedulerBundle\Task\ChainedTask; -use SchedulerBundle\Task\ProbeTask; -use SchedulerBundle\TaskBag\NotificationTaskBag; -use stdClass; -use Symfony\Component\Notifier\Notification\Notification; -use Symfony\Component\Notifier\Recipient\Recipient; -use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor; -use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; -use Symfony\Component\PropertyInfo\PropertyInfoExtractor; -use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Serializer\TaskNormalizer; use SchedulerBundle\Task\CallbackTask; +use SchedulerBundle\Task\ChainedTask; use SchedulerBundle\Task\CommandTask; use SchedulerBundle\Task\HttpTask; use SchedulerBundle\Task\MessengerTask; use SchedulerBundle\Task\NotificationTask; use SchedulerBundle\Task\NullTask; +use SchedulerBundle\Task\ProbeTask; use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\TaskBag\NotificationTaskBag; +use stdClass; +use Symfony\Component\Notifier\Notification\Notification; +use Symfony\Component\Notifier\Recipient\Recipient; +use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor; +use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; +use Symfony\Component\PropertyInfo\PropertyInfoExtractor; use Symfony\Component\Serializer\Encoder\JsonEncoder; use Symfony\Component\Serializer\Exception\ExceptionInterface; use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer; @@ -131,7 +131,7 @@ public function testCallbackTaskCannotBeDenormalizedWithClosure(): void self::expectException(InvalidArgumentException::class); self::expectExceptionMessage('CallbackTask with closure cannot be sent to external transport, consider executing it thanks to "SchedulerBundle\Worker\Worker::execute()"'); self::expectExceptionCode(0); - $taskNormalizer->normalize(new CallbackTask('foo', function (): void { + $taskNormalizer->normalize(new CallbackTask('foo', static function (): void { echo 'Symfony!'; })); } @@ -311,7 +311,7 @@ public function testShellTaskWithBeforeSchedulingClosureCannotBeNormalized(): vo $objectNormalizer->setSerializer($serializer); $shellTask = new ShellTask('foo', ['echo', 'Symfony']); - $shellTask->beforeScheduling(fn (): int => 1 * 1); + $shellTask->beforeScheduling(static fn (): int => 1 * 1); $shellTask->setScheduledAt(new DateTimeImmutable()); self::expectException(InvalidArgumentException::class); @@ -383,7 +383,7 @@ public function testShellTaskWithAfterSchedulingClosureCannotBeNormalized(): voi $objectNormalizer->setSerializer($serializer); $shellTask = new ShellTask('foo', ['echo', 'Symfony']); - $shellTask->afterScheduling(fn (): int => 1 * 1); + $shellTask->afterScheduling(static fn (): int => 1 * 1); $shellTask->setScheduledAt(new DateTimeImmutable()); self::expectException(InvalidArgumentException::class); @@ -455,7 +455,7 @@ public function testShellTaskWithBeforeExecutingClosureCannotBeNormalized(): voi $objectNormalizer->setSerializer($serializer); $shellTask = new ShellTask('foo', ['echo', 'Symfony']); - $shellTask->beforeExecuting(fn (): int => 1 * 1); + $shellTask->beforeExecuting(static fn (): int => 1 * 1); $shellTask->setScheduledAt(new DateTimeImmutable()); self::expectException(InvalidArgumentException::class); @@ -527,7 +527,7 @@ public function testShellTaskWithAfterExecutingClosureCannotBeNormalized(): void $objectNormalizer->setSerializer($serializer); $shellTask = new ShellTask('foo', ['echo', 'Symfony']); - $shellTask->afterExecuting(fn (): int => 1 * 1); + $shellTask->afterExecuting(static fn (): int => 1 * 1); $shellTask->setScheduledAt(new DateTimeImmutable()); self::expectException(InvalidArgumentException::class); diff --git a/tests/Task/Builder/CommandBuilderTest.php b/tests/Task/Builder/CommandBuilderTest.php index f6066f45..72de5253 100644 --- a/tests/Task/Builder/CommandBuilderTest.php +++ b/tests/Task/Builder/CommandBuilderTest.php @@ -10,10 +10,10 @@ use SchedulerBundle\Expression\CronExpressionBuilder; use SchedulerBundle\Expression\ExpressionBuilder; use SchedulerBundle\Expression\FluentExpressionBuilder; -use SchedulerBundle\Task\CommandTask; -use Symfony\Component\PropertyAccess\PropertyAccess; use SchedulerBundle\Task\Builder\CommandBuilder; +use SchedulerBundle\Task\CommandTask; use SchedulerBundle\Task\TaskInterface; +use Symfony\Component\PropertyAccess\PropertyAccess; /** * @author Guillaume Loulier diff --git a/tests/Task/Builder/HttpBuilderTest.php b/tests/Task/Builder/HttpBuilderTest.php index 2f7a0d33..1ec553c8 100644 --- a/tests/Task/Builder/HttpBuilderTest.php +++ b/tests/Task/Builder/HttpBuilderTest.php @@ -10,10 +10,10 @@ use SchedulerBundle\Expression\CronExpressionBuilder; use SchedulerBundle\Expression\ExpressionBuilder; use SchedulerBundle\Expression\FluentExpressionBuilder; -use SchedulerBundle\Task\HttpTask; -use Symfony\Component\PropertyAccess\PropertyAccess; use SchedulerBundle\Task\Builder\HttpBuilder; +use SchedulerBundle\Task\HttpTask; use SchedulerBundle\Task\TaskInterface; +use Symfony\Component\PropertyAccess\PropertyAccess; /** * @author Guillaume Loulier diff --git a/tests/Task/Builder/NullBuilderTest.php b/tests/Task/Builder/NullBuilderTest.php index 844a7219..855d8f5f 100644 --- a/tests/Task/Builder/NullBuilderTest.php +++ b/tests/Task/Builder/NullBuilderTest.php @@ -10,10 +10,10 @@ use SchedulerBundle\Expression\CronExpressionBuilder; use SchedulerBundle\Expression\ExpressionBuilder; use SchedulerBundle\Expression\FluentExpressionBuilder; -use SchedulerBundle\Task\NullTask; -use Symfony\Component\PropertyAccess\PropertyAccess; use SchedulerBundle\Task\Builder\NullBuilder; +use SchedulerBundle\Task\NullTask; use SchedulerBundle\Task\TaskInterface; +use Symfony\Component\PropertyAccess\PropertyAccess; /** * @author Guillaume Loulier diff --git a/tests/Task/Builder/ShellBuilderTest.php b/tests/Task/Builder/ShellBuilderTest.php index 386a8efd..36462566 100644 --- a/tests/Task/Builder/ShellBuilderTest.php +++ b/tests/Task/Builder/ShellBuilderTest.php @@ -10,10 +10,10 @@ use SchedulerBundle\Expression\CronExpressionBuilder; use SchedulerBundle\Expression\ExpressionBuilder; use SchedulerBundle\Expression\FluentExpressionBuilder; -use Symfony\Component\PropertyAccess\PropertyAccess; use SchedulerBundle\Task\Builder\ShellBuilder; use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Task\TaskInterface; +use Symfony\Component\PropertyAccess\PropertyAccess; /** * @author Guillaume Loulier diff --git a/tests/Task/CallbackTaskTest.php b/tests/Task/CallbackTaskTest.php index 11f430d0..5fe85936 100644 --- a/tests/Task/CallbackTaskTest.php +++ b/tests/Task/CallbackTaskTest.php @@ -15,7 +15,7 @@ final class CallbackTaskTest extends TestCase { public function testTaskCanBeCreatedWithValidCallable(): void { - $callbackTask = new CallbackTask(name: 'foo', callback: function (): void { + $callbackTask = new CallbackTask(name: 'foo', callback: static function (): void { (new FooService())->echo(); }); @@ -25,7 +25,7 @@ public function testTaskCanBeCreatedWithValidCallable(): void public function testTaskCanBeCreatedWithValidCallback(): void { - $callbackTask = new CallbackTask(name: 'foo', callback: function (): void { + $callbackTask = new CallbackTask(name: 'foo', callback: static function (): void { echo 'test'; }); @@ -34,20 +34,20 @@ public function testTaskCanBeCreatedWithValidCallback(): void public function testTaskCanBeCreatedWithCallbackAndChangeCallbackLater(): void { - $callbackTask = new CallbackTask(name: 'foo', callback: function (): void { + $callbackTask = new CallbackTask(name: 'foo', callback: static function (): void { echo 'test'; }); self::assertEmpty($callbackTask->getArguments()); - $callbackTask->setCallback(callback: function (): void { + $callbackTask->setCallback(callback: static function (): void { echo 'Symfony'; }); } public function testTaskCanBeCreatedWithValidCallbackAndArguments(): void { - $callbackTask = new CallbackTask(name: 'foo', callback: function (string $value): void { + $callbackTask = new CallbackTask(name: 'foo', callback: static function (string $value): void { echo $value; }, arguments: ['value' => 'test']); @@ -56,7 +56,7 @@ public function testTaskCanBeCreatedWithValidCallbackAndArguments(): void public function testTaskCanBeCreatedWithValidCallbackAndSetArgumentsLater(): void { - $callbackTask = new CallbackTask(name: 'foo', callback: function (string $value): void { + $callbackTask = new CallbackTask(name: 'foo', callback: static function (string $value): void { echo $value; }); $callbackTask->setArguments(arguments: ['value' => 'test']); diff --git a/tests/Task/LazyTaskListTest.php b/tests/Task/LazyTaskListTest.php index 683be2d8..e62ddd38 100644 --- a/tests/Task/LazyTaskListTest.php +++ b/tests/Task/LazyTaskListTest.php @@ -97,10 +97,10 @@ public function testListCanFilterTask(): void $lazyList = new LazyTaskList(new TaskList()); self::assertFalse($lazyList->isInitialized()); - self::assertCount(0, $lazyList->filter(static fn (TaskInterface $task): bool => $task->getExpression() === '@reboot')); + self::assertCount(0, $lazyList->filter(static fn (TaskInterface $task): bool => '@reboot' === $task->getExpression())); $lazyList->add(new NullTask('foo')); - $filteredLazyList = $lazyList->filter(static fn (TaskInterface $task): bool => $task->getExpression() === '* * * * *'); + $filteredLazyList = $lazyList->filter(static fn (TaskInterface $task): bool => '* * * * *' === $task->getExpression()); self::assertInstanceOf(LazyInterface::class, $filteredLazyList); self::assertTrue($filteredLazyList->isInitialized()); @@ -126,12 +126,12 @@ public function testListCannotWalkThroughEmptyList(): void $list = new LazyTaskList(new TaskList()); self::assertCount(0, $list); - $list->walk(function (TaskInterface $task): void { + $list->walk(static function (TaskInterface $task): void { $task->addTag('walk'); }); self::assertCount(0, $list); - $list->walk(function (TaskInterface $task): void { + $list->walk(static function (TaskInterface $task): void { $task->addTag('walk'); }); self::assertCount(0, $list); @@ -146,7 +146,7 @@ public function testListCanWalkThroughTask(): void $task = $list->get('foo'); self::assertCount(0, $task->getTags()); - $list->walk(function (TaskInterface $task): void { + $list->walk(static function (TaskInterface $task): void { $task->addTag('walk'); }); diff --git a/tests/Task/LazyTaskTest.php b/tests/Task/LazyTaskTest.php index c5b363e7..d1496f95 100644 --- a/tests/Task/LazyTaskTest.php +++ b/tests/Task/LazyTaskTest.php @@ -16,7 +16,7 @@ final class LazyTaskTest extends TestCase { public function testTaskCanReturnEmbeddedTask(): void { - $lazyTask = new LazyTask('foo', fn (): TaskInterface => new NullTask('foo')); + $lazyTask = new LazyTask('foo', static fn (): TaskInterface => new NullTask('foo')); self::assertSame('foo.lazy', $lazyTask->getName()); self::assertFalse($lazyTask->isInitialized()); diff --git a/tests/Task/NotificationTaskTest.php b/tests/Task/NotificationTaskTest.php index 95706e01..d469a5a9 100644 --- a/tests/Task/NotificationTaskTest.php +++ b/tests/Task/NotificationTaskTest.php @@ -5,9 +5,9 @@ namespace Tests\SchedulerBundle\Task; use PHPUnit\Framework\TestCase; +use SchedulerBundle\Task\NotificationTask; use Symfony\Component\Notifier\Notification\Notification; use Symfony\Component\Notifier\Recipient\Recipient; -use SchedulerBundle\Task\NotificationTask; /** * @author Guillaume Loulier diff --git a/tests/Task/NullTaskTest.php b/tests/Task/NullTaskTest.php index 1c3ee121..d1d77846 100644 --- a/tests/Task/NullTaskTest.php +++ b/tests/Task/NullTaskTest.php @@ -14,12 +14,14 @@ use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\TaskBag\AccessLockBag; use SchedulerBundle\TaskBag\NotificationTaskBag; + +use function sprintf; + use Symfony\Component\Lock\Key; use Symfony\Component\Notifier\Notification\Notification; use Symfony\Component\Notifier\Recipient\Recipient; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; -use function sprintf; +use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; /** * @author Guillaume Loulier diff --git a/tests/Task/ShellTaskTest.php b/tests/Task/ShellTaskTest.php index 111f9d5f..026bb4bc 100644 --- a/tests/Task/ShellTaskTest.php +++ b/tests/Task/ShellTaskTest.php @@ -81,7 +81,7 @@ public function testTaskCanBeCreatedWithSpecificEnvironmentVariablesAndChangedLa public function testTaskCanDefineBeforeSchedulingCallable(): void { $shellTask = new ShellTask('foo', ['echo', 'Symfony!']); - $shellTask->beforeScheduling(fn (): bool => false); + $shellTask->beforeScheduling(static fn (): bool => false); self::assertNotNull($shellTask->getBeforeScheduling()); } @@ -89,7 +89,7 @@ public function testTaskCanDefineBeforeSchedulingCallable(): void public function testTaskCanDefineAfterSchedulingCallable(): void { $shellTask = new ShellTask('foo', ['echo', 'Symfony!']); - $shellTask->afterScheduling(fn (): bool => false); + $shellTask->afterScheduling(static fn (): bool => false); self::assertNotNull($shellTask->getAfterScheduling()); } diff --git a/tests/Task/TaskBuilderTest.php b/tests/Task/TaskBuilderTest.php index c9797981..c557d6eb 100644 --- a/tests/Task/TaskBuilderTest.php +++ b/tests/Task/TaskBuilderTest.php @@ -6,13 +6,12 @@ use Generator; use PHPUnit\Framework\TestCase; +use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Expression\ComputedExpressionBuilder; use SchedulerBundle\Expression\CronExpressionBuilder; use SchedulerBundle\Expression\ExpressionBuilder; use SchedulerBundle\Expression\FluentExpressionBuilder; use SchedulerBundle\Task\Builder\BuilderInterface; -use Symfony\Component\PropertyAccess\PropertyAccess; -use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Task\Builder\CommandBuilder; use SchedulerBundle\Task\Builder\HttpBuilder; use SchedulerBundle\Task\Builder\NullBuilder; @@ -22,6 +21,7 @@ use SchedulerBundle\Task\NullTask; use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Task\TaskBuilder; +use Symfony\Component\PropertyAccess\PropertyAccess; /** * @author Guillaume Loulier diff --git a/tests/Task/TaskExecutionTrackerTest.php b/tests/Task/TaskExecutionTrackerTest.php index de13aae8..c58f67e9 100644 --- a/tests/Task/TaskExecutionTrackerTest.php +++ b/tests/Task/TaskExecutionTrackerTest.php @@ -9,10 +9,11 @@ use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Task\TaskExecutionTracker; use SchedulerBundle\Task\TaskInterface; -use Symfony\Component\Stopwatch\Stopwatch; use function sleep; +use Symfony\Component\Stopwatch\Stopwatch; + /** * @author Guillaume Loulier */ diff --git a/tests/Transport/Configuration/CacheConfigurationFactoryTest.php b/tests/Transport/Configuration/CacheConfigurationFactoryTest.php index 99f86485..46b77a6f 100644 --- a/tests/Transport/Configuration/CacheConfigurationFactoryTest.php +++ b/tests/Transport/Configuration/CacheConfigurationFactoryTest.php @@ -4,11 +4,11 @@ namespace Tests\SchedulerBundle\Transport\Configuration; +use Generator; use PHPUnit\Framework\TestCase; use SchedulerBundle\Transport\Configuration\CacheConfigurationFactory; use SchedulerBundle\Transport\Dsn; use Symfony\Component\Cache\Adapter\ArrayAdapter; -use Generator; use Symfony\Component\Serializer\Serializer; /** diff --git a/tests/Transport/Configuration/FiberConfigurationFactoryTest.php b/tests/Transport/Configuration/FiberConfigurationFactoryTest.php index b8ad89bb..b578a71c 100644 --- a/tests/Transport/Configuration/FiberConfigurationFactoryTest.php +++ b/tests/Transport/Configuration/FiberConfigurationFactoryTest.php @@ -4,6 +4,7 @@ namespace Tests\SchedulerBundle\Transport\Configuration; +use Generator; use PHPUnit\Framework\TestCase; use SchedulerBundle\Exception\RuntimeException; use SchedulerBundle\Transport\Configuration\CacheConfigurationFactory; @@ -12,7 +13,6 @@ use SchedulerBundle\Transport\Dsn; use Symfony\Component\Cache\Adapter\ArrayAdapter; use Symfony\Component\Serializer\SerializerInterface; -use Generator; use Throwable; /** diff --git a/tests/Transport/Configuration/FiberConfigurationTest.php b/tests/Transport/Configuration/FiberConfigurationTest.php index 7de5cb1f..f794006f 100644 --- a/tests/Transport/Configuration/FiberConfigurationTest.php +++ b/tests/Transport/Configuration/FiberConfigurationTest.php @@ -105,7 +105,7 @@ public function testConfigurationCanMapValues(): void $configuration->set('foo', 'bar'); $configuration->set('bar', 'foo'); - $mappedConfiguration = $configuration->map(fn (string $value): string => sprintf('%s_value', $value)); + $mappedConfiguration = $configuration->map(static fn (string $value): string => sprintf('%s_value', $value)); self::assertContains('bar_value', $mappedConfiguration); self::assertContains('foo_value', $mappedConfiguration); diff --git a/tests/Transport/Configuration/InMemoryConfigurationTest.php b/tests/Transport/Configuration/InMemoryConfigurationTest.php index ce1b06d3..17757778 100644 --- a/tests/Transport/Configuration/InMemoryConfigurationTest.php +++ b/tests/Transport/Configuration/InMemoryConfigurationTest.php @@ -111,7 +111,7 @@ public function testConfigurationCanMapValues(): void $configuration->set('foo', 'bar'); $configuration->set('bar', 'foo'); - $mappedConfiguration = $configuration->map(fn (string $value): string => sprintf('%s_value', $value)); + $mappedConfiguration = $configuration->map(static fn (string $value): string => sprintf('%s_value', $value)); self::assertContains('bar_value', $mappedConfiguration); self::assertContains('foo_value', $mappedConfiguration); diff --git a/tests/Transport/FiberTransportFactoryTest.php b/tests/Transport/FiberTransportFactoryTest.php index 77187ebb..44e6d7cb 100644 --- a/tests/Transport/FiberTransportFactoryTest.php +++ b/tests/Transport/FiberTransportFactoryTest.php @@ -4,6 +4,7 @@ namespace Tests\SchedulerBundle\Transport; +use Generator; use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; use SchedulerBundle\SchedulePolicy\BatchPolicy; @@ -23,7 +24,6 @@ use SchedulerBundle\Transport\InMemoryTransportFactory; use SchedulerBundle\Transport\TransportInterface; use Symfony\Component\Serializer\SerializerInterface; -use Generator; use Throwable; /** diff --git a/tests/Transport/FiberTransportTest.php b/tests/Transport/FiberTransportTest.php index efcc8b70..d622f4b7 100644 --- a/tests/Transport/FiberTransportTest.php +++ b/tests/Transport/FiberTransportTest.php @@ -5,6 +5,7 @@ namespace Tests\SchedulerBundle\Transport; use DateTimeImmutable; +use Generator; use PHPUnit\Framework\TestCase; use SchedulerBundle\Exception\InvalidArgumentException; use SchedulerBundle\Exception\LogicException; @@ -21,7 +22,6 @@ use SchedulerBundle\Transport\InMemoryTransport; use SchedulerBundle\Transport\TransportInterface; use Throwable; -use Generator; /** * @requires PHP 8.1 diff --git a/tests/Transport/FilesystemTransportTest.php b/tests/Transport/FilesystemTransportTest.php index 4757899c..1426a78d 100644 --- a/tests/Transport/FilesystemTransportTest.php +++ b/tests/Transport/FilesystemTransportTest.php @@ -5,28 +5,31 @@ namespace Tests\SchedulerBundle\Transport; use DateTimeImmutable; + +use function getcwd; + use PHPUnit\Framework\TestCase; +use SchedulerBundle\Exception\InvalidArgumentException; +use SchedulerBundle\Exception\LogicException; use SchedulerBundle\SchedulePolicy\FirstInFirstOutPolicy; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestrator; use SchedulerBundle\Serializer\AccessLockBagNormalizer; use SchedulerBundle\Serializer\NotificationTaskBagNormalizer; +use SchedulerBundle\Serializer\TaskNormalizer; use SchedulerBundle\Task\LazyTask; use SchedulerBundle\Task\LazyTaskList; +use SchedulerBundle\Task\NullTask; +use SchedulerBundle\Task\ShellTask; +use SchedulerBundle\Task\TaskInterface; use SchedulerBundle\Task\TaskList; use SchedulerBundle\Transport\Configuration\InMemoryConfiguration; +use SchedulerBundle\Transport\FilesystemTransport; use SchedulerBundle\Transport\TransportInterface; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor; use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; use Symfony\Component\PropertyInfo\PropertyInfoExtractor; -use SchedulerBundle\Exception\InvalidArgumentException; -use SchedulerBundle\Exception\LogicException; -use SchedulerBundle\Serializer\TaskNormalizer; -use SchedulerBundle\Task\NullTask; -use SchedulerBundle\Task\ShellTask; -use SchedulerBundle\Task\TaskInterface; -use SchedulerBundle\Transport\FilesystemTransport; use Symfony\Component\Serializer\Encoder\JsonEncoder; use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer; use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; @@ -35,9 +38,8 @@ use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; use Symfony\Component\Serializer\Serializer; use Symfony\Component\Serializer\SerializerInterface; -use Throwable; -use function getcwd; +use Throwable; /** * @author Guillaume Loulier diff --git a/tests/Transport/InMemoryTransportTest.php b/tests/Transport/InMemoryTransportTest.php index 2a8de87f..5240a0e0 100644 --- a/tests/Transport/InMemoryTransportTest.php +++ b/tests/Transport/InMemoryTransportTest.php @@ -20,11 +20,13 @@ use SchedulerBundle\Transport\Configuration\InMemoryConfiguration; use SchedulerBundle\Transport\InMemoryTransport; use SchedulerBundle\Transport\TransportInterface; -use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; -use Throwable; use function sprintf; +use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; + +use Throwable; + /** * @author Guillaume Loulier */ diff --git a/tests/Transport/LongTailTransportTest.php b/tests/Transport/LongTailTransportTest.php index bddb7f9c..8204a07c 100644 --- a/tests/Transport/LongTailTransportTest.php +++ b/tests/Transport/LongTailTransportTest.php @@ -4,8 +4,8 @@ namespace Tests\SchedulerBundle\Transport; -use RuntimeException; use PHPUnit\Framework\TestCase; +use RuntimeException; use SchedulerBundle\Exception\TransportException; use SchedulerBundle\SchedulePolicy\FirstInFirstOutPolicy; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestrator; diff --git a/tests/Transport/RoundRobinTransportTest.php b/tests/Transport/RoundRobinTransportTest.php index 7acfd298..6936bf69 100644 --- a/tests/Transport/RoundRobinTransportTest.php +++ b/tests/Transport/RoundRobinTransportTest.php @@ -4,8 +4,8 @@ namespace Tests\SchedulerBundle\Transport; -use RuntimeException; use PHPUnit\Framework\TestCase; +use RuntimeException; use SchedulerBundle\Exception\TransportException; use SchedulerBundle\SchedulePolicy\FirstInFirstOutPolicy; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestrator; diff --git a/tests/Worker/Assets/LongExecutionCommand.php b/tests/Worker/Assets/LongExecutionCommand.php index 1f0eddbc..dc796416 100644 --- a/tests/Worker/Assets/LongExecutionCommand.php +++ b/tests/Worker/Assets/LongExecutionCommand.php @@ -4,11 +4,12 @@ namespace Tests\SchedulerBundle\Worker\Assets; +use function sleep; + use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use function sleep; +use Symfony\Component\Console\Output\OutputInterface; /** * @author Guillaume Loulier diff --git a/tests/Worker/FiberWorkerTest.php b/tests/Worker/FiberWorkerTest.php index 2a362e6b..a33d6a30 100644 --- a/tests/Worker/FiberWorkerTest.php +++ b/tests/Worker/FiberWorkerTest.php @@ -525,11 +525,11 @@ public function testTaskCanBeExecutedWithBeforeExecutionCallback(): void public function testTaskCanBeExecutedWithErroredAfterExecutionCallback(): void { $task = new NullTask('foo', [ - 'after_executing' => fn (): bool => false, + 'after_executing' => static fn (): bool => false, ]); $validTask = new NullTask('bar', [ - 'after_executing' => fn (): bool => true, + 'after_executing' => static fn (): bool => true, ]); $logger = $this->createMock(LoggerInterface::class); @@ -1716,7 +1716,7 @@ public function testWorkerCanBePaused(): void $scheduler->schedule(new NullTask('foo')); $eventDispatcher = new EventDispatcher(); - $eventDispatcher->addListener(WorkerRunningEvent::class, function (WorkerRunningEvent $event): void { + $eventDispatcher->addListener(WorkerRunningEvent::class, static function (WorkerRunningEvent $event): void { $worker = $event->getWorker(); $configuration = $worker->getConfiguration(); @@ -1727,7 +1727,7 @@ public function testWorkerCanBePaused(): void $worker->pause(); }); - $eventDispatcher->addListener(WorkerPausedEvent::class, function (WorkerPausedEvent $event): void { + $eventDispatcher->addListener(WorkerPausedEvent::class, static function (WorkerPausedEvent $event): void { $worker = $event->getWorker(); self::assertFalse($worker->isRunning()); @@ -1772,7 +1772,7 @@ public function testWorkerCanBeRestarted(): void $scheduler->schedule(new NullTask('foo')); $eventDispatcher = new EventDispatcher(); - $eventDispatcher->addListener(WorkerRunningEvent::class, function (WorkerRunningEvent $event): void { + $eventDispatcher->addListener(WorkerRunningEvent::class, static function (WorkerRunningEvent $event): void { $worker = $event->getWorker(); $configuration = $worker->getConfiguration(); diff --git a/tests/Worker/WorkerTest.php b/tests/Worker/WorkerTest.php index aa8bd4a6..9358555f 100644 --- a/tests/Worker/WorkerTest.php +++ b/tests/Worker/WorkerTest.php @@ -11,8 +11,10 @@ use RuntimeException; use SchedulerBundle\Event\WorkerPausedEvent; use SchedulerBundle\Event\WorkerRunningEvent; -use SchedulerBundle\Middleware\NotifierMiddleware; +use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; +use SchedulerBundle\Exception\UndefinedRunnerException; use SchedulerBundle\Middleware\MaxExecutionMiddleware; +use SchedulerBundle\Middleware\NotifierMiddleware; use SchedulerBundle\Middleware\ProbeTaskMiddleware; use SchedulerBundle\Middleware\SchedulerMiddlewareStack; use SchedulerBundle\Middleware\SingleRunTaskMiddleware; @@ -23,20 +25,26 @@ use SchedulerBundle\Middleware\WorkerMiddlewareStack; use SchedulerBundle\Runner\CallbackTaskRunner; use SchedulerBundle\Runner\ChainedTaskRunner; +use SchedulerBundle\Runner\CommandTaskRunner; use SchedulerBundle\Runner\NullTaskRunner; use SchedulerBundle\Runner\ProbeTaskRunner; +use SchedulerBundle\Runner\RunnerInterface; use SchedulerBundle\Runner\RunnerRegistry; use SchedulerBundle\Runner\ShellTaskRunner; use SchedulerBundle\SchedulePolicy\FirstInFirstOutPolicy; use SchedulerBundle\SchedulePolicy\SchedulePolicyOrchestrator; use SchedulerBundle\Scheduler; use SchedulerBundle\Task\ChainedTask; -use SchedulerBundle\Runner\CommandTaskRunner; use SchedulerBundle\Task\CommandTask; use SchedulerBundle\Task\FailedTask; use SchedulerBundle\Task\NullTask; +use SchedulerBundle\Task\Output; use SchedulerBundle\Task\ProbeTask; +use SchedulerBundle\Task\ShellTask; use SchedulerBundle\Task\TaskExecutionTracker; +use SchedulerBundle\Task\TaskExecutionTrackerInterface; +use SchedulerBundle\Task\TaskInterface; +use SchedulerBundle\Task\TaskList; use SchedulerBundle\Task\TaskListInterface; use SchedulerBundle\TaskBag\AccessLockBag; use SchedulerBundle\TaskBag\NotificationTaskBag; @@ -44,20 +52,12 @@ use SchedulerBundle\Transport\InMemoryTransport; use SchedulerBundle\Worker\ExecutionPolicy\DefaultPolicy; use SchedulerBundle\Worker\ExecutionPolicy\ExecutionPolicyRegistry; +use SchedulerBundle\Worker\Worker; use SchedulerBundle\Worker\WorkerConfiguration; use SchedulerBundle\Worker\WorkerInterface; use Symfony\Component\Console\Application; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use SchedulerBundle\EventListener\StopWorkerOnTaskLimitSubscriber; -use SchedulerBundle\Exception\UndefinedRunnerException; -use SchedulerBundle\Runner\RunnerInterface; -use SchedulerBundle\Task\Output; -use SchedulerBundle\Task\ShellTask; -use SchedulerBundle\Task\TaskExecutionTrackerInterface; -use SchedulerBundle\Task\TaskInterface; -use SchedulerBundle\Task\TaskList; -use SchedulerBundle\Worker\Worker; use Symfony\Component\HttpClient\MockHttpClient; use Symfony\Component\HttpClient\Response\MockResponse; use Symfony\Component\Lock\Key; @@ -502,11 +502,11 @@ public function testTaskCanBeExecutedWithBeforeExecutionCallback(): void public function testTaskCanBeExecutedWithErroredAfterExecutionCallback(): void { $task = new NullTask('foo', [ - 'after_executing' => fn (): bool => false, + 'after_executing' => static fn (): bool => false, ]); $validTask = new NullTask('bar', [ - 'after_executing' => fn (): bool => true, + 'after_executing' => static fn (): bool => true, ]); $logger = $this->createMock(LoggerInterface::class); @@ -1627,7 +1627,7 @@ public function testWorkerCanBePaused(): void $scheduler->schedule(new NullTask('foo')); $eventDispatcher = new EventDispatcher(); - $eventDispatcher->addListener(WorkerRunningEvent::class, function (WorkerRunningEvent $event): void { + $eventDispatcher->addListener(WorkerRunningEvent::class, static function (WorkerRunningEvent $event): void { $worker = $event->getWorker(); $configuration = $worker->getConfiguration(); @@ -1638,7 +1638,7 @@ public function testWorkerCanBePaused(): void $worker->pause(); }); - $eventDispatcher->addListener(WorkerPausedEvent::class, function (WorkerPausedEvent $event): void { + $eventDispatcher->addListener(WorkerPausedEvent::class, static function (WorkerPausedEvent $event): void { $worker = $event->getWorker(); self::assertFalse($worker->isRunning()); @@ -1680,7 +1680,7 @@ public function testWorkerCanBeRestarted(): void $scheduler->schedule(new NullTask('foo')); $eventDispatcher = new EventDispatcher(); - $eventDispatcher->addListener(WorkerRunningEvent::class, function (WorkerRunningEvent $event): void { + $eventDispatcher->addListener(WorkerRunningEvent::class, static function (WorkerRunningEvent $event): void { $worker = $event->getWorker(); $configuration = $worker->getConfiguration();