Skip to content

Commit bbd90dc

Browse files
committed
MQE-2729: [PHP 8] Investigate and fix code related to changes in implode()
- update ParallelGroupSorter to avoid issues with 'asort' function
1 parent ebaac57 commit bbd90dc

File tree

2 files changed

+21
-20
lines changed

2 files changed

+21
-20
lines changed

dev/tests/unit/Magento/FunctionalTestFramework/Util/Sorter/ParallelGroupSorterTest.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ public function testBasicTestsSplitByTime(): void
4949
$actualResult = $testSorter->getTestsGroupedBySize([], $sampleTestArray, 200);
5050
$this->assertCount(5, $actualResult);
5151

52-
foreach ($actualResult as $gropuNumber => $actualTests) {
53-
$expectedTests = $expectedResult[$gropuNumber];
52+
foreach ($actualResult as $groupNumber => $actualTests) {
53+
$expectedTests = $expectedResult[$groupNumber];
5454
$this->assertEquals($expectedTests, array_keys($actualTests));
5555
}
5656
}
@@ -134,18 +134,18 @@ public function testBasicTestsSplitByGroup(): void
134134

135135
$expectedResult = [
136136
1 => ['test2', 'test8'],
137-
2 => ['test11', 'test9', 'test17', 'test19', 'test13'],
138-
3 => ['test7', 'test18', 'test14', 'test21'],
139-
4 => ['test6', 'test12', 'test20', 'test5', 'test10'],
140-
5 => ['test1', 'test16', 'test4', 'test3', 'test15']
137+
2 => ['test7', 'test18', 'test14', 'test21'],
138+
3 => ['test6', 'test12', 'test20', 'test5', 'test10'],
139+
4 => ['test1', 'test16', 'test4', 'test3', 'test15'],
140+
5 => ['test11', 'test9', 'test17', 'test19', 'test13'],
141141
];
142142

143143
$testSorter = new ParallelGroupSorter();
144144
$actualResult = $testSorter->getTestsGroupedByFixedGroupCount([], $sampleTestArray, 5);
145145
$this->assertCount(5, $actualResult);
146146

147-
foreach ($actualResult as $gropuNumber => $actualTests) {
148-
$expectedTests = $expectedResult[$gropuNumber];
147+
foreach ($actualResult as $groupNumber => $actualTests) {
148+
$expectedTests = $expectedResult[$groupNumber];
149149
$this->assertEquals($expectedTests, array_keys($actualTests));
150150
}
151151
}
@@ -178,8 +178,8 @@ public function testBasicTestsSplitByBigGroupNumber(): void
178178
$actualResult = $testSorter->getTestsGroupedByFixedGroupCount([], $sampleTestArray, 10);
179179
$this->assertCount(5, $actualResult);
180180

181-
foreach ($actualResult as $gropuNumber => $actualTests) {
182-
$expectedTests = $expectedResult[$gropuNumber];
181+
foreach ($actualResult as $groupNumber => $actualTests) {
182+
$expectedTests = $expectedResult[$groupNumber];
183183
$this->assertEquals($expectedTests, array_keys($actualTests));
184184
}
185185
}
@@ -208,8 +208,8 @@ public function testBasicTestsSplitByMinGroupNumber(): void
208208
$actualResult = $testSorter->getTestsGroupedByFixedGroupCount([], $sampleTestArray, 1);
209209
$this->assertCount(1, $actualResult);
210210

211-
foreach ($actualResult as $gropuNumber => $actualTests) {
212-
$expectedTests = $expectedResult[$gropuNumber];
211+
foreach ($actualResult as $groupNumber => $actualTests) {
212+
$expectedTests = $expectedResult[$groupNumber];
213213
$this->assertEquals($expectedTests, array_keys($actualTests));
214214
}
215215
}
@@ -274,14 +274,14 @@ public function testTestsAndSuitesSplitByGroup(): void
274274
$this->assertCount(15, $actualResult);
275275

276276
$expectedResults = [
277-
1 => ['test31', 'test8', 'test1'],
277+
1 => ['test31', 'test3'],
278278
2 => ['test6', 'test5'],
279279
3 => ['test33', 'test17'],
280280
4 => ['test25', 'test32'],
281281
5 => ['test7', 'test22'],
282282
6 => ['test10', 'test30'],
283283
7 => ['test29', 'test12'],
284-
8 => ['test13', 'test11', 'test3'],
284+
8 => ['test13', 'test11', 'test8', 'test1'],
285285
9 => ['test21', 'test26', 'test14'],
286286
10 => ['test24', 'test27', 'test18'],
287287
11 => ['test9', 'test4', 'test23'],

src/Magento/FunctionalTestingFramework/Util/Sorter/ParallelGroupSorter.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -215,16 +215,17 @@ private function getSuiteGroupCountFromGroupTime($suiteNameToTestSize, $time)
215215
private function splitTestsIntoGroups($tests, $groupCnt)
216216
{
217217
// Reverse sort the test array by size
218-
arsort($tests);
218+
uasort($tests, function ($a, $b) {
219+
return $a >= $b ? -1 : 1;
220+
});
219221
$groups = array_fill(0, $groupCnt, []);
222+
$sums = array_fill(0, $groupCnt, 0);
220223

221224
foreach ($tests as $test => $size) {
222-
for ($i = 0; $i < $groupCnt; $i++) {
223-
$sums[$i] = array_sum($groups[$i]);
224-
}
225-
asort($sums);
226225
// Always add the next test to the group with the smallest sum
227-
$groups[array_key_first($sums)][$test] = $size;
226+
$key = array_search(min($sums), $sums);
227+
$groups[$key][$test] = $size;
228+
$sums[$key] += $size;
228229
}
229230
// Filter empty array
230231
return array_filter($groups);

0 commit comments

Comments
 (0)