GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Test Failed
Push — master ( 6cc7af...0b819b )
by Peter
03:09
created

EnsureProcesses::startNeededProcesses()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 4

Importance

Changes 0
Metric Value
cc 4
eloc 8
nc 4
nop 0
dl 0
loc 11
ccs 9
cts 9
cp 1
crap 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Webparking\QueueEnsurer\Commands;
4
5
use Illuminate\Console\Command;
6
use Webparking\QueueEnsurer\Config\ConfigReader;
7
use Webparking\QueueEnsurer\PidsFile\ContentsManager;
8
use Webparking\QueueEnsurer\Processes\ProcessManager;
9
10
class EnsureProcesses extends Command
11
{
12
    protected $signature = 'queue:ensure-processes';
13
14
    protected $description = 'Ensure queue processes.';
15
16
    /**
17
     * @var ContentsManager
18
     */
19
    private $contentsManager;
20
21
    /**
22
     * @var ProcessManager
23
     */
24
    private $processManager;
25
26
    /**
27
     * @var ConfigReader
28
     */
29
    private $configReader;
30
31 5
    public function __construct(ContentsManager $contentsManager, ProcessManager $processManager, ConfigReader $configReader)
32
    {
33 5
        $this->contentsManager = $contentsManager;
34 5
        $this->processManager = $processManager;
35 5
        $this->configReader = $configReader;
36
37 5
        parent::__construct();
38 5
    }
39
40 5
    public function handle(): void
41
    {
42 5
        $this->removeStoppedProcessesFromFile();
43 5
        $this->killNoLongerConfiguredQueueProcesses();
44 5
        $this->killNoLongerNeededProcesses();
45 5
        $this->startNeededProcesses();
46 5
    }
47
48 5
    private function removeStoppedProcessesFromFile(): void
49
    {
50 5
        foreach ($this->contentsManager->getQueueNames() as $queueName) {
51 3
            foreach ($this->contentsManager->getPids($queueName) as $processId) {
52 3
                if (!$this->processManager->isStillRunning($processId)) {
53 3
                    $this->contentsManager->removePid($queueName, $processId);
54
                }
55
            }
56
        }
57 5
    }
58
59 5
    private function killNoLongerConfiguredQueueProcesses(): void
60
    {
61 5
        $queuesToKill = array_diff(
62 5
            $this->contentsManager->getQueueNames(),
63 5
            $this->configReader->getQueueNames()
64
        );
65
66 5
        foreach ($queuesToKill as $queueName) {
67 1
            foreach ($this->contentsManager->getPids($queueName) as $processId) {
68 1
                $this->processManager->killProcess($processId);
69 1
                $this->contentsManager->removePid($queueName, $processId);
70
            }
71
72 1
            $this->contentsManager->removeQueue($queueName);
73
        }
74 5
    }
75
76 5
    private function killNoLongerNeededProcesses(): void
77
    {
78 5
        foreach ($this->configReader->getQueueNames() as $queueName) {
79 4
            $configuredAmount = $this->configReader->getConfiguredAmount($queueName);
80 4
            $amountOfProcesses = \count($this->contentsManager->getPids($queueName));
81
82 4
            if ($configuredAmount < $amountOfProcesses) {
83
                foreach (\array_slice(
84
                    $this->contentsManager->getPids($queueName),
85
                    $configuredAmount - $amountOfProcesses
86
                ) as $processId) {
87
                    $this->processManager->killProcess($processId);
88 4
                    $this->contentsManager->removePid($queueName, $processId);
89
                }
90
            }
91
        }
92 5
    }
93
94 5
    private function startNeededProcesses(): void
95
    {
96 5
        foreach ($this->configReader->getQueueNames() as $queueName) {
97 4
            $configuredAmount = $this->configReader->getConfiguredAmount($queueName);
98 4
            $amountOfProcesses = \count($this->contentsManager->getPids($queueName));
99
100 4
            if ($configuredAmount > $amountOfProcesses) {
101 4
                for ($i = 1; $i <= ($configuredAmount - $amountOfProcesses); ++$i) {
102 2
                    $this->contentsManager->addPid(
103 2
                        $queueName,
104 2
                        $this->processManager->startProcess($queueName)
105
                    );
106
                }
107
            }
108
        }
109 5
    }
110
}
111