| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?php
- namespace Test\Michel\PQueue\Command;
- use Michel\PQueue\Command\PQueueWorkerRunCommand;
- use Michel\PQueue\PQueueConsumer;
- use Michel\PQueue\Transport\FilesystemTransport;
- use Michel\UniTester\TestCase;
- use Michel\Console\CommandParser;
- use Michel\Console\CommandRunner;
- use Michel\Console\InputInterface;
- use Michel\Console\Output;
- use Michel\Console\OutputInterface;
- class PQueueWorkerRunCommandTest extends TestCase
- {
- private string $transportDir;
- protected function setUp(): void
- {
- $this->transportDir = sys_get_temp_dir() . '/pqueue_test_' . uniqid();
- if (!is_dir($this->transportDir)) {
- mkdir($this->transportDir);
- }
- }
- protected function tearDown(): void
- {
- if (is_dir($this->transportDir)) {
- $this->recursiveRemove($this->transportDir);
- }
- }
- private function recursiveRemove(string $dir): void
- {
- $files = array_diff(scandir($dir), ['.', '..']);
- foreach ($files as $file) {
- (is_dir("$dir/$file")) ? $this->recursiveRemove("$dir/$file") : unlink("$dir/$file");
- }
- rmdir($dir);
- }
- protected function execute(): void
- {
- $this->testExecute();
- $this->testExecuteWithAllOptions();
- }
- public function testExecute()
- {
- $transport = new FilesystemTransport($this->transportDir);
- $consumer = new PQueueConsumer([]);
- $runner = new CommandRunner([
- new PQueueWorkerRunCommand($consumer, $transport),
- ]);
- $out = [];
- $code = $runner->run(new CommandParser(['', 'pqueue:worker:run', '--stop-when-empty']), new Output(function ($message) use (&$out) {
- $out[] = $message;
- }));
- $this->assertEquals(0, $code);
- $this->assertCount(31, $out);
- }
- public function testExecuteWithAllOptions()
- {
- $transport = new FilesystemTransport($this->transportDir);
- $consumer = new PQueueConsumer([]);
- $runner = new CommandRunner([
- new PQueueWorkerRunCommand($consumer, $transport),
- ]);
- $out = [];
- $code = $runner->run(new CommandParser([
- '',
- 'pqueue:worker:run',
- '--stop-when-empty',
- '--sleep=1',
- '--memory-limit=128',
- '--time-limit=60',
- '--max-retries=1',
- '--retry-delay=1',
- '--retry-multiplier=1',
- '--message-delay=10'
- ]), new Output(function ($message) use (&$out) {
- $out[] = $message;
- }));
- $this->assertEquals(0, $code);
- $this->assertCount(31, $out);
- }
- }
|