-
Notifications
You must be signed in to change notification settings - Fork 426
/
SchedulerTest.php
92 lines (85 loc) · 1.65 KB
/
SchedulerTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php declare(strict_types = 1);
namespace PHPStan\Parallel;
use PHPUnit\Framework\TestCase;
class SchedulerTest extends TestCase
{
public function dataSchedule(): array
{
return [
[
1,
16,
1,
50,
115,
1,
[50, 50, 15],
],
[
16,
16,
1,
30,
124,
5,
[30, 30, 30, 30, 4],
],
[
16,
3,
1,
30,
124,
3,
[30, 30, 30, 30, 4],
],
[
16,
16,
1,
10,
298,
16,
[10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 8],
],
[
16,
16,
2,
30,
124,
2,
[30, 30, 30, 30, 4],
],
];
}
/**
* @dataProvider dataSchedule
* @param int $cpuCores
* @param int $maximumNumberOfProcesses
* @param int $minimumNumberOfJobsPerProcess
* @param int $jobSize
* @param int $numberOfFiles
* @param int $expectedNumberOfProcesses
* @param array<int> $expectedJobSizes
*/
public function testSchedule(
int $cpuCores,
int $maximumNumberOfProcesses,
int $minimumNumberOfJobsPerProcess,
int $jobSize,
int $numberOfFiles,
int $expectedNumberOfProcesses,
array $expectedJobSizes
): void
{
$files = array_fill(0, $numberOfFiles, 'file.php');
$scheduler = new Scheduler($jobSize, $maximumNumberOfProcesses, $minimumNumberOfJobsPerProcess);
$schedule = $scheduler->scheduleWork($cpuCores, $files);
$this->assertSame($expectedNumberOfProcesses, $schedule->getNumberOfProcesses());
$jobSizes = array_map(static function (array $job): int {
return count($job);
}, $schedule->getJobs());
$this->assertSame($expectedJobSizes, $jobSizes);
}
}