Skip to content

Commit e4d71d1

Browse files
authored
Merge branch '2.4-develop' into paypalflowpro-graphql
2 parents 3c9406d + 12cdc54 commit e4d71d1

File tree

52 files changed

+2886
-331
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+2886
-331
lines changed

app/code/Magento/MessageQueue/Model/Cron/ConsumersRunner.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,12 @@ private function canBeRun(ConsumerConfigItemInterface $consumerConfig, array $al
176176
return false;
177177
}
178178

179-
if ($consumerConfig->getOnlySpawnWhenMessageAvailable()) {
179+
$globalOnlySpawnWhenMessageAvailable = (bool)$this->deploymentConfig->get(
180+
'queue/only_spawn_when_message_available',
181+
true
182+
);
183+
if ($consumerConfig->getOnlySpawnWhenMessageAvailable() === true
184+
|| ($consumerConfig->getOnlySpawnWhenMessageAvailable() === null && $globalOnlySpawnWhenMessageAvailable)) {
180185
try {
181186
return $this->checkIsAvailableMessages->execute(
182187
$connectionName,

app/code/Magento/MessageQueue/Test/Unit/Model/Cron/ConsumersRunnerTest.php

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -146,22 +146,21 @@ public function testRun(
146146
) {
147147
$consumerName = 'consumerName';
148148

149-
$this->deploymentConfigMock->expects($this->exactly(3))
149+
$this->deploymentConfigMock
150150
->method('get')
151151
->willReturnMap(
152152
[
153153
['cron_consumers_runner/cron_run', true, true],
154154
['cron_consumers_runner/max_messages', 10000, $maxMessages],
155155
['cron_consumers_runner/consumers', [], $allowedConsumers],
156+
['queue/only_spawn_when_message_available', null, 0],
156157
]
157158
);
158159

159160
/** @var ConsumerConfigInterface|MockObject $firstCunsumer */
160161
$consumer = $this->getMockBuilder(ConsumerConfigItemInterface::class)
161162
->getMockForAbstractClass();
162-
$consumer->expects($this->any())
163-
->method('getName')
164-
->willReturn($consumerName);
163+
$consumer->method('getName')->willReturn($consumerName);
165164

166165
$this->phpExecutableFinderMock->expects($this->once())
167166
->method('find')
@@ -276,39 +275,42 @@ public function runDataProvider()
276275
* @param boolean $onlySpawnWhenMessageAvailable
277276
* @param boolean $isMassagesAvailableInTheQueue
278277
* @param int $shellBackgroundExpects
278+
* @param boolean $globalOnlySpawnWhenMessageAvailable
279+
* @param int $getOnlySpawnWhenMessageAvailableCallCount
280+
* @param int $isMassagesAvailableInTheQueueCallCount
279281
* @dataProvider runBasedOnOnlySpawnWhenMessageAvailableConsumerConfigurationDataProvider
280282
*/
281283
public function testRunBasedOnOnlySpawnWhenMessageAvailableConsumerConfiguration(
282284
$onlySpawnWhenMessageAvailable,
283285
$isMassagesAvailableInTheQueue,
284-
$shellBackgroundExpects
286+
$shellBackgroundExpects,
287+
$globalOnlySpawnWhenMessageAvailable,
288+
$getOnlySpawnWhenMessageAvailableCallCount,
289+
$isMassagesAvailableInTheQueueCallCount
285290
) {
286291
$consumerName = 'consumerName';
287292
$connectionName = 'connectionName';
288293
$queueName = 'queueName';
289-
$this->deploymentConfigMock->expects($this->exactly(3))
294+
$this->deploymentConfigMock->expects($this->exactly(4))
290295
->method('get')
291296
->willReturnMap(
292297
[
293298
['cron_consumers_runner/cron_run', true, true],
294299
['cron_consumers_runner/max_messages', 10000, 1000],
295300
['cron_consumers_runner/consumers', [], []],
301+
['queue/only_spawn_when_message_available', true, $globalOnlySpawnWhenMessageAvailable],
296302
]
297303
);
298304

299305
/** @var ConsumerConfigInterface|MockObject $firstCunsumer */
300306
$consumer = $this->getMockBuilder(ConsumerConfigItemInterface::class)
301307
->getMockForAbstractClass();
302-
$consumer->expects($this->any())
303-
->method('getName')
304-
->willReturn($consumerName);
308+
$consumer->method('getName')->willReturn($consumerName);
305309
$consumer->expects($this->once())
306310
->method('getConnection')
307311
->willReturn($connectionName);
308-
$consumer->expects($this->any())
309-
->method('getQueue')
310-
->willReturn($queueName);
311-
$consumer->expects($this->once())
312+
$consumer->method('getQueue')->willReturn($queueName);
313+
$consumer->expects($this->exactly($getOnlySpawnWhenMessageAvailableCallCount))
312314
->method('getOnlySpawnWhenMessageAvailable')
313315
->willReturn($onlySpawnWhenMessageAvailable);
314316
$this->consumerConfigMock->expects($this->once())
@@ -323,7 +325,7 @@ public function testRunBasedOnOnlySpawnWhenMessageAvailableConsumerConfiguration
323325
->method('isLocked')
324326
->willReturn(false);
325327

326-
$this->checkIsAvailableMessagesMock->expects($this->exactly((int)$onlySpawnWhenMessageAvailable))
328+
$this->checkIsAvailableMessagesMock->expects($this->exactly($isMassagesAvailableInTheQueueCallCount))
327329
->method('execute')
328330
->willReturn($isMassagesAvailableInTheQueue);
329331

@@ -342,24 +344,51 @@ public function runBasedOnOnlySpawnWhenMessageAvailableConsumerConfigurationData
342344
[
343345
'onlySpawnWhenMessageAvailable' => true,
344346
'isMassagesAvailableInTheQueue' => true,
345-
'shellBackgroundExpects' => 1
347+
'shellBackgroundExpects' => 1,
348+
'globalOnlySpawnWhenMessageAvailable' => false,
349+
'getOnlySpawnWhenMessageAvailableCallCount' => 1,
350+
'isMassagesAvailableInTheQueueCallCount' => 1
346351
],
347352
[
348353
'onlySpawnWhenMessageAvailable' => true,
349354
'isMassagesAvailableInTheQueue' => false,
350-
'shellBackgroundExpects' => 0
355+
'shellBackgroundExpects' => 0,
356+
'globalOnlySpawnWhenMessageAvailable' => false,
357+
'getOnlySpawnWhenMessageAvailableCallCount' => 1,
358+
'isMassagesAvailableInTheQueueCallCount' => 1
351359
],
352360
[
353361
'onlySpawnWhenMessageAvailable' => false,
354362
'isMassagesAvailableInTheQueue' => true,
355-
'shellBackgroundExpects' => 1
363+
'shellBackgroundExpects' => 1,
364+
'globalOnlySpawnWhenMessageAvailable' => false,
365+
'getOnlySpawnWhenMessageAvailableCallCount' => 2,
366+
'isMassagesAvailableInTheQueueCallCount' => 0
367+
],
368+
[
369+
'onlySpawnWhenMessageAvailable' => null,
370+
'isMassagesAvailableInTheQueue' => true,
371+
'shellBackgroundExpects' => 1,
372+
'globalOnlySpawnWhenMessageAvailable' => true,
373+
'getOnlySpawnWhenMessageAvailableCallCount' => 2,
374+
'isMassagesAvailableInTheQueueCallCount' => 1
375+
],
376+
[
377+
'onlySpawnWhenMessageAvailable' => null,
378+
'isMassagesAvailableInTheQueue' => true,
379+
'shellBackgroundExpects' => 1,
380+
'globalOnlySpawnWhenMessageAvailable' => false,
381+
'getOnlySpawnWhenMessageAvailableCallCount' => 2,
382+
'isMassagesAvailableInTheQueueCallCount' => 0
356383
],
357384
[
358385
'onlySpawnWhenMessageAvailable' => false,
359-
'isMassagesAvailableInTheQueue' => false,
360-
'shellBackgroundExpects' => 1
386+
'isMassagesAvailableInTheQueue' => true,
387+
'shellBackgroundExpects' => 1,
388+
'globalOnlySpawnWhenMessageAvailable' => true,
389+
'getOnlySpawnWhenMessageAvailableCallCount' => 2,
390+
'isMassagesAvailableInTheQueueCallCount' => 0
361391
],
362-
363392
];
364393
}
365394
}

0 commit comments

Comments
 (0)