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   A

Complexity

Total Complexity 17

Size/Duplication

Total Lines 95
Duplicated Lines 0 %

Test Coverage

Coverage 91.67%

Importance

Changes 0
Metric Value
eloc 44
dl 0
loc 95
ccs 44
cts 48
cp 0.9167
rs 10
c 0
b 0
f 0
wmc 17

6 Methods

Rating   Name   Duplication   Size   Complexity  
A removeStoppedProcessesFromFile() 0 6 4
A startNeededProcesses() 0 11 4
A handle() 0 6 1
A killNoLongerConfiguredQueueProcesses() 0 14 3
A __construct() 0 7 1
A killNoLongerNeededProcesses() 0 13 4
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