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::killNoLongerNeededProcesses()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 13
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 5.024

Importance

Changes 0
Metric Value
cc 4
eloc 10
nc 4
nop 0
dl 0
loc 13
ccs 6
cts 10
cp 0.6
crap 5.024
rs 9.9332
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