Skip to content

Commit 9c4cf85

Browse files
author
Mark Berube
committed
MC-5696: Fixing flaky QueueManagementTest
1 parent 4e470c1 commit 9c4cf85

File tree

1 file changed

+61
-23
lines changed

1 file changed

+61
-23
lines changed

dev/tests/integration/testsuite/Magento/MysqlMq/Model/QueueManagementTest.php

Lines changed: 61 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,26 @@ class QueueManagementTest extends \PHPUnit\Framework\TestCase
2323
protected function setUp()
2424
{
2525
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
26-
$this->queueManagement = $this->objectManager->create(\Magento\MysqlMq\Model\QueueManagement::class);
26+
$this->queueManagement = $this->objectManager->create(QueueManagement::class);
2727
}
2828

2929
/**
3030
* @magentoDataFixture Magento/MysqlMq/_files/queues.php
3131
*/
32-
public function testAllFlows()
32+
public function testMessageReading()
3333
{
34-
$this->queueManagement->addMessageToQueues('topic1', 'messageBody1', ['queue1', 'queue2']);
35-
$this->queueManagement->addMessageToQueues('topic2', 'messageBody2', ['queue2', 'queue3']);
36-
$this->queueManagement->addMessageToQueues('topic3', 'messageBody3', ['queue1', 'queue3']);
37-
$this->queueManagement->addMessageToQueues('topic4', 'messageBody4', ['queue1', 'queue2', 'queue3']);
34+
$this->queueManagement->addMessageToQueues('topic1', 'messageBody1', ['queue1']);
35+
$this->queueManagement->addMessageToQueues('topic2', 'messageBody2', ['queue1']);
36+
$this->queueManagement->addMessageToQueues('topic3', 'messageBody3', ['queue1']);
3837
$maxMessagesNumber = 2;
39-
$messages = $this->queueManagement->readMessages('queue3', $maxMessagesNumber);
38+
$messages = $this->queueManagement->readMessages('queue1', $maxMessagesNumber);
4039

4140
$this->assertCount($maxMessagesNumber, $messages);
4241

4342
$firstMessage = array_shift($messages);
44-
$this->assertEquals('topic2', $firstMessage[QueueManagement::MESSAGE_TOPIC]);
45-
$this->assertEquals('messageBody2', $firstMessage[QueueManagement::MESSAGE_BODY]);
46-
$this->assertEquals('queue3', $firstMessage[QueueManagement::MESSAGE_QUEUE_NAME]);
43+
$this->assertEquals('topic1', $firstMessage[QueueManagement::MESSAGE_TOPIC]);
44+
$this->assertEquals('messageBody1', $firstMessage[QueueManagement::MESSAGE_BODY]);
45+
$this->assertEquals('queue1', $firstMessage[QueueManagement::MESSAGE_QUEUE_NAME]);
4746
$this->assertEquals(
4847
QueueManagement::MESSAGE_STATUS_IN_PROGRESS,
4948
$firstMessage[QueueManagement::MESSAGE_STATUS]
@@ -55,9 +54,9 @@ public function testAllFlows()
5554
$this->assertCount(12, date_parse($firstMessage[QueueManagement::MESSAGE_UPDATED_AT]));
5655

5756
$secondMessage = array_shift($messages);
58-
$this->assertEquals('topic3', $secondMessage[QueueManagement::MESSAGE_TOPIC]);
59-
$this->assertEquals('messageBody3', $secondMessage[QueueManagement::MESSAGE_BODY]);
60-
$this->assertEquals('queue3', $secondMessage[QueueManagement::MESSAGE_QUEUE_NAME]);
57+
$this->assertEquals('topic2', $secondMessage[QueueManagement::MESSAGE_TOPIC]);
58+
$this->assertEquals('messageBody2', $secondMessage[QueueManagement::MESSAGE_BODY]);
59+
$this->assertEquals('queue1', $secondMessage[QueueManagement::MESSAGE_QUEUE_NAME]);
6160
$this->assertEquals(
6261
QueueManagement::MESSAGE_STATUS_IN_PROGRESS,
6362
$secondMessage[QueueManagement::MESSAGE_STATUS]
@@ -67,35 +66,74 @@ public function testAllFlows()
6766
$this->assertTrue(is_numeric($secondMessage[QueueManagement::MESSAGE_QUEUE_RELATION_ID]));
6867
$this->assertEquals(0, $secondMessage[QueueManagement::MESSAGE_NUMBER_OF_TRIALS]);
6968
$this->assertCount(12, date_parse($secondMessage[QueueManagement::MESSAGE_UPDATED_AT]));
69+
}
70+
71+
/**
72+
* @magentoDataFixture Magento/MysqlMq/_files/queues.php
73+
*/
74+
public function testChangingMessageStatus()
75+
{
76+
$this->queueManagement->addMessageToQueues('topic1', 'messageBody1', ['queue1']);
77+
$this->queueManagement->addMessageToQueues('topic2', 'messageBody2', ['queue1']);
78+
$this->queueManagement->addMessageToQueues('topic3', 'messageBody3', ['queue1']);
79+
$this->queueManagement->addMessageToQueues('topic4', 'messageBody4', ['queue1']);
80+
81+
$maxMessagesNumber = 4;
82+
$messages = $this->queueManagement->readMessages('queue1', $maxMessagesNumber);
83+
$this->assertCount($maxMessagesNumber, $messages);
84+
85+
$firstMessage = array_shift($messages);
86+
$secondMessage = array_shift($messages);
87+
$thirdMessage = array_shift($messages);
88+
$fourthMessage = array_shift($messages);
89+
90+
$this->queueManagement->changeStatus(
91+
[
92+
$firstMessage[QueueManagement::MESSAGE_QUEUE_RELATION_ID]
93+
],
94+
QueueManagement::MESSAGE_STATUS_ERROR
95+
);
7096

71-
/** Mark one message as complete or failed and make sure it is not displayed in the list of read messages */
7297
$this->queueManagement->changeStatus(
7398
[
7499
$secondMessage[QueueManagement::MESSAGE_QUEUE_RELATION_ID]
75100
],
76101
QueueManagement::MESSAGE_STATUS_COMPLETE
77102
);
78-
$messages = $this->queueManagement->readMessages('queue3', $maxMessagesNumber);
79-
$this->assertCount(1, $messages);
80103

81104
$this->queueManagement->changeStatus(
82105
[
83-
$firstMessage[QueueManagement::MESSAGE_QUEUE_RELATION_ID]
106+
$thirdMessage[QueueManagement::MESSAGE_QUEUE_RELATION_ID]
84107
],
85-
QueueManagement::MESSAGE_STATUS_ERROR
108+
QueueManagement::MESSAGE_STATUS_NEW
109+
);
110+
111+
$this->queueManagement->changeStatus(
112+
[
113+
$fourthMessage[QueueManagement::MESSAGE_QUEUE_RELATION_ID]
114+
],
115+
QueueManagement::MESSAGE_STATUS_RETRY_REQUIRED
86116
);
87-
$messages = $this->queueManagement->readMessages('queue3', $maxMessagesNumber);
88-
$this->assertCount(0, $messages);
89117

90-
/** Ensure that message for retry is still accessible when reading messages from the queue */
91-
$messages = $this->queueManagement->readMessages('queue2', 1);
118+
$messages = $this->queueManagement->readMessages('queue1');
119+
$this->assertCount(2, $messages);
120+
}
121+
122+
/**
123+
* @magentoDataFixture Magento/MysqlMq/_files/queues.php
124+
*/
125+
public function testMessageRetry()
126+
{
127+
$this->queueManagement->addMessageToQueues('topic1', 'messageBody1', ['queue1']);
128+
129+
$messages = $this->queueManagement->readMessages('queue1', 1);
92130
$message = array_shift($messages);
93131
$messageRelationId = $message[QueueManagement::MESSAGE_QUEUE_RELATION_ID];
94132

95133
for ($i = 0; $i < 2; $i++) {
96134
$this->assertEquals($i, $message[QueueManagement::MESSAGE_NUMBER_OF_TRIALS]);
97135
$this->queueManagement->pushToQueueForRetry($message[QueueManagement::MESSAGE_QUEUE_RELATION_ID]);
98-
$messages = $this->queueManagement->readMessages('queue2', 1);
136+
$messages = $this->queueManagement->readMessages('queue1', 1);
99137
$message = array_shift($messages);
100138
$this->assertEquals($messageRelationId, $message[QueueManagement::MESSAGE_QUEUE_RELATION_ID]);
101139
}

0 commit comments

Comments
 (0)