Skip to content

Commit 79fe786

Browse files
committed
#26206 Improve the output, fix the implementation of array_merge() in foreach()
1 parent 1ca03a3 commit 79fe786

File tree

2 files changed

+44
-35
lines changed

2 files changed

+44
-35
lines changed

app/code/Magento/Indexer/Console/Command/IndexerReindexCommand.php

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66

77
namespace Magento\Indexer\Console\Command;
88

9+
use Magento\Framework\App\ObjectManagerFactory;
910
use Magento\Framework\Console\Cli;
1011
use Magento\Framework\Exception\LocalizedException;
1112
use Magento\Framework\Indexer\Config\DependencyInfoProvider;
13+
use Magento\Framework\Indexer\ConfigInterface;
1214
use Magento\Framework\Indexer\IndexerInterface;
1315
use Magento\Framework\Indexer\IndexerRegistry;
1416
use Magento\Framework\Indexer\StateInterface;
1517
use Symfony\Component\Console\Input\InputInterface;
1618
use Symfony\Component\Console\Output\OutputInterface;
17-
use Magento\Framework\Indexer\ConfigInterface;
18-
use Magento\Framework\App\ObjectManagerFactory;
1919

2020
/**
2121
* Command to run indexers
@@ -76,9 +76,11 @@ protected function execute(InputInterface $input, OutputInterface $output)
7676
{
7777
$returnValue = Cli::RETURN_FAILURE;
7878
foreach ($this->getIndexers($input) as $indexer) {
79-
$output->write($indexer->getTitle() . ' ');
8079
try {
8180
$this->validateIndexerStatus($indexer);
81+
82+
$output->write($indexer->getTitle() . ' index ');
83+
8284
$startTime = microtime(true);
8385
$indexerConfig = $this->getConfig()->getIndexer($indexer->getId());
8486
$sharedIndex = $indexerConfig['shared_index'];
@@ -93,16 +95,19 @@ protected function execute(InputInterface $input, OutputInterface $output)
9395
$resultTime = microtime(true) - $startTime;
9496

9597
$output->writeln(
96-
__('index has been rebuilt successfully in %time', ['time' => gmdate('H:i:s', $resultTime)])
98+
__('has been rebuilt successfully in %time', ['time' => gmdate('H:i:s', $resultTime)])
9799
);
98100
$returnValue = Cli::RETURN_SUCCESS;
99101
} catch (LocalizedException $e) {
100-
$output->writeln($e->getMessage());
102+
$output->writeln(__('exception: %message', ['message' => $e->getMessage()]));
101103
} catch (\Exception $e) {
102-
$output->writeln($indexer->getTitle() . ' indexer process unknown error:');
104+
$output->writeln('process unknown error:');
103105
$output->writeln($e->getMessage());
106+
107+
$output->writeln($e->getTraceAsString(), OutputInterface::VERBOSITY_DEBUG);
104108
}
105109
}
110+
106111
return $returnValue;
107112
}
108113

@@ -119,19 +124,17 @@ protected function getIndexers(InputInterface $input)
119124
return $indexers;
120125
}
121126

122-
$relatedIndexers = [];
123-
$dependentIndexers = [];
127+
$relatedIndexers = [[]];
128+
$dependentIndexers = [[]];
129+
124130
foreach ($indexers as $indexer) {
125-
$relatedIndexers = array_merge(
126-
$relatedIndexers,
127-
$this->getRelatedIndexerIds($indexer->getId())
128-
);
129-
$dependentIndexers = array_merge(
130-
$dependentIndexers,
131-
$this->getDependentIndexerIds($indexer->getId())
132-
);
131+
array_push($relatedIndexers, $this->getRelatedIndexerIds($indexer->getId()));
132+
array_push($dependentIndexers, $this->getDependentIndexerIds($indexer->getId()));
133133
}
134134

135+
$relatedIndexers = array_merge(...$relatedIndexers);
136+
$dependentIndexers = array_merge(...$dependentIndexers);
137+
135138
$invalidRelatedIndexers = [];
136139
foreach (array_unique($relatedIndexers) as $relatedIndexer) {
137140
if ($allIndexers[$relatedIndexer]->isInvalid()) {
@@ -161,15 +164,13 @@ protected function getIndexers(InputInterface $input)
161164
*/
162165
private function getRelatedIndexerIds(string $indexerId)
163166
{
164-
$relatedIndexerIds = [];
167+
$relatedIndexerIds = [[]];
165168
foreach ($this->getDependencyInfoProvider()->getIndexerIdsToRunBefore($indexerId) as $relatedIndexerId) {
166-
$relatedIndexerIds = array_merge(
167-
$relatedIndexerIds,
168-
[$relatedIndexerId],
169-
$this->getRelatedIndexerIds($relatedIndexerId)
170-
);
169+
array_push($relatedIndexerIds, [$relatedIndexerId], $this->getRelatedIndexerIds($relatedIndexerId));
171170
}
172171

172+
$relatedIndexerIds = array_merge(...$relatedIndexerIds);
173+
173174
return array_unique($relatedIndexerIds);
174175
}
175176

@@ -181,19 +182,15 @@ private function getRelatedIndexerIds(string $indexerId)
181182
*/
182183
private function getDependentIndexerIds(string $indexerId)
183184
{
184-
$dependentIndexerIds = [];
185+
$dependentIndexerIds = [[]];
185186
foreach (array_keys($this->getConfig()->getIndexers()) as $id) {
186187
$dependencies = $this->getDependencyInfoProvider()->getIndexerIdsToRunBefore($id);
187188
if (array_search($indexerId, $dependencies) !== false) {
188-
$dependentIndexerIds = array_merge(
189-
$dependentIndexerIds,
190-
[$id],
191-
$this->getDependentIndexerIds($id)
192-
);
189+
array_push($dependentIndexerIds, [$id], $this->getDependentIndexerIds($id));
193190
}
194191
}
195192

196-
return array_unique($dependentIndexerIds);
193+
return array_unique(array_merge(...$dependentIndexerIds));
197194
}
198195

199196
/**

app/code/Magento/Indexer/Test/Unit/Console/Command/IndexerReindexCommandTest.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
*/
2323
class IndexerReindexCommandTest extends AbstractIndexerCommandCommonSetup
2424
{
25+
const STUB_INDEXER_NAME = 'Indexer Name';
2526
/**
2627
* Command being tested
2728
*
@@ -107,7 +108,7 @@ public function testExecuteAll()
107108
[
108109
$this->getIndexerMock(
109110
['reindexAll', 'getStatus'],
110-
['indexer_id' => 'id_indexerOne', 'title' => 'Title_indexerOne']
111+
['indexer_id' => 'id_indexerOne', 'title' => self::STUB_INDEXER_NAME]
111112
)
112113
]
113114
);
@@ -117,7 +118,10 @@ public function testExecuteAll()
117118
$commandTester->execute([]);
118119
$actualValue = $commandTester->getDisplay();
119120
$this->assertSame(Cli::RETURN_SUCCESS, $commandTester->getStatusCode());
120-
$this->assertStringStartsWith('Title_indexerOne index has been rebuilt successfully in', $actualValue);
121+
$this->assertStringStartsWith(
122+
self::STUB_INDEXER_NAME . ' index has been rebuilt successfully in',
123+
$actualValue
124+
);
121125
}
122126

123127
/**
@@ -174,6 +178,7 @@ public function testExecuteWithIndex(
174178
$this->objectManagerFactory,
175179
$this->indexerRegistryMock
176180
);
181+
177182
$commandTester = new CommandTester($this->command);
178183
$commandTester->execute(['index' => $inputIndexers]);
179184
$this->assertSame(Cli::RETURN_SUCCESS, $commandTester->getStatusCode());
@@ -344,7 +349,8 @@ public function executeWithIndexDataProvider()
344349
],
345350
'With dependencies and multiple indexers in request' => [
346351
'inputIndexers' => [
347-
'indexer_1', 'indexer_3'
352+
'indexer_1',
353+
'indexer_3'
348354
],
349355
'indexers' => [
350356
'indexer_2' => [
@@ -405,7 +411,10 @@ public function executeWithIndexDataProvider()
405411
public function testExecuteWithLocalizedException()
406412
{
407413
$this->configureAdminArea();
408-
$indexerOne = $this->getIndexerMock(['reindexAll', 'getStatus'], ['indexer_id' => 'indexer_1']);
414+
$indexerOne = $this->getIndexerMock(
415+
['reindexAll', 'getStatus'],
416+
['indexer_id' => 'indexer_1', 'title' => self::STUB_INDEXER_NAME]
417+
);
409418
$localizedException = new LocalizedException(new Phrase('Some Exception Message'));
410419
$indexerOne->expects($this->once())->method('reindexAll')->will($this->throwException($localizedException));
411420
$this->initIndexerCollectionByItems([$indexerOne]);
@@ -414,7 +423,10 @@ public function testExecuteWithLocalizedException()
414423
$commandTester->execute(['index' => ['indexer_1']]);
415424
$actualValue = $commandTester->getDisplay();
416425
$this->assertSame(Cli::RETURN_FAILURE, $commandTester->getStatusCode());
417-
$this->assertStringStartsWith('Some Exception Message', $actualValue);
426+
$this->assertStringStartsWith(
427+
self::STUB_INDEXER_NAME . ' index exception: Some Exception Message',
428+
$actualValue
429+
);
418430
}
419431

420432
public function testExecuteWithException()
@@ -433,7 +445,7 @@ public function testExecuteWithException()
433445
$commandTester->execute(['index' => ['indexer_1']]);
434446
$actualValue = $commandTester->getDisplay();
435447
$this->assertSame(Cli::RETURN_FAILURE, $commandTester->getStatusCode());
436-
$this->assertStringStartsWith('Title_indexer_1' . ' indexer process unknown error:', $actualValue);
448+
$this->assertStringStartsWith('Title_indexer_1' . ' index process unknown error:', $actualValue);
437449
}
438450

439451
public function testExecuteWithExceptionInGetIndexers()

0 commit comments

Comments
 (0)