mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
Package operations: 2 installs, 23 updates, 0 removals - Updating psr/log (1.1.0 => 1.1.2) - Updating symfony/debug (v3.4.30 => v3.4.35) - Updating symfony/console (v3.4.30 => v3.4.35) - Updating symfony/dotenv (v3.4.30 => v3.4.35) - Updating symfony/routing (v3.4.30 => v3.4.35) - Updating symfony/finder (v3.4.30 => v3.4.35) - Updating symfony/filesystem (v3.4.30 => v3.4.35) - Installing symfony/polyfill-util (v1.12.0) - Installing symfony/polyfill-php56 (v1.12.0) - Updating symfony/http-foundation (v3.4.30 => v3.4.35) - Updating symfony/event-dispatcher (v3.4.30 => v3.4.35) - Updating symfony/http-kernel (v3.4.30 => v3.4.35) - Updating symfony/config (v3.4.30 => v3.4.35) - Updating symfony/dependency-injection (v3.4.30 => v3.4.35) - Updating symfony/class-loader (v3.4.30 => v3.4.35) - Updating symfony/cache (v3.4.30 => v3.4.35) - Updating symfony/framework-bundle (v3.4.30 => v3.4.35) - Updating twig/twig (v1.42.2 => v1.42.4) - Updating symfony/twig-bridge (v3.4.30 => v3.4.35) - Updating symfony/twig-bundle (v3.4.30 => v3.4.35) - Updating symfony/yaml (v3.4.30 => v3.4.35) - Updating symfony/stopwatch (v3.4.30 => v3.4.35) - Updating symfony/var-dumper (v3.4.30 => v3.4.35) - Updating symfony/web-profiler-bundle (v3.4.30 => v3.4.35) - Updating symfony/css-selector (v3.4.30 => v3.4.35)
144 lines
4.7 KiB
PHP
144 lines
4.7 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Symfony\Component\Cache\Tests\Simple;
|
|
|
|
use Symfony\Component\Cache\Simple\NullCache;
|
|
use Symfony\Component\Cache\Simple\PhpArrayCache;
|
|
use Symfony\Component\Cache\Tests\Adapter\FilesystemAdapterTest;
|
|
|
|
/**
|
|
* @group time-sensitive
|
|
*/
|
|
class PhpArrayCacheTest extends CacheTestCase
|
|
{
|
|
protected $skippedTests = [
|
|
'testBasicUsageWithLongKey' => 'PhpArrayCache does no writes',
|
|
|
|
'testDelete' => 'PhpArrayCache does no writes',
|
|
'testDeleteMultiple' => 'PhpArrayCache does no writes',
|
|
'testDeleteMultipleGenerator' => 'PhpArrayCache does no writes',
|
|
|
|
'testSetTtl' => 'PhpArrayCache does no expiration',
|
|
'testSetMultipleTtl' => 'PhpArrayCache does no expiration',
|
|
'testSetExpiredTtl' => 'PhpArrayCache does no expiration',
|
|
'testSetMultipleExpiredTtl' => 'PhpArrayCache does no expiration',
|
|
|
|
'testGetInvalidKeys' => 'PhpArrayCache does no validation',
|
|
'testGetMultipleInvalidKeys' => 'PhpArrayCache does no validation',
|
|
'testSetInvalidKeys' => 'PhpArrayCache does no validation',
|
|
'testDeleteInvalidKeys' => 'PhpArrayCache does no validation',
|
|
'testDeleteMultipleInvalidKeys' => 'PhpArrayCache does no validation',
|
|
'testSetInvalidTtl' => 'PhpArrayCache does no validation',
|
|
'testSetMultipleInvalidKeys' => 'PhpArrayCache does no validation',
|
|
'testSetMultipleInvalidTtl' => 'PhpArrayCache does no validation',
|
|
'testHasInvalidKeys' => 'PhpArrayCache does no validation',
|
|
'testSetValidData' => 'PhpArrayCache does no validation',
|
|
|
|
'testDefaultLifeTime' => 'PhpArrayCache does not allow configuring a default lifetime.',
|
|
'testPrune' => 'PhpArrayCache just proxies',
|
|
];
|
|
|
|
protected static $file;
|
|
|
|
public static function setUpBeforeClass()
|
|
{
|
|
self::$file = sys_get_temp_dir().'/symfony-cache/php-array-adapter-test.php';
|
|
}
|
|
|
|
protected function tearDown()
|
|
{
|
|
if (file_exists(sys_get_temp_dir().'/symfony-cache')) {
|
|
FilesystemAdapterTest::rmdir(sys_get_temp_dir().'/symfony-cache');
|
|
}
|
|
}
|
|
|
|
public function createSimpleCache()
|
|
{
|
|
return new PhpArrayCacheWrapper(self::$file, new NullCache());
|
|
}
|
|
|
|
public function testStore()
|
|
{
|
|
$arrayWithRefs = [];
|
|
$arrayWithRefs[0] = 123;
|
|
$arrayWithRefs[1] = &$arrayWithRefs[0];
|
|
|
|
$object = (object) [
|
|
'foo' => 'bar',
|
|
'foo2' => 'bar2',
|
|
];
|
|
|
|
$expected = [
|
|
'null' => null,
|
|
'serializedString' => serialize($object),
|
|
'arrayWithRefs' => $arrayWithRefs,
|
|
'object' => $object,
|
|
'arrayWithObject' => ['bar' => $object],
|
|
];
|
|
|
|
$cache = new PhpArrayCache(self::$file, new NullCache());
|
|
$cache->warmUp($expected);
|
|
|
|
foreach ($expected as $key => $value) {
|
|
$this->assertSame(serialize($value), serialize($cache->get($key)), 'Warm up should create a PHP file that OPCache can load in memory');
|
|
}
|
|
}
|
|
|
|
public function testStoredFile()
|
|
{
|
|
$expected = [
|
|
'integer' => 42,
|
|
'float' => 42.42,
|
|
'boolean' => true,
|
|
'array_simple' => ['foo', 'bar'],
|
|
'array_associative' => ['foo' => 'bar', 'foo2' => 'bar2'],
|
|
];
|
|
|
|
$cache = new PhpArrayCache(self::$file, new NullCache());
|
|
$cache->warmUp($expected);
|
|
|
|
$values = eval(substr(file_get_contents(self::$file), 6));
|
|
|
|
$this->assertSame($expected, $values, 'Warm up should create a PHP file that OPCache can load in memory');
|
|
}
|
|
}
|
|
|
|
class PhpArrayCacheWrapper extends PhpArrayCache
|
|
{
|
|
public function set($key, $value, $ttl = null)
|
|
{
|
|
\call_user_func(\Closure::bind(function () use ($key, $value) {
|
|
$this->values[$key] = $value;
|
|
$this->warmUp($this->values);
|
|
$this->values = eval(substr(file_get_contents($this->file), 6));
|
|
}, $this, PhpArrayCache::class));
|
|
|
|
return true;
|
|
}
|
|
|
|
public function setMultiple($values, $ttl = null)
|
|
{
|
|
if (!\is_array($values) && !$values instanceof \Traversable) {
|
|
return parent::setMultiple($values, $ttl);
|
|
}
|
|
\call_user_func(\Closure::bind(function () use ($values) {
|
|
foreach ($values as $key => $value) {
|
|
$this->values[$key] = $value;
|
|
}
|
|
$this->warmUp($this->values);
|
|
$this->values = eval(substr(file_get_contents($this->file), 6));
|
|
}, $this, PhpArrayCache::class));
|
|
|
|
return true;
|
|
}
|
|
}
|