diff options
author | Robin Appelman <icewind@owncloud.com> | 2012-06-05 19:58:30 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2012-06-05 19:58:30 +0200 |
commit | 301a14dcd6502f3eaaa621476c1fd788727f60ec (patch) | |
tree | ed5e90df962660c5dec9ad651ee1895aa71a4ead | |
parent | e11bf460e06fdafe04cc3bd7436725c40a71ffac (diff) | |
download | nextcloud-server-301a14dcd6502f3eaaa621476c1fd788727f60ec.tar.gz nextcloud-server-301a14dcd6502f3eaaa621476c1fd788727f60ec.zip |
add XCache backend and testcases for OC_Cache
-rw-r--r-- | lib/cache/xcache.php | 37 | ||||
-rw-r--r-- | tests/lib/cache.php | 42 | ||||
-rw-r--r-- | tests/lib/cache/file.php | 27 | ||||
-rw-r--r-- | tests/lib/cache/xcache.php | 27 |
4 files changed, 133 insertions, 0 deletions
diff --git a/lib/cache/xcache.php b/lib/cache/xcache.php new file mode 100644 index 00000000000..a1f4d905b89 --- /dev/null +++ b/lib/cache/xcache.php @@ -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()); + } +} diff --git a/tests/lib/cache.php b/tests/lib/cache.php new file mode 100644 index 00000000000..35e83a9ddcb --- /dev/null +++ b/tests/lib/cache.php @@ -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(){ + } +}
\ No newline at end of file diff --git a/tests/lib/cache/file.php b/tests/lib/cache/file.php new file mode 100644 index 00000000000..226e5068c41 --- /dev/null +++ b/tests/lib/cache/file.php @@ -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(); + } +} diff --git a/tests/lib/cache/xcache.php b/tests/lib/cache/xcache.php new file mode 100644 index 00000000000..9ec80ff83c8 --- /dev/null +++ b/tests/lib/cache/xcache.php @@ -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(); + } +} |