@@ -23,27 +23,26 @@ class QueueManagementTest extends \PHPUnit\Framework\TestCase
23
23
protected function setUp ()
24
24
{
25
25
$ 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);
27
27
}
28
28
29
29
/**
30
30
* @magentoDataFixture Magento/MysqlMq/_files/queues.php
31
31
*/
32
- public function testAllFlows ()
32
+ public function testMessageReading ()
33
33
{
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 ' ]);
38
37
$ maxMessagesNumber = 2 ;
39
- $ messages = $ this ->queueManagement ->readMessages ('queue3 ' , $ maxMessagesNumber );
38
+ $ messages = $ this ->queueManagement ->readMessages ('queue1 ' , $ maxMessagesNumber );
40
39
41
40
$ this ->assertCount ($ maxMessagesNumber , $ messages );
42
41
43
42
$ 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 ]);
47
46
$ this ->assertEquals (
48
47
QueueManagement::MESSAGE_STATUS_IN_PROGRESS ,
49
48
$ firstMessage [QueueManagement::MESSAGE_STATUS ]
@@ -55,9 +54,9 @@ public function testAllFlows()
55
54
$ this ->assertCount (12 , date_parse ($ firstMessage [QueueManagement::MESSAGE_UPDATED_AT ]));
56
55
57
56
$ 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 ]);
61
60
$ this ->assertEquals (
62
61
QueueManagement::MESSAGE_STATUS_IN_PROGRESS ,
63
62
$ secondMessage [QueueManagement::MESSAGE_STATUS ]
@@ -67,35 +66,74 @@ public function testAllFlows()
67
66
$ this ->assertTrue (is_numeric ($ secondMessage [QueueManagement::MESSAGE_QUEUE_RELATION_ID ]));
68
67
$ this ->assertEquals (0 , $ secondMessage [QueueManagement::MESSAGE_NUMBER_OF_TRIALS ]);
69
68
$ 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
+ );
70
96
71
- /** Mark one message as complete or failed and make sure it is not displayed in the list of read messages */
72
97
$ this ->queueManagement ->changeStatus (
73
98
[
74
99
$ secondMessage [QueueManagement::MESSAGE_QUEUE_RELATION_ID ]
75
100
],
76
101
QueueManagement::MESSAGE_STATUS_COMPLETE
77
102
);
78
- $ messages = $ this ->queueManagement ->readMessages ('queue3 ' , $ maxMessagesNumber );
79
- $ this ->assertCount (1 , $ messages );
80
103
81
104
$ this ->queueManagement ->changeStatus (
82
105
[
83
- $ firstMessage [QueueManagement::MESSAGE_QUEUE_RELATION_ID ]
106
+ $ thirdMessage [QueueManagement::MESSAGE_QUEUE_RELATION_ID ]
84
107
],
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
86
116
);
87
- $ messages = $ this ->queueManagement ->readMessages ('queue3 ' , $ maxMessagesNumber );
88
- $ this ->assertCount (0 , $ messages );
89
117
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 );
92
130
$ message = array_shift ($ messages );
93
131
$ messageRelationId = $ message [QueueManagement::MESSAGE_QUEUE_RELATION_ID ];
94
132
95
133
for ($ i = 0 ; $ i < 2 ; $ i ++) {
96
134
$ this ->assertEquals ($ i , $ message [QueueManagement::MESSAGE_NUMBER_OF_TRIALS ]);
97
135
$ this ->queueManagement ->pushToQueueForRetry ($ message [QueueManagement::MESSAGE_QUEUE_RELATION_ID ]);
98
- $ messages = $ this ->queueManagement ->readMessages ('queue2 ' , 1 );
136
+ $ messages = $ this ->queueManagement ->readMessages ('queue1 ' , 1 );
99
137
$ message = array_shift ($ messages );
100
138
$ this ->assertEquals ($ messageRelationId , $ message [QueueManagement::MESSAGE_QUEUE_RELATION_ID ]);
101
139
}
0 commit comments