diff options
Diffstat (limited to 'tests/lib/Memcache/RedisTest.php')
-rw-r--r-- | tests/lib/Memcache/RedisTest.php | 50 |
1 files changed, 41 insertions, 9 deletions
diff --git a/tests/lib/Memcache/RedisTest.php b/tests/lib/Memcache/RedisTest.php index e7bb9c29d36..c1dcc954925 100644 --- a/tests/lib/Memcache/RedisTest.php +++ b/tests/lib/Memcache/RedisTest.php @@ -1,36 +1,48 @@ <?php /** - * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace Test\Memcache; +use OC\Memcache\Redis; +use OCP\IConfig; +use OCP\Server; + +/** + * @group Memcache + * @group Redis + */ class RedisTest extends Cache { + /** + * @var Redis cache; + */ + protected $instance; + public static function setUpBeforeClass(): void { parent::setUpBeforeClass(); - if (!\OC\Memcache\Redis::isAvailable()) { + if (!Redis::isAvailable()) { self::markTestSkipped('The redis extension is not available.'); } - if (\OC::$server->getConfig()->getSystemValue('redis', []) === []) { + if (Server::get(IConfig::class)->getSystemValue('redis', []) === []) { self::markTestSkipped('Redis not configured in config.php'); } $errorOccurred = false; set_error_handler( - function ($errno, $errstr) { + function ($errno, $errstr): void { throw new \RuntimeException($errstr, 123456789); }, E_WARNING ); $instance = null; try { - $instance = new \OC\Memcache\Redis(self::getUniqueID()); + $instance = new Redis(self::getUniqueID()); } catch (\RuntimeException $e) { $errorOccurred = $e->getCode() === 123456789 ? $e->getMessage() : false; } @@ -50,6 +62,26 @@ class RedisTest extends Cache { protected function setUp(): void { parent::setUp(); - $this->instance = new \OC\Memcache\Redis($this->getUniqueID()); + $this->instance = new Redis($this->getUniqueID()); + } + + public function testScriptHashes(): void { + foreach (Redis::LUA_SCRIPTS as $script) { + $this->assertEquals(sha1($script[0]), $script[1]); + } + } + + public function testCasTtlNotChanged(): void { + $this->instance->set('foo', 'bar', 50); + $this->assertTrue($this->instance->compareSetTTL('foo', 'bar', 100)); + // allow for 1s of inaccuracy due to time moving forward + $this->assertLessThan(1, 100 - $this->instance->getTTL('foo')); + } + + public function testCasTtlChanged(): void { + $this->instance->set('foo', 'bar1', 50); + $this->assertFalse($this->instance->compareSetTTL('foo', 'bar', 100)); + // allow for 1s of inaccuracy due to time moving forward + $this->assertLessThan(1, 50 - $this->instance->getTTL('foo')); } } |