mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
Merge pull request #10776 from creative-commoners/pulls/5.0/acpu-memcached-factories
FIX Get ApcuCacheFactory and MemcachedCacheFactory working again
This commit is contained in:
commit
58813d5075
@ -3,12 +3,11 @@
|
|||||||
namespace SilverStripe\Core\Cache;
|
namespace SilverStripe\Core\Cache;
|
||||||
|
|
||||||
use SilverStripe\Core\Injector\Injector;
|
use SilverStripe\Core\Injector\Injector;
|
||||||
use Symfony\Component\Cache\Simple\ApcuCache;
|
use Symfony\Component\Cache\Adapter\ApcuAdapter;
|
||||||
use Memcached;
|
use Symfony\Component\Cache\Psr16Cache;
|
||||||
|
|
||||||
class ApcuCacheFactory implements CacheFactory
|
class ApcuCacheFactory implements CacheFactory
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
@ -31,10 +30,11 @@ class ApcuCacheFactory implements CacheFactory
|
|||||||
? $params['namespace'] . '_' . md5(BASE_PATH)
|
? $params['namespace'] . '_' . md5(BASE_PATH)
|
||||||
: md5(BASE_PATH);
|
: md5(BASE_PATH);
|
||||||
$defaultLifetime = isset($params['defaultLifetime']) ? $params['defaultLifetime'] : 0;
|
$defaultLifetime = isset($params['defaultLifetime']) ? $params['defaultLifetime'] : 0;
|
||||||
return Injector::inst()->createWithArgs(ApcuCache::class, [
|
$psr6Cache = Injector::inst()->createWithArgs(ApcuAdapter::class, [
|
||||||
$namespace,
|
$namespace,
|
||||||
$defaultLifetime,
|
$defaultLifetime,
|
||||||
$this->version
|
$this->version
|
||||||
]);
|
]);
|
||||||
|
return Injector::inst()->createWithArgs(Psr16Cache::class, [$psr6Cache]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,8 @@
|
|||||||
namespace SilverStripe\Core\Cache;
|
namespace SilverStripe\Core\Cache;
|
||||||
|
|
||||||
use SilverStripe\Core\Injector\Injector;
|
use SilverStripe\Core\Injector\Injector;
|
||||||
use Symfony\Component\Cache\Simple\MemcachedCache;
|
use Symfony\Component\Cache\Adapter\MemcachedAdapter;
|
||||||
|
use Symfony\Component\Cache\Psr16Cache;
|
||||||
use Memcached;
|
use Memcached;
|
||||||
|
|
||||||
class MemcachedCacheFactory implements CacheFactory
|
class MemcachedCacheFactory implements CacheFactory
|
||||||
@ -31,10 +32,11 @@ class MemcachedCacheFactory implements CacheFactory
|
|||||||
? $params['namespace'] . '_' . md5(BASE_PATH)
|
? $params['namespace'] . '_' . md5(BASE_PATH)
|
||||||
: md5(BASE_PATH);
|
: md5(BASE_PATH);
|
||||||
$defaultLifetime = isset($params['defaultLifetime']) ? $params['defaultLifetime'] : 0;
|
$defaultLifetime = isset($params['defaultLifetime']) ? $params['defaultLifetime'] : 0;
|
||||||
return Injector::inst()->createWithArgs(MemcachedCache::class, [
|
$psr6Cache = Injector::inst()->createWithArgs(MemcachedAdapter::class, [
|
||||||
$this->memcachedClient,
|
$this->memcachedClient,
|
||||||
$namespace,
|
$namespace,
|
||||||
$defaultLifetime
|
$defaultLifetime
|
||||||
]);
|
]);
|
||||||
|
return Injector::inst()->createWithArgs(Psr16Cache::class, [$psr6Cache]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,14 +2,17 @@
|
|||||||
|
|
||||||
namespace SilverStripe\Core\Tests\Cache;
|
namespace SilverStripe\Core\Tests\Cache;
|
||||||
|
|
||||||
|
use Behat\Gherkin\Cache\MemoryCache;
|
||||||
use Psr\SimpleCache\CacheInterface;
|
use Psr\SimpleCache\CacheInterface;
|
||||||
use SilverStripe\Core\Cache\ApcuCacheFactory;
|
use SilverStripe\Core\Cache\ApcuCacheFactory;
|
||||||
use SilverStripe\Core\Cache\MemcachedCacheFactory;
|
use SilverStripe\Core\Cache\MemcachedCacheFactory;
|
||||||
use SilverStripe\Core\Injector\Injector;
|
use SilverStripe\Core\Injector\Injector;
|
||||||
use SilverStripe\Core\Tests\Cache\CacheTest\MockCache;
|
use SilverStripe\Core\Tests\Cache\CacheTest\MockCache;
|
||||||
use SilverStripe\Dev\SapphireTest;
|
use SilverStripe\Dev\SapphireTest;
|
||||||
use Symfony\Component\Cache\Simple\ApcuCache;
|
use Symfony\Component\Cache\Psr16Cache;
|
||||||
use Symfony\Component\Cache\Simple\MemcachedCache;
|
use Symfony\Component\Cache\Adapter\ApcuAdapter;
|
||||||
|
use Symfony\Component\Cache\Adapter\MemcachedAdapter;
|
||||||
|
use Memcached;
|
||||||
|
|
||||||
class CacheTest extends SapphireTest
|
class CacheTest extends SapphireTest
|
||||||
{
|
{
|
||||||
@ -22,7 +25,10 @@ class CacheTest extends SapphireTest
|
|||||||
ApcuCacheFactory::class => [
|
ApcuCacheFactory::class => [
|
||||||
'constructor' => [ 'version' => 'ss40test' ]
|
'constructor' => [ 'version' => 'ss40test' ]
|
||||||
],
|
],
|
||||||
MemcachedCacheFactory::class => MemcachedCacheFactory::class,
|
'MemcachedClient' => Memcached::class,
|
||||||
|
MemcachedCacheFactory::class => [
|
||||||
|
'constructor' => [ 'memcachedClient' => '%$MemcachedClient' ]
|
||||||
|
],
|
||||||
CacheInterface::class . '.TestApcuCache' => [
|
CacheInterface::class . '.TestApcuCache' => [
|
||||||
'factory' => ApcuCacheFactory::class,
|
'factory' => ApcuCacheFactory::class,
|
||||||
'constructor' => [
|
'constructor' => [
|
||||||
@ -37,42 +43,42 @@ class CacheTest extends SapphireTest
|
|||||||
'defaultLifetime' => 5600,
|
'defaultLifetime' => 5600,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
ApcuCache::class => MockCache::class,
|
Psr16Cache::class => MockCache::class,
|
||||||
MemcachedCache::class => MockCache::class,
|
ApcuAdapter::class => MockCache::class,
|
||||||
|
MemcachedAdapter::class => MockCache::class,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testApcuCacheFactory()
|
public function testApcuCacheFactory()
|
||||||
{
|
{
|
||||||
$cache = Injector::inst()->get(CacheInterface::class . '.TestApcuCache');
|
$psr16Cache = Injector::inst()->get(CacheInterface::class . '.TestApcuCache');
|
||||||
$this->assertInstanceOf(
|
$this->assertInstanceOf(MockCache::class, $psr16Cache);
|
||||||
MockCache::class,
|
$this->assertEquals(MockCache::class, get_class($psr16Cache->getArgs()[0]));
|
||||||
$cache
|
|
||||||
);
|
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
[
|
[
|
||||||
'TestApcuCache_' . md5(BASE_PATH),
|
'TestApcuCache_' . md5(BASE_PATH),
|
||||||
2600,
|
2600,
|
||||||
'ss40test'
|
'ss40test'
|
||||||
],
|
],
|
||||||
$cache->getArgs()
|
$psr16Cache->getArgs()[0]->getArgs()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMemCacheFactory()
|
public function testMemCacheFactory()
|
||||||
{
|
{
|
||||||
$cache = Injector::inst()->get(CacheInterface::class . '.TestMemcache');
|
if (!class_exists(Memcached::class)) {
|
||||||
$this->assertInstanceOf(
|
$this->markTestSkipped('Memcached is not installed');
|
||||||
MockCache::class,
|
}
|
||||||
$cache
|
$psr16Cache = Injector::inst()->get(CacheInterface::class . '.TestMemcache');
|
||||||
);
|
$this->assertInstanceOf(MockCache::class, $psr16Cache);
|
||||||
|
$this->assertEquals(MockCache::class, get_class($psr16Cache->getArgs()[0]));
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
[
|
[
|
||||||
null,
|
new MemCached(),
|
||||||
'TestMemCache_' . md5(BASE_PATH),
|
'TestMemCache_' . md5(BASE_PATH),
|
||||||
5600
|
5600
|
||||||
],
|
],
|
||||||
$cache->getArgs()
|
$psr16Cache->getArgs()[0]->getArgs()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user