add XCache backend and testcases for OC_Cache

This commit is contained in:
Robin Appelman 2012-06-05 19:58:30 +02:00
parent e11bf460e0
commit 301a14dcd6
4 changed files with 133 additions and 0 deletions

37
lib/cache/xcache.php vendored Normal file
View File

@ -0,0 +1,37 @@
<?php
/**
* Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
class OC_Cache_XCache{
/**
* entries in XCache gets namespaced to prevent collisions between owncloud instaces and users
*/
protected function getNameSpace() {
return OC_Util::getInstanceId().'/'.OC_User::getUser().'/';
}
public function get($key) {
return xcache_get($this->getNamespace().$key);
}
public function set($key, $value, $ttl=0) {
if($ttl>0){
return xcache_set($this->getNamespace().$key,$value,$ttl);
}else{
return xcache_set($this->getNamespace().$key,$value);
}
}
public function remove($key) {
return xcache_unset($this->getNamespace().$key);
}
public function clear(){
return xcache_unset_by_prefix($this->getNamespace());
}
}

42
tests/lib/cache.php Normal file
View File

@ -0,0 +1,42 @@
<?php
/**
* Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
abstract class Test_Cache extends UnitTestCase {
/**
* @var OC_Cache cache;
*/
protected $instance;
public function tearDown(){
$this->instance->clear();
}
function testSimple(){
$this->assertNull($this->instance->get('value1'));
$value='foobar';
$this->instance->set('value1',$value);
$received=$this->instance->get('value1');
$this->assertEqual($value,$received,'Value recieved from cache not equal to the original');
$value='ipsum lorum';
$this->instance->set('value1',$value);
$received=$this->instance->get('value1');
$this->assertEqual($value,$received,'Value not overwritten by seccond set');
$value2='foobar';
$this->instance->set('value2',$value2);
$received2=$this->instance->get('value2');
$this->assertEqual($value,$received,'Value changed while setting other variable');
$this->assertEqual($value2,$received2,'Seccond value not equal to original');
$this->assertNull($this->instance->get('not_set'),'Unset value not equal to null');
}
function testTTL(){
}
}

27
tests/lib/cache/file.php vendored Normal file
View File

@ -0,0 +1,27 @@
<?php
/**
* ownCloud
*
* @author Robin Appelman
* @copyright 2012 Robin Appelman icewind@owncloud.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
class Test_Cache_File extends Test_Cache {
public function setUp(){
$this->instance=new OC_Cache_File();
}
}

27
tests/lib/cache/xcache.php vendored Normal file
View File

@ -0,0 +1,27 @@
<?php
/**
* ownCloud
*
* @author Robin Appelman
* @copyright 2012 Robin Appelman icewind@owncloud.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
class Test_Cache_XCache extends Test_Cache {
public function setUp(){
$this->instance=new OC_Cache_XCache();
}
}