From 720aaf1c3efd51ce5f499fa9483a25c22d78ec5e Mon Sep 17 00:00:00 2001 From: "Alexander M. Turek" Date: Tue, 14 Sep 2021 20:33:19 +0200 Subject: [PATCH 1/3] Pin ext-redis version in CI Signed-off-by: Alexander M. Turek --- .github/workflows/unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 50ac8d124d2a1..d69730aafe10a 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -15,7 +15,7 @@ jobs: runs-on: Ubuntu-20.04 env: - extensions: amqp,apcu,igbinary,intl,mbstring,memcached,mongodb,redis + extensions: amqp,apcu,igbinary,intl,mbstring,memcached,mongodb,redis-5.3.4 strategy: matrix: From 9cd33131057fd8b454f47f608c7f12f830942a1f Mon Sep 17 00:00:00 2001 From: "Alexander M. Turek" Date: Tue, 14 Sep 2021 19:26:58 +0200 Subject: [PATCH 2/3] [Messenger] Fix broken Redis mocks --- .../Bridge/Redis/Tests/Transport/ConnectionTest.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php index 836228e5f0c88..36cdb1bb418e2 100644 --- a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php @@ -78,7 +78,7 @@ public function testFromDsnWithTls() $redis->expects($this->once()) ->method('connect') ->with('tls://127.0.0.1', 6379) - ->willReturn(null); + ->willReturn(true); Connection::fromDsn('redis://127.0.0.1?tls=1', [], $redis); } @@ -92,7 +92,7 @@ public function testFromDsnWithTlsOption() $redis->expects($this->once()) ->method('connect') ->with('tls://127.0.0.1', 6379) - ->willReturn(null); + ->willReturn(true); Connection::fromDsn('redis://127.0.0.1', ['tls' => true], $redis); } @@ -103,7 +103,7 @@ public function testFromDsnWithRedissScheme() $redis->expects($this->once()) ->method('connect') ->with('tls://127.0.0.1', 6379) - ->willReturn(null); + ->willReturn(true); Connection::fromDsn('rediss://127.0.0.1?delete_after_ack=true', [], $redis); } @@ -315,7 +315,7 @@ public function testMaxEntries() $redis->expects($this->exactly(1))->method('xadd') ->with('queue', '*', ['message' => '{"body":"1","headers":[]}'], 20000, true) - ->willReturn(1); + ->willReturn('1'); $connection = Connection::fromDsn('redis://localhost/queue?stream_max_entries=20000', ['delete_after_ack' => true], $redis); $connection->add('1', []); @@ -365,7 +365,7 @@ public function testLastErrorGetsCleared() { $redis = $this->createMock(\Redis::class); - $redis->expects($this->once())->method('xadd')->willReturn(0); + $redis->expects($this->once())->method('xadd')->willReturn('0'); $redis->expects($this->once())->method('xack')->willReturn(0); $redis->method('getLastError')->willReturnOnConsecutiveCalls('xadd error', 'xack error'); From 9c7cdfc82e6d8d81d493437775c9099ff0bdfafb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Armin=20Be=C5=A1irovi=C4=87?= Date: Tue, 6 Jul 2021 16:48:14 +0200 Subject: [PATCH 3/3] Pass envelope to message handler as second __invoke parameter --- src/Symfony/Component/Messenger/CHANGELOG.md | 1 + .../Middleware/HandleMessageMiddleware.php | 2 +- .../Middleware/HandleMessageMiddlewareTest.php | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Messenger/CHANGELOG.md b/src/Symfony/Component/Messenger/CHANGELOG.md index 889207a17400d..cda45c9a34d85 100644 --- a/src/Symfony/Component/Messenger/CHANGELOG.md +++ b/src/Symfony/Component/Messenger/CHANGELOG.md @@ -6,6 +6,7 @@ CHANGELOG * Add `StopWorkerExceptionInterface` and its implementation `StopWorkerException` to stop the worker. * Add support for resetting container services after each messenger message. + * Add message envelope to handler `__invoke()` calls 5.3 --- diff --git a/src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php b/src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php index eaf6b9508017b..f83ff96e18d5f 100644 --- a/src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php +++ b/src/Symfony/Component/Messenger/Middleware/HandleMessageMiddleware.php @@ -60,7 +60,7 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope try { $handler = $handlerDescriptor->getHandler(); - $handledStamp = HandledStamp::fromDescriptor($handlerDescriptor, $handler($message)); + $handledStamp = HandledStamp::fromDescriptor($handlerDescriptor, $handler($message, $envelope)); $envelope = $envelope->with($handledStamp); $this->logger->info('Message {class} handled by {handler}', $context + ['handler' => $handledStamp->getHandlerName()]); } catch (\Throwable $e) { diff --git a/src/Symfony/Component/Messenger/Tests/Middleware/HandleMessageMiddlewareTest.php b/src/Symfony/Component/Messenger/Tests/Middleware/HandleMessageMiddlewareTest.php index c33bad5137d8c..2c57aebff2c80 100644 --- a/src/Symfony/Component/Messenger/Tests/Middleware/HandleMessageMiddlewareTest.php +++ b/src/Symfony/Component/Messenger/Tests/Middleware/HandleMessageMiddlewareTest.php @@ -40,6 +40,22 @@ public function testItCallsTheHandlerAndNextMiddleware() $middleware->handle($envelope, $this->getStackMock()); } + public function testHandlerWithEnvelopeInConstructor() + { + $message = new DummyMessage('Hey'); + $envelope = new Envelope($message); + + $handler = $this->createPartialMock(HandleMessageMiddlewareTestCallable::class, ['__invoke']); + + $middleware = new HandleMessageMiddleware(new HandlersLocator([ + DummyMessage::class => [$handler], + ])); + + $handler->expects($this->once())->method('__invoke')->with($message, $envelope); + + $middleware->handle($envelope, $this->getStackMock()); + } + /** * @dataProvider itAddsHandledStampsProvider */