Code Duplication    Length = 93-93 lines in 2 locations

src/Checker/Command.php 1 location

@@ 13-105 (lines=93) @@
10
 *
11
 * @package Simplario\Checker\Checker
12
 */
13
class Command extends AbstractChecker
14
{
15
    /**
16
     * @var string
17
     */
18
    protected $target = 'command';
19
20
    /**
21
     * @param string $command
22
     *
23
     * @return string
24
     */
25
    protected function runCommand($command)
26
    {
27
        $output = '';
28
        $process = popen($command, 'r');
29
        while (!feof($process)) {
30
            $t = fread($process, 4096);
31
            $output .= $t;
32
        }
33
        pclose($process);
34
35
        $output = strtr($output, ["\n" => ' ', "\r" => ' ', "\t" => ' ']);
36
        $output = trim($output);
37
38
        return $output;
39
    }
40
41
    /**
42
     * @param string  $name
43
     * @param boolean $expectExists
44
     * @param array   $task
45
     *
46
     * @throws FailException
47
     * @throws SuccessException
48
     */
49
    protected function testExists($name, $expectExists, array $task)
50
    {
51
        $output = $this->runCommand("which {$name}");
52
53
        if (!empty($output) === $expectExists) {
54
            throw new SuccessException('Ok', $task);
55
        }
56
57
        $msg = $expectExists ? "Service '{$name}' is not exists'" : "Service '{$name}' is exists";
58
59
        throw new FailException($msg, $task);
60
    }
61
62
    /**
63
     * @param string  $name
64
     * @param boolean $expectWhich
65
     * @param array   $task
66
     *
67
     * @throws FailException
68
     * @throws SuccessException
69
     */
70
    protected function testWhich($name, $expectWhich, array $task)
71
    {
72
        $output = $this->runCommand("which {$name}");
73
74
        if ($output === $expectWhich) {
75
            throw new SuccessException('Ok', $task);
76
        }
77
78
        $msg = "Service '{$name}' expected: '{$expectWhich}', but have {$output}";
79
80
        throw new FailException($msg, $task);
81
    }
82
83
    /**
84
     * @param string $name
85
     * @param string $version
86
     * @param array  $task
87
     *
88
     * @throws FailException
89
     * @throws SuccessException
90
     */
91
    protected function testVersion($name, $version, array $task)
92
    {
93
        $output = $this->runCommand("{$name} -version");
94
95
        $pattern = "/{$version}/i";
96
97
        if (preg_match($pattern, $output)) {
98
            throw new SuccessException('Ok', $task);
99
        }
100
101
        $msg = "Service '{$name}' version fail '{$version}'";
102
103
        throw new FailException($msg, $task);
104
    }
105
}
106

src/Checker/Service.php 1 location

@@ 13-105 (lines=93) @@
10
 *
11
 * @package Simplario\Checker\Checker
12
 */
13
class Service extends AbstractChecker
14
{
15
    /**
16
     * @var string
17
     */
18
    protected $target = 'name';
19
20
    /**
21
     * @param string $command
22
     *
23
     * @return string
24
     */
25
    protected function runCommand($command)
26
    {
27
        $output = '';
28
        $process = popen($command, 'r');
29
        while (!feof($process)) {
30
            $t = fread($process, 4096);
31
            $output .= $t;
32
        }
33
        pclose($process);
34
35
        $output = strtr($output, ["\n" => ' ', "\r" => ' ', "\t" => ' ']);
36
        $output = trim($output);
37
38
        return $output;
39
    }
40
41
    /**
42
     * @param string  $name
43
     * @param boolean $expectExists
44
     * @param array   $task
45
     *
46
     * @throws FailException
47
     * @throws SuccessException
48
     */
49
    protected function testExists($name, $expectExists, array $task)
50
    {
51
        $output = $this->runCommand("which {$name}");
52
53
        if (!empty($output) === $expectExists) {
54
            throw new SuccessException('Ok', $task);
55
        }
56
57
        $msg = $expectExists ? "Service '{$name}' is not exists'" : "Service '{$name}' is exists";
58
59
        throw new FailException($msg, $task);
60
    }
61
62
    /**
63
     * @param string  $name
64
     * @param boolean $expectWhich
65
     * @param array   $task
66
     *
67
     * @throws FailException
68
     * @throws SuccessException
69
     */
70
    protected function testWhich($name, $expectWhich, array $task)
71
    {
72
        $output = $this->runCommand("which {$name}");
73
74
        if ($output === $expectWhich) {
75
            throw new SuccessException('Ok', $task);
76
        }
77
78
        $msg = "Service '{$name}' expected: '{$expectWhich}', but have {$output}";
79
80
        throw new FailException($msg, $task);
81
    }
82
83
    /**
84
     * @param string $name
85
     * @param string $version
86
     * @param array  $task
87
     *
88
     * @throws FailException
89
     * @throws SuccessException
90
     */
91
    protected function testVersion($name, $version, array $task)
92
    {
93
        $output = $this->runCommand("{$name} -version || {$name} -v || {$name} --version");
94
95
        $pattern = "/{$version}/i";
96
97
        if (preg_match($pattern, $output)) {
98
            throw new SuccessException('Ok', $task);
99
        }
100
101
        $msg = "Service '{$name}' version fail '{$version}'";
102
103
        throw new FailException($msg, $task);
104
    }
105
}
106