Alexander Makarov
12 years ago
11 changed files with 348 additions and 2 deletions
@ -0,0 +1,27 @@ |
|||||||
|
<?php |
||||||
|
namespace yiiunit\framework\caching; |
||||||
|
use yii\caching\ApcCache; |
||||||
|
use yiiunit\TestCase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class for testing APC cache backend |
||||||
|
*/ |
||||||
|
class ApcCacheTest extends CacheTest |
||||||
|
{ |
||||||
|
private $_cacheInstance = null; |
||||||
|
|
||||||
|
/** |
||||||
|
* @return ApcCache |
||||||
|
*/ |
||||||
|
protected function getCacheInstance() |
||||||
|
{ |
||||||
|
if(!extension_loaded("apc")) { |
||||||
|
$this->markTestSkipped("APC not installed. Skipping."); |
||||||
|
} |
||||||
|
|
||||||
|
if($this->_cacheInstance === null) { |
||||||
|
$this->_cacheInstance = new ApcCache(); |
||||||
|
} |
||||||
|
return $this->_cacheInstance; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,82 @@ |
|||||||
|
<?php |
||||||
|
namespace yiiunit\framework\caching; |
||||||
|
use yiiunit\TestCase; |
||||||
|
use yii\caching\Cache; |
||||||
|
|
||||||
|
/** |
||||||
|
* Base class for testing cache backends |
||||||
|
*/ |
||||||
|
abstract class CacheTest extends TestCase |
||||||
|
{ |
||||||
|
/** |
||||||
|
* @return Cache |
||||||
|
*/ |
||||||
|
abstract protected function getCacheInstance(); |
||||||
|
|
||||||
|
public function testSet() |
||||||
|
{ |
||||||
|
$cache = $this->getCacheInstance(); |
||||||
|
$cache->set('string_test', 'string_test'); |
||||||
|
$cache->set('number_test', 42); |
||||||
|
$cache->set('array_test', array('array_test' => 'array_test')); |
||||||
|
$cache['arrayaccess_test'] = new \stdClass(); |
||||||
|
} |
||||||
|
|
||||||
|
public function testGet() |
||||||
|
{ |
||||||
|
$cache = $this->getCacheInstance(); |
||||||
|
$this->assertEquals('string_test', $cache->get('string_test')); |
||||||
|
|
||||||
|
$this->assertEquals(42, $cache->get('number_test')); |
||||||
|
|
||||||
|
$array = $cache->get('array_test'); |
||||||
|
$this->assertArrayHasKey('array_test', $array); |
||||||
|
$this->assertEquals('array_test', $array['array_test']); |
||||||
|
|
||||||
|
$this->assertInstanceOf('stdClass', $cache['arrayaccess_test']); |
||||||
|
} |
||||||
|
|
||||||
|
public function testMget() |
||||||
|
{ |
||||||
|
$cache = $this->getCacheInstance(); |
||||||
|
$this->assertEquals(array('string_test' => 'string_test', 'number_test' => 42), $cache->mget(array('string_test', 'number_test'))); |
||||||
|
} |
||||||
|
|
||||||
|
public function testExpire() |
||||||
|
{ |
||||||
|
$cache = $this->getCacheInstance(); |
||||||
|
$cache->set('expire_test', 'expire_test', 2); |
||||||
|
sleep(1); |
||||||
|
$this->assertEquals('expire_test', $cache->get('expire_test')); |
||||||
|
sleep(2); |
||||||
|
$this->assertEquals(false, $cache->get('expire_test')); |
||||||
|
} |
||||||
|
|
||||||
|
public function testAdd() |
||||||
|
{ |
||||||
|
$cache = $this->getCacheInstance(); |
||||||
|
|
||||||
|
// should not change existing keys |
||||||
|
$cache->add('number_test', 13); |
||||||
|
$this->assertEquals(42, $cache->get('number_test')); |
||||||
|
|
||||||
|
// should store data is it's not there yet |
||||||
|
$cache->add('add_test', 13); |
||||||
|
$this->assertEquals(13, $cache->get('add_test')); |
||||||
|
} |
||||||
|
|
||||||
|
public function testDelete() |
||||||
|
{ |
||||||
|
$cache = $this->getCacheInstance(); |
||||||
|
|
||||||
|
$cache->delete('number_test'); |
||||||
|
$this->assertEquals(null, $cache->get('number_test')); |
||||||
|
} |
||||||
|
|
||||||
|
public function testFlush() |
||||||
|
{ |
||||||
|
$cache = $this->getCacheInstance(); |
||||||
|
$cache->flush(); |
||||||
|
$this->assertEquals(null, $cache->get('add_test')); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,70 @@ |
|||||||
|
<?php |
||||||
|
namespace yiiunit\framework\caching; |
||||||
|
use yii\caching\DbCache; |
||||||
|
use yiiunit\TestCase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class for testing file cache backend |
||||||
|
*/ |
||||||
|
class DbCacheTest extends CacheTest |
||||||
|
{ |
||||||
|
private $_cacheInstance; |
||||||
|
private $_connection; |
||||||
|
|
||||||
|
function __construct() |
||||||
|
{ |
||||||
|
if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) { |
||||||
|
$this->markTestSkipped('pdo and pdo_mysql extensions are required.'); |
||||||
|
} |
||||||
|
|
||||||
|
$this->getConnection()->createCommand(" |
||||||
|
CREATE TABLE IF NOT EXISTS tbl_cache ( |
||||||
|
id char(128) NOT NULL, |
||||||
|
expire int(11) DEFAULT NULL, |
||||||
|
data LONGBLOB, |
||||||
|
PRIMARY KEY (id), |
||||||
|
KEY expire (expire) |
||||||
|
); |
||||||
|
")->execute(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param bool $reset whether to clean up the test database |
||||||
|
* @return \yii\db\Connection |
||||||
|
*/ |
||||||
|
function getConnection($reset = true) |
||||||
|
{ |
||||||
|
if($this->_connection === null) { |
||||||
|
$params = $this->getParam('mysql'); |
||||||
|
$db = new \yii\db\Connection; |
||||||
|
$db->dsn = $params['dsn']; |
||||||
|
$db->username = $params['username']; |
||||||
|
$db->password = $params['password']; |
||||||
|
if ($reset) { |
||||||
|
$db->open(); |
||||||
|
$lines = explode(';', file_get_contents($params['fixture'])); |
||||||
|
foreach ($lines as $line) { |
||||||
|
if (trim($line) !== '') { |
||||||
|
$db->pdo->exec($line); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
$this->_connection = $db; |
||||||
|
} |
||||||
|
return $this->_connection; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* @return DbCache |
||||||
|
*/ |
||||||
|
protected function getCacheInstance() |
||||||
|
{ |
||||||
|
if($this->_cacheInstance === null) { |
||||||
|
$this->_cacheInstance = new DbCache(array( |
||||||
|
'db' => $this->getConnection(), |
||||||
|
)); |
||||||
|
} |
||||||
|
return $this->_cacheInstance; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
<?php |
||||||
|
namespace yiiunit\framework\caching; |
||||||
|
use yii\caching\FileCache; |
||||||
|
use yiiunit\TestCase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class for testing file cache backend |
||||||
|
*/ |
||||||
|
class FileCacheTest extends CacheTest |
||||||
|
{ |
||||||
|
private $_cacheInstance = null; |
||||||
|
|
||||||
|
/** |
||||||
|
* @return FileCache |
||||||
|
*/ |
||||||
|
protected function getCacheInstance() |
||||||
|
{ |
||||||
|
if($this->_cacheInstance === null) { |
||||||
|
$this->_cacheInstance = new FileCache(array( |
||||||
|
'cachePath' => '@yiiunit/runtime/cache', |
||||||
|
)); |
||||||
|
} |
||||||
|
return $this->_cacheInstance; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
<?php |
||||||
|
namespace yiiunit\framework\caching; |
||||||
|
use yii\caching\MemCache; |
||||||
|
use yiiunit\TestCase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class for testing memcache cache backend |
||||||
|
*/ |
||||||
|
class MemCacheTest extends CacheTest |
||||||
|
{ |
||||||
|
private $_cacheInstance = null; |
||||||
|
|
||||||
|
/** |
||||||
|
* @return MemCache |
||||||
|
*/ |
||||||
|
protected function getCacheInstance() |
||||||
|
{ |
||||||
|
if(!extension_loaded("memcache")) { |
||||||
|
$this->markTestSkipped("memcache not installed. Skipping."); |
||||||
|
} |
||||||
|
|
||||||
|
if($this->_cacheInstance === null) { |
||||||
|
$this->_cacheInstance = new MemCache(); |
||||||
|
} |
||||||
|
return $this->_cacheInstance; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
<?php |
||||||
|
namespace yiiunit\framework\caching; |
||||||
|
use yii\caching\MemCache; |
||||||
|
use yiiunit\TestCase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class for testing memcache cache backend |
||||||
|
*/ |
||||||
|
class MemCachedTest extends CacheTest |
||||||
|
{ |
||||||
|
private $_cacheInstance = null; |
||||||
|
|
||||||
|
/** |
||||||
|
* @return MemCache |
||||||
|
*/ |
||||||
|
protected function getCacheInstance() |
||||||
|
{ |
||||||
|
if(!extension_loaded("memcached")) { |
||||||
|
$this->markTestSkipped("memcached not installed. Skipping."); |
||||||
|
} |
||||||
|
|
||||||
|
if($this->_cacheInstance === null) { |
||||||
|
$this->_cacheInstance = new MemCache(array( |
||||||
|
'useMemcached' => true, |
||||||
|
)); |
||||||
|
} |
||||||
|
return $this->_cacheInstance; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
<?php |
||||||
|
namespace yiiunit\framework\caching; |
||||||
|
use yii\caching\FileCache; |
||||||
|
use yiiunit\TestCase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class for testing wincache backend |
||||||
|
*/ |
||||||
|
class WinCacheTest extends CacheTest |
||||||
|
{ |
||||||
|
private $_cacheInstance = null; |
||||||
|
|
||||||
|
/** |
||||||
|
* @return WinCache |
||||||
|
*/ |
||||||
|
protected function getCacheInstance() |
||||||
|
{ |
||||||
|
if(!extension_loaded('wincache')) { |
||||||
|
$this->markTestSkipped("Wincache not installed. Skipping."); |
||||||
|
} |
||||||
|
|
||||||
|
if(!ini_get('wincache.ucenabled')) { |
||||||
|
$this->markTestSkipped("Wincache user cache disabled. Skipping."); |
||||||
|
} |
||||||
|
|
||||||
|
if($this->_cacheInstance === null) { |
||||||
|
$this->_cacheInstance = new WinCache(); |
||||||
|
} |
||||||
|
return $this->_cacheInstance; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
<?php |
||||||
|
namespace yiiunit\framework\caching; |
||||||
|
use yii\caching\XCache; |
||||||
|
use yiiunit\TestCase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class for testing xcache backend |
||||||
|
*/ |
||||||
|
class XCacheTest extends CacheTest |
||||||
|
{ |
||||||
|
private $_cacheInstance = null; |
||||||
|
|
||||||
|
/** |
||||||
|
* @return XCache |
||||||
|
*/ |
||||||
|
protected function getCacheInstance() |
||||||
|
{ |
||||||
|
if(!function_exists("xcache_isset")) { |
||||||
|
$this->markTestSkipped("XCache not installed. Skipping."); |
||||||
|
} |
||||||
|
|
||||||
|
if($this->_cacheInstance === null) { |
||||||
|
$this->_cacheInstance = new XCache(); |
||||||
|
} |
||||||
|
return $this->_cacheInstance; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
<?php |
||||||
|
namespace yiiunit\framework\caching; |
||||||
|
use yii\caching\ZendDataCache; |
||||||
|
use yiiunit\TestCase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class for testing Zend cache backend |
||||||
|
*/ |
||||||
|
class ZendDataCacheTest extends CacheTest |
||||||
|
{ |
||||||
|
private $_cacheInstance = null; |
||||||
|
|
||||||
|
/** |
||||||
|
* @return ZendDataCache |
||||||
|
*/ |
||||||
|
protected function getCacheInstance() |
||||||
|
{ |
||||||
|
if(!function_exists("zend_shm_cache_store")) { |
||||||
|
$this->markTestSkipped("Zend Data cache not installed. Skipping."); |
||||||
|
} |
||||||
|
|
||||||
|
if($this->_cacheInstance === null) { |
||||||
|
$this->_cacheInstance = new ZendDataCache(); |
||||||
|
} |
||||||
|
return $this->_cacheInstance; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue