]> source.dussan.org Git - nextcloud-server.git/commitdiff
add XCache backend and testcases for OC_Cache
authorRobin Appelman <icewind@owncloud.com>
Tue, 5 Jun 2012 17:58:30 +0000 (19:58 +0200)
committerRobin Appelman <icewind@owncloud.com>
Tue, 5 Jun 2012 17:58:30 +0000 (19:58 +0200)
lib/cache/xcache.php [new file with mode: 0644]
tests/lib/cache.php [new file with mode: 0644]
tests/lib/cache/file.php [new file with mode: 0644]
tests/lib/cache/xcache.php [new file with mode: 0644]

diff --git a/lib/cache/xcache.php b/lib/cache/xcache.php
new file mode 100644 (file)
index 0000000..a1f4d90
--- /dev/null
@@ -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 (file)
index 0000000..35e83a9
--- /dev/null
@@ -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 (file)
index 0000000..226e506
--- /dev/null
@@ -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 (file)
index 0000000..9ec80ff
--- /dev/null
@@ -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();
+       }
+}