diff options
Diffstat (limited to 'tests/lib/MemoryInfoTest.php')
-rw-r--r-- | tests/lib/MemoryInfoTest.php | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/tests/lib/MemoryInfoTest.php b/tests/lib/MemoryInfoTest.php new file mode 100644 index 00000000000..13e46c96601 --- /dev/null +++ b/tests/lib/MemoryInfoTest.php @@ -0,0 +1,92 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace Test; + +use OC\MemoryInfo; +use PHPUnit\Framework\MockObject\MockObject; + +/** + * This class provides tests for the MemoryInfo class. + */ +class MemoryInfoTest extends TestCase { + /** + * The "memory_limit" value before tests. + * + * @var string + */ + private $iniSettingBeforeTest; + + /** + * @beforeClass + */ + public function backupMemoryInfoIniSetting() { + $this->iniSettingBeforeTest = ini_get('memory_limit'); + } + + /** + * @afterClass + */ + public function restoreMemoryInfoIniSetting() { + ini_set('memory_limit', $this->iniSettingBeforeTest); + } + + public static function getMemoryLimitTestData(): array { + return [ + 'unlimited' => ['-1', -1,], + '524288000 bytes' => ['524288000', 524288000,], + '500M' => ['500M', 524288000,], + '512000K' => ['512000K', 524288000,], + '2G' => ['2G', 2147483648,], + ]; + } + + /** + * Tests that getMemoryLimit works as expected. + * + * @param string $iniValue The "memory_limit" ini data. + * @param int|float $expected The expected detected memory limit. + */ + #[\PHPUnit\Framework\Attributes\DataProvider('getMemoryLimitTestData')] + public function testMemoryLimit(string $iniValue, int|float $expected): void { + ini_set('memory_limit', $iniValue); + $memoryInfo = new MemoryInfo(); + self::assertEquals($expected, $memoryInfo->getMemoryLimit()); + } + + public static function getSufficientMemoryTestData(): array { + return [ + 'unlimited' => [-1, true,], + '512M' => [512 * 1024 * 1024, true,], + '1G' => [1024 * 1024 * 1024, true,], + '256M' => [256 * 1024 * 1024, false,], + ]; + } + + /** + * Tests that isMemoryLimitSufficient returns the correct values. + * + * @param int $memoryLimit The memory limit + * @param bool $expected If the memory limit is sufficient. + */ + #[\PHPUnit\Framework\Attributes\DataProvider('getSufficientMemoryTestData')] + public function testIsMemoryLimitSufficient(int $memoryLimit, bool $expected): void { + /* @var MemoryInfo|MockObject $memoryInfo */ + $memoryInfo = $this->getMockBuilder(MemoryInfo::class) + ->onlyMethods(['getMemoryLimit',]) + ->getMock(); + + $memoryInfo + ->method('getMemoryLimit') + ->willReturn($memoryLimit); + + $isMemoryLimitSufficient = $memoryInfo->isMemoryLimitSufficient(); + self::assertEquals($expected, $isMemoryLimitSufficient); + } +} |