Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ProcessTest.php « CliMulti « Integration « PHPUnit « tests - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 61da75b9ed769ed33e6aaa50ce665014ef02a4d2 (plain)
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php
/**
 * Piwik - free/libre analytics platform
 *
 * @link https://matomo.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */

namespace Piwik\Tests\Integration\CliMulti;

use Piwik\CliMulti\Process;
use Piwik\Tests\Framework\Mock\File;
use ReflectionProperty;

/**
 * @group CliMulti
 */
class ProcessTest extends \PHPUnit_Framework_TestCase
{
    /**
     * @var Process
     */
    private $process;

    public function setUp()
    {
        parent::setUp();

        File::reset();
        $this->process = new Process('testPid');
    }

    public function tearDown()
    {
        if(is_object($this->process)){
            $this->process->finishProcess();
        }
        File::reset();
    }

    /**
     * @expectedException \Exception
     * @expectedExceptionMessage The given pid has an invalid format
     */
    public function test_construct_shouldFailInCasePidIsInvalid()
    {
        new Process('../../htaccess');
    }

    public function test_getPid()
    {
        $this->assertSame('testPid', $this->process->getPid());
    }

    public function test_construct_shouldBeNotStarted_IfPidJustCreated()
    {
        $this->assertFalse($this->process->hasStarted());
    }

    public function test_construct_shouldBeNotRunning_IfPidJustCreated()
    {
        if (! Process::isSupported()) {
            $this->markTestSkipped('Not supported');
        }

        $this->assertFalse($this->process->isRunning());
    }

    public function test_startProcess_finishProcess_ShouldMarkProcessAsStarted()
    {
        if (! Process::isSupported()) {
            $this->markTestSkipped('Not supported');
        }

        $this->assertFalse($this->process->isRunning());
        $this->assertFalse($this->process->hasStarted());
        $this->assertFalse($this->process->hasFinished());

        $this->process->startProcess();

        $this->assertTrue($this->process->isRunning());
        $this->assertTrue($this->process->hasStarted());
        $this->assertTrue($this->process->isRunning());
        $this->assertTrue($this->process->hasStarted());
        $this->assertFalse($this->process->hasFinished());

        $this->process->startProcess();

        $this->assertTrue($this->process->isRunning());
        $this->assertTrue($this->process->hasStarted());
        $this->assertFalse($this->process->hasFinished());

        $this->process->finishProcess();

        $this->assertFalse($this->process->isRunning());
        $this->assertTrue($this->process->hasStarted());
        $this->assertTrue($this->process->hasFinished());
    }

    public function test_isRunning_ShouldMarkProcessAsFinished_IfPidFileIsTooBig()
    {
        if (! Process::isSupported()) {
            $this->markTestSkipped('Not supported');
        }

        $this->process->startProcess();
        $this->assertTrue($this->process->isRunning());
        $this->assertFalse($this->process->hasFinished());

        File::setFileSize(505);

        $this->assertFalse($this->process->isRunning());
        $this->assertTrue($this->process->hasFinished());
    }

    public function test_finishProcess_ShouldNotThrowError_IfNotStartedBefore()
    {
        $this->process->finishProcess();

        $this->assertFalse($this->process->isRunning());
        $this->assertTrue($this->process->hasStarted());
        $this->assertTrue($this->process->hasFinished());
    }

    public function test_hasStarted()
    {
        $this->assertTrue($this->process->hasStarted(false));
        $this->assertTrue($this->process->hasStarted('6341'));

        $this->assertFalse($this->process->hasStarted(''));
    }

    public function test_getSecondsSinceCreation()
    {
        // This is not proper, but it avoids using sleep and stopping the tests for several seconds
        $r = new ReflectionProperty($this->process, 'timeCreation');
        $r->setAccessible(true);
        $r->setValue($this->process, time() - 2);

        $seconds = $this->process->getSecondsSinceCreation();

        $this->assertEquals(2, $seconds);
    }
}