Passed
Push — master ( 9792fc...04e5e0 )
by Tim
06:59
created

TestFreeSpaceTest::testFreeSpaceAvailable()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 8
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 13
rs 10
1
<?php
2
3
namespace SimpleSAML\Module\monitor\Test;
4
5
use SimpleSAML\Module\monitor\TestCase;
6
use SimpleSAML\Module\monitor\TestData;
7
use SimpleSAML\Module\monitor\State;
8
9
/**
10
 * Tests for TestCase\FileSystem\FreeSpace
11
 */
12
class TestFreeSpaceTest extends \PHPUnit\Framework\TestCase
13
{
14
    public function testFreeSpaceAvailable(): void
15
    {
16
        // /tmp/testdisk will be 1MB
17
        $testData = new TestData([
18
            'path' => '/tmp/testdisk',
19
            'category' => 'Test disk',
20
        ]);
21
        $spaceTest = new TestCase\FileSystem\FreeSpace($testData);
22
        $testResult = $spaceTest->getTestResult();
23
        $freePercentage = $testResult->getOutput('free_percentage');
24
25
        $this->assertGreaterThanOrEqual(15, $freePercentage);
26
        $this->assertEquals(State::OK, $testResult->getState());
27
    }
28
29
    public function testFreeSpaceAlmostOut(): void
30
    {
31
        // Fill /tmp/testdisk for 90%
32
        $free = (disk_free_space('/tmp/testdisk') / 100) * 90;
33
        file_put_contents('/tmp/testdisk/90percent.txt', str_repeat('a', (int)$free));
34
35
        $testData = new TestData([
36
            'path' => '/tmp/testdisk',
37
            'category' => 'Test disk',
38
        ]);
39
        $spaceTest = new TestCase\FileSystem\FreeSpace($testData);
40
        $testResult = $spaceTest->getTestResult();
41
        $freePercentage = $testResult->getOutput('free_percentage');
42
43
        $this->assertGreaterThanOrEqual(5.0, $freePercentage);
44
        $this->assertLessThan(15.0, $freePercentage);
45
        $this->assertEquals(State::WARNING, $testResult->getState());
46
47
        unlink('/tmp/testdisk/90percent.txt');
48
    }
49
50
    public function testFreeSpaceOut(): void
51
    {
52
        // Fill /tmp/testdisk for 99%
53
        $free = (disk_free_space('/tmp/testdisk') / 100) * 99;
54
        file_put_contents('/tmp/testdisk/99percent.txt', str_repeat('b', (int)$free));
55
56
        $testData = new TestData([
57
            'path' => '/tmp/testdisk',
58
            'category' => 'Test disk',
59
        ]);
60
        $spaceTest = new TestCase\FileSystem\FreeSpace($testData);
61
        $testResult = $spaceTest->getTestResult();
62
        $freePercentage = $testResult->getOutput('free_percentage');
63
64
        $this->assertLessThan(5.0, $freePercentage);
65
        $this->assertEquals(State::ERROR, $testResult->getState());
66
67
        unlink('/tmp/testdisk/99percent.txt');
68
    }
69
}
70