|
14 | 14 | use PHPUnit\Framework\TestCase;
|
15 | 15 | use Symfony\Component\Messenger\Bridge\Redis\Tests\Fixtures\DummyMessage;
|
16 | 16 | use Symfony\Component\Messenger\Bridge\Redis\Transport\Connection;
|
| 17 | +use Symfony\Component\Messenger\Bridge\Redis\Transport\RedisReceiver; |
| 18 | +use Symfony\Component\Messenger\Envelope; |
17 | 19 | use Symfony\Component\Messenger\Exception\TransportException;
|
| 20 | +use Symfony\Component\Messenger\Transport\Serialization\Serializer; |
18 | 21 |
|
19 | 22 | /**
|
20 | 23 | * @requires extension redis
|
| 24 | + * |
21 | 25 | * @group time-sensitive
|
22 | 26 | * @group integration
|
23 | 27 | */
|
@@ -318,6 +322,30 @@ public function testGetAfterReject()
|
318 | 322 | $redis->del('messenger-rejectthenget');
|
319 | 323 | }
|
320 | 324 |
|
| 325 | + public function testItProperlyHandlesEmptyMessages() |
| 326 | + { |
| 327 | + $redisReceiver = new RedisReceiver($this->connection, new Serializer()); |
| 328 | + |
| 329 | + $this->connection->add('{"message": "Hi1"}', ['type' => DummyMessage::class]); |
| 330 | + $this->connection->add('{"message": "Hi2"}', ['type' => DummyMessage::class]); |
| 331 | + |
| 332 | + $redisReceiver->get(); |
| 333 | + $this->redis->xtrim('messages', 1); |
| 334 | + |
| 335 | + // The consumer died during handling a message while performing xtrim in parallel process |
| 336 | + $this->redis = new \Redis(); |
| 337 | + $this->connection = Connection::fromDsn(getenv('MESSENGER_REDIS_DSN'), ['delete_after_ack' => true], $this->redis); |
| 338 | + $redisReceiver = new RedisReceiver($this->connection, new Serializer()); |
| 339 | + |
| 340 | + /** @var Envelope[] $envelope */ |
| 341 | + $envelope = $redisReceiver->get(); |
| 342 | + $this->assertCount(1, $envelope); |
| 343 | + |
| 344 | + $message = $envelope[0]->getMessage(); |
| 345 | + $this->assertInstanceOf(DummyMessage::class, $message); |
| 346 | + $this->assertEquals('Hi2', $message->getMessage()); |
| 347 | + } |
| 348 | + |
321 | 349 | private function getConnectionGroup(Connection $connection): string
|
322 | 350 | {
|
323 | 351 | $property = (new \ReflectionClass(Connection::class))->getProperty('group');
|
|
0 commit comments