Skip to content

Commit

Permalink
Merge branch '2.4-develop' into paypalflowpro-graphql
Browse files Browse the repository at this point in the history
  • Loading branch information
avattam06 committed Jul 31, 2020
2 parents 3c9406d + 12cdc54 commit e4d71d1
Show file tree
Hide file tree
Showing 52 changed files with 2,886 additions and 331 deletions.
7 changes: 6 additions & 1 deletion app/code/Magento/MessageQueue/Model/Cron/ConsumersRunner.php
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,12 @@ private function canBeRun(ConsumerConfigItemInterface $consumerConfig, array $al
return false;
}

if ($consumerConfig->getOnlySpawnWhenMessageAvailable()) {
$globalOnlySpawnWhenMessageAvailable = (bool)$this->deploymentConfig->get(
'queue/only_spawn_when_message_available',
true
);
if ($consumerConfig->getOnlySpawnWhenMessageAvailable() === true
|| ($consumerConfig->getOnlySpawnWhenMessageAvailable() === null && $globalOnlySpawnWhenMessageAvailable)) {
try {
return $this->checkIsAvailableMessages->execute(
$connectionName,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,22 +146,21 @@ public function testRun(
) {
$consumerName = 'consumerName';

$this->deploymentConfigMock->expects($this->exactly(3))
$this->deploymentConfigMock
->method('get')
->willReturnMap(
[
['cron_consumers_runner/cron_run', true, true],
['cron_consumers_runner/max_messages', 10000, $maxMessages],
['cron_consumers_runner/consumers', [], $allowedConsumers],
['queue/only_spawn_when_message_available', null, 0],
]
);

/** @var ConsumerConfigInterface|MockObject $firstCunsumer */
$consumer = $this->getMockBuilder(ConsumerConfigItemInterface::class)
->getMockForAbstractClass();
$consumer->expects($this->any())
->method('getName')
->willReturn($consumerName);
$consumer->method('getName')->willReturn($consumerName);

$this->phpExecutableFinderMock->expects($this->once())
->method('find')
Expand Down Expand Up @@ -276,39 +275,42 @@ public function runDataProvider()
* @param boolean $onlySpawnWhenMessageAvailable
* @param boolean $isMassagesAvailableInTheQueue
* @param int $shellBackgroundExpects
* @param boolean $globalOnlySpawnWhenMessageAvailable
* @param int $getOnlySpawnWhenMessageAvailableCallCount
* @param int $isMassagesAvailableInTheQueueCallCount
* @dataProvider runBasedOnOnlySpawnWhenMessageAvailableConsumerConfigurationDataProvider
*/
public function testRunBasedOnOnlySpawnWhenMessageAvailableConsumerConfiguration(
$onlySpawnWhenMessageAvailable,
$isMassagesAvailableInTheQueue,
$shellBackgroundExpects
$shellBackgroundExpects,
$globalOnlySpawnWhenMessageAvailable,
$getOnlySpawnWhenMessageAvailableCallCount,
$isMassagesAvailableInTheQueueCallCount
) {
$consumerName = 'consumerName';
$connectionName = 'connectionName';
$queueName = 'queueName';
$this->deploymentConfigMock->expects($this->exactly(3))
$this->deploymentConfigMock->expects($this->exactly(4))
->method('get')
->willReturnMap(
[
['cron_consumers_runner/cron_run', true, true],
['cron_consumers_runner/max_messages', 10000, 1000],
['cron_consumers_runner/consumers', [], []],
['queue/only_spawn_when_message_available', true, $globalOnlySpawnWhenMessageAvailable],
]
);

/** @var ConsumerConfigInterface|MockObject $firstCunsumer */
$consumer = $this->getMockBuilder(ConsumerConfigItemInterface::class)
->getMockForAbstractClass();
$consumer->expects($this->any())
->method('getName')
->willReturn($consumerName);
$consumer->method('getName')->willReturn($consumerName);
$consumer->expects($this->once())
->method('getConnection')
->willReturn($connectionName);
$consumer->expects($this->any())
->method('getQueue')
->willReturn($queueName);
$consumer->expects($this->once())
$consumer->method('getQueue')->willReturn($queueName);
$consumer->expects($this->exactly($getOnlySpawnWhenMessageAvailableCallCount))
->method('getOnlySpawnWhenMessageAvailable')
->willReturn($onlySpawnWhenMessageAvailable);
$this->consumerConfigMock->expects($this->once())
Expand All @@ -323,7 +325,7 @@ public function testRunBasedOnOnlySpawnWhenMessageAvailableConsumerConfiguration
->method('isLocked')
->willReturn(false);

$this->checkIsAvailableMessagesMock->expects($this->exactly((int)$onlySpawnWhenMessageAvailable))
$this->checkIsAvailableMessagesMock->expects($this->exactly($isMassagesAvailableInTheQueueCallCount))
->method('execute')
->willReturn($isMassagesAvailableInTheQueue);

Expand All @@ -342,24 +344,51 @@ public function runBasedOnOnlySpawnWhenMessageAvailableConsumerConfigurationData
[
'onlySpawnWhenMessageAvailable' => true,
'isMassagesAvailableInTheQueue' => true,
'shellBackgroundExpects' => 1
'shellBackgroundExpects' => 1,
'globalOnlySpawnWhenMessageAvailable' => false,
'getOnlySpawnWhenMessageAvailableCallCount' => 1,
'isMassagesAvailableInTheQueueCallCount' => 1
],
[
'onlySpawnWhenMessageAvailable' => true,
'isMassagesAvailableInTheQueue' => false,
'shellBackgroundExpects' => 0
'shellBackgroundExpects' => 0,
'globalOnlySpawnWhenMessageAvailable' => false,
'getOnlySpawnWhenMessageAvailableCallCount' => 1,
'isMassagesAvailableInTheQueueCallCount' => 1
],
[
'onlySpawnWhenMessageAvailable' => false,
'isMassagesAvailableInTheQueue' => true,
'shellBackgroundExpects' => 1
'shellBackgroundExpects' => 1,
'globalOnlySpawnWhenMessageAvailable' => false,
'getOnlySpawnWhenMessageAvailableCallCount' => 2,
'isMassagesAvailableInTheQueueCallCount' => 0
],
[
'onlySpawnWhenMessageAvailable' => null,
'isMassagesAvailableInTheQueue' => true,
'shellBackgroundExpects' => 1,
'globalOnlySpawnWhenMessageAvailable' => true,
'getOnlySpawnWhenMessageAvailableCallCount' => 2,
'isMassagesAvailableInTheQueueCallCount' => 1
],
[
'onlySpawnWhenMessageAvailable' => null,
'isMassagesAvailableInTheQueue' => true,
'shellBackgroundExpects' => 1,
'globalOnlySpawnWhenMessageAvailable' => false,
'getOnlySpawnWhenMessageAvailableCallCount' => 2,
'isMassagesAvailableInTheQueueCallCount' => 0
],
[
'onlySpawnWhenMessageAvailable' => false,
'isMassagesAvailableInTheQueue' => false,
'shellBackgroundExpects' => 1
'isMassagesAvailableInTheQueue' => true,
'shellBackgroundExpects' => 1,
'globalOnlySpawnWhenMessageAvailable' => true,
'getOnlySpawnWhenMessageAvailableCallCount' => 2,
'isMassagesAvailableInTheQueueCallCount' => 0
],

];
}
}
Loading

0 comments on commit e4d71d1

Please sign in to comment.