blob: 5c696d46a37da697ee3f0c359f0aec1d98c9dae1 [file] [log] [blame]
<?php
namespace apache\shindig\test\common;
use apache\shindig\common\RequestTime;
use apache\shindig\common\Cache;
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
class MockRequestTime extends RequestTime {
private $time = 0;
public function getRequestTime() {
return $this->time;
}
public function sleep($second) {
$this->time += $second;
}
}
/**
* CacheFile test case.
*/
class CacheFileTest extends \PHPUnit_Framework_TestCase {
/**
* @var Cache
*/
private $cache;
/**
* @var MockRequestTime
*/
private $time;
/**
* Prepares the environment before running a test.
*/
protected function setUp() {
parent::setUp();
$this->time = new MockRequestTime();
$this->cache = Cache::createCache('apache\shindig\common\sample\CacheStorageFile', 'TestCache', $this->time);
}
/**
* Cleans up the environment after running a test.
*/
protected function tearDown() {
$this->cache = null;
$this->time = null;
parent::tearDown();
}
/**
* Tests Cache::createCache()
*/
public function testCreateCache() {
$cache = Cache::createCache('apache\shindig\common\sample\CacheStorageFile', 'TestCache');
}
/**
* Tests cache->delete()
*/
public function testDelete() {
@rmdir(sys_get_temp_dir() . "/shindig/TestCache/te");
$this->cache->set("test", "testing");
$this->assertTrue(false != $this->cache->get("test"));
$this->cache->delete("test");
$this->assertFalse($this->cache->get("test"));
}
/**
* Tests cache->delete()
*/
public function testDeleteException() {
$this->setExpectedException("apache\shindig\common\CacheException");
$this->cache->delete("test");
}
/**
* Tests cache->get()
*/
public function testGet() {
$this->cache->set("test", "testing");
$this->assertEquals("testing", $this->cache->get("test"));
$this->cache->delete("test");
}
/**
* Tests cache->expiredGet()
*/
public function testExpiredGet() {
$this->cache->set("test", "testing", 1);
$this->time->sleep(100);
$this->assertFalse($this->cache->get("test"));
$expected = array("found" => true, "ttl" => 1,
"valid" => true, "data" => "testing");
$output = $this->cache->expiredGet("test");
$expected["time"] = $output["time"];
$this->assertEquals($expected, $output);
$this->cache->delete("test");
}
/**
* Tests cache->set()
*/
public function testSet() {
$this->cache->set("test", "testing");
$this->assertEquals("testing", $this->cache->get("test"));
$expected = array("found" => true,
"valid" => true, "data" => "testing");
$output = $this->cache->expiredGet("test");
$expected["time"] = $output["time"];
$expected["ttl"] = $output["ttl"];
$this->assertEquals($expected, $output);
$this->cache->delete("test");
}
/**
* Tests cache->set()
*/
public function testSetException() {
@rmdir(sys_get_temp_dir() . "/shindig/TestCache/te");
$this->assertTrue(touch(sys_get_temp_dir() . "/shindig/TestCache/te"));
$this->setExpectedException("apache\shindig\common\CacheException");
try {
$this->cache->set("test", "testing");
} catch (\Exception $e) {
$this->assertTrue(unlink(sys_get_temp_dir() . "/shindig/TestCache/te"));
throw $e;
}
unlink(sys_get_temp_dir() . "/shindig/TestCache/te");
}
/**
* Tests cache->invalidate()
*/
public function testInvalidation() {
@unlink(sys_get_temp_dir() . "/shindig/TestCache/te/test");
@rmdir(sys_get_temp_dir() . "/shindig/TestCache/te");
$this->cache->set("test", "testing");
$this->cache->invalidate("test");
$this->assertEquals(false, $this->cache->get("test"));
$expected = array("found" => true,
"valid" => false, "data" => "testing");
$output = $this->cache->expiredGet("test");
$expected["time"] = $output["time"];
$expected["ttl"] = $output["ttl"];
$this->assertEquals($expected, $output);
$this->cache->delete("test");
}
}