diff options
Diffstat (limited to 'tests/cache')
| -rw-r--r-- | tests/cache/apc_driver_test.php | 53 | ||||
| -rw-r--r-- | tests/cache/common_test_case.php | 98 | ||||
| -rw-r--r-- | tests/cache/file_driver_test.php | 69 | ||||
| -rw-r--r-- | tests/cache/fixtures/config.xml | 18 | ||||
| -rw-r--r-- | tests/cache/null_driver_test.php | 75 | ||||
| -rw-r--r-- | tests/cache/redis_driver_test.php | 49 | 
6 files changed, 362 insertions, 0 deletions
| diff --git a/tests/cache/apc_driver_test.php b/tests/cache/apc_driver_test.php new file mode 100644 index 0000000000..3380762878 --- /dev/null +++ b/tests/cache/apc_driver_test.php @@ -0,0 +1,53 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2012 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +// Important: apc.enable_cli=1 must be in php.ini. +// http://forums.devshed.com/php-development-5/apc-problem-561290.html +// http://php.net/manual/en/apc.configuration.php + +require_once dirname(__FILE__) . '/common_test_case.php'; + +class phpbb_cache_apc_driver_test extends phpbb_cache_common_test_case +{ +	protected static $config; +	protected $driver; + +	public function getDataSet() +	{ +		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/config.xml'); +	} + +	static public function setUpBeforeClass() +	{ +		if (!extension_loaded('apc')) +		{ +			self::markTestSkipped('APC extension is not loaded'); +		} + +		$php_ini = new phpbb_php_ini; + +		if (!$php_ini->get_bool('apc.enabled')) +		{ +			self::markTestSkipped('APC is not enabled. Make sure apc.enabled=1 in php.ini'); +		} + +		if (PHP_SAPI == 'cli' && !$php_ini->get_bool('apc.enable_cli')) +		{ +			self::markTestSkipped('APC is not enabled for CLI. Set apc.enable_cli=1 in php.ini'); +		} +	} + +	protected function setUp() +	{ +		parent::setUp(); + +		$this->driver = new phpbb_cache_driver_apc; +		$this->driver->purge(); +	} +} diff --git a/tests/cache/common_test_case.php b/tests/cache/common_test_case.php new file mode 100644 index 0000000000..a5bc2bfda9 --- /dev/null +++ b/tests/cache/common_test_case.php @@ -0,0 +1,98 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2012 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +abstract class phpbb_cache_common_test_case extends phpbb_database_test_case +{ +	public function test_get_put_exists() +	{ +		$this->assertFalse($this->driver->_exists('test_key')); +		$this->assertSame(false, $this->driver->get('test_key')); + +		$this->driver->put('test_key', 'test_value'); + +		$this->assertTrue($this->driver->_exists('test_key')); +		$this->assertEquals( +			'test_value', +			$this->driver->get('test_key'), +			'File ACM put and get' +		); +	} + +	public function test_purge() +	{ +		$this->driver->put('test_key', 'test_value'); + +		$this->assertEquals( +			'test_value', +			$this->driver->get('test_key'), +			'File ACM put and get' +		); + +		$this->driver->purge(); + +		$this->assertSame(false, $this->driver->get('test_key')); +	} + +	public function test_destroy() +	{ +		$this->driver->put('first_key', 'first_value'); +		$this->driver->put('second_key', 'second_value'); + +		$this->assertEquals( +			'first_value', +			$this->driver->get('first_key') +		); +		$this->assertEquals( +			'second_value', +			$this->driver->get('second_key') +		); + +		$this->driver->destroy('first_key'); + +		$this->assertFalse($this->driver->_exists('first_key')); +		$this->assertEquals( +			'second_value', +			$this->driver->get('second_key') +		); +	} + +	public function test_cache_sql() +	{ +		global $db, $cache, $phpbb_root_path, $phpEx; +		$config = new phpbb_config(array()); +		$db = $this->new_dbal(); +		$cache = new phpbb_cache_service($this->driver, $config, $db, $phpbb_root_path, $phpEx); + +		$sql = "SELECT * FROM phpbb_config +			WHERE config_name = 'foo'"; + +		$result = $db->sql_query($sql, 300); +		$first_result = $db->sql_fetchrow($result); +		$expected = array('config_name' => 'foo', 'config_value' => '23', 'is_dynamic' => 0); +		$this->assertEquals($expected, $first_result); + +		$sql = 'DELETE FROM phpbb_config'; +		$result = $db->sql_query($sql); + +		$sql = "SELECT * FROM phpbb_config +			WHERE config_name = 'foo'"; +		$result = $db->sql_query($sql, 300); + +		$this->assertEquals($expected, $db->sql_fetchrow($result)); + +		$sql = "SELECT * FROM phpbb_config +			WHERE config_name = 'foo'"; +		$result = $db->sql_query($sql); + +		$no_cache_result = $db->sql_fetchrow($result); +		$this->assertSame(false, $no_cache_result); + +		$db->sql_close(); +	} +} diff --git a/tests/cache/file_driver_test.php b/tests/cache/file_driver_test.php new file mode 100644 index 0000000000..745c6bb081 --- /dev/null +++ b/tests/cache/file_driver_test.php @@ -0,0 +1,69 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2010 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +require_once dirname(__FILE__) . '/common_test_case.php'; + +class phpbb_cache_file_driver_test extends phpbb_cache_common_test_case +{ +	private $cache_dir; +	protected $driver; + +	public function __construct() +	{ +		$this->cache_dir = dirname(__FILE__) . '/../tmp/cache/'; +	} + +	public function getDataSet() +	{ +		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/config.xml'); +	} + +	protected function setUp() +	{ +		parent::setUp(); + +		if (file_exists($this->cache_dir)) +		{ +			// cache directory possibly left after aborted +			// or failed run earlier +			$this->remove_cache_dir(); +		} +		$this->create_cache_dir(); + +		$this->driver = new phpbb_cache_driver_file($this->cache_dir); +	} + +	protected function tearDown() +	{ +		if (file_exists($this->cache_dir)) +		{ +			$this->remove_cache_dir(); +		} + +		parent::tearDown(); +	} + +	private function create_cache_dir() +	{ +		$this->get_test_case_helpers()->makedirs($this->cache_dir); +	} + +	private function remove_cache_dir() +	{ +		$iterator = new DirectoryIterator($this->cache_dir); +		foreach ($iterator as $file) +		{ +			if ($file != '.' && $file != '..') +			{ +				unlink($this->cache_dir . '/' . $file); +			} +		} +		rmdir($this->cache_dir); +	} +} diff --git a/tests/cache/fixtures/config.xml b/tests/cache/fixtures/config.xml new file mode 100644 index 0000000000..9d395b685c --- /dev/null +++ b/tests/cache/fixtures/config.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<dataset> +	<table name="phpbb_config"> +		<column>config_name</column> +		<column>config_value</column> +		<column>is_dynamic</column> +		<row> +			<value>foo</value> +			<value>23</value> +			<value>0</value> +		</row> +		<row> +			<value>bar</value> +			<value>42</value> +			<value>1</value> +		</row> +	</table> +</dataset> diff --git a/tests/cache/null_driver_test.php b/tests/cache/null_driver_test.php new file mode 100644 index 0000000000..43a0cc806c --- /dev/null +++ b/tests/cache/null_driver_test.php @@ -0,0 +1,75 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2012 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +class phpbb_cache_null_driver_test extends phpbb_database_test_case +{ +	protected $driver; + +	public function getDataSet() +	{ +		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/config.xml'); +	} + +	protected function setUp() +	{ +		parent::setUp(); + +		$this->driver = new phpbb_cache_driver_null; +	} + +	public function test_get_put() +	{ +		$this->assertSame(false, $this->driver->get('key')); + +		$this->driver->put('key', 'value'); + +		// null driver does not cache +		$this->assertSame(false, $this->driver->get('key')); +	} + +	public function test_purge() +	{ +		// does nothing +		$this->driver->purge(); +	} + +	public function test_destroy() +	{ +		// does nothing +		$this->driver->destroy('foo'); +	} + +	public function test_cache_sql() +	{ +		global $db, $cache, $phpbb_root_path, $phpEx; +		$config = new phpbb_config(array()); +		$db = $this->new_dbal(); +		$cache = new phpbb_cache_service($this->driver, $config, $db, $phpbb_root_path, $phpEx); + +		$sql = "SELECT * FROM phpbb_config +			WHERE config_name = 'foo'"; +		$result = $db->sql_query($sql, 300); +		$first_result = $db->sql_fetchrow($result); +		$expected = array('config_name' => 'foo', 'config_value' => '23', 'is_dynamic' => 0); +		$this->assertEquals($expected, $first_result); + +		$sql = 'DELETE FROM phpbb_config'; +		$result = $db->sql_query($sql); + +		// As null cache driver does not actually cache, +		// this should return no results +		$sql = "SELECT * FROM phpbb_config +			WHERE config_name = 'foo'"; +		$result = $db->sql_query($sql, 300); + +		$this->assertSame(false, $db->sql_fetchrow($result)); + +		$db->sql_close(); +	} +} diff --git a/tests/cache/redis_driver_test.php b/tests/cache/redis_driver_test.php new file mode 100644 index 0000000000..1308519a18 --- /dev/null +++ b/tests/cache/redis_driver_test.php @@ -0,0 +1,49 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2012 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +require_once dirname(__FILE__) . '/common_test_case.php'; + +class phpbb_cache_redis_driver_test extends phpbb_cache_common_test_case +{ +	protected static $config; +	protected $driver; + +	public function getDataSet() +	{ +		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/config.xml'); +	} + +	static public function setUpBeforeClass() +	{ +		if (!extension_loaded('redis')) +		{ +			self::markTestSkipped('redis extension is not loaded'); +		} + +		$config = phpbb_test_case_helpers::get_test_config(); +		if (isset($config['redis_host']) || isset($config['redis_port'])) +		{ +			$host = isset($config['redis_host']) ? $config['redis_host'] : 'localhost'; +			$port = isset($config['redis_port']) ? $config['redis_port'] : 6379; +			self::$config = array('host' => $host, 'port' => $port); +		} +		else +		{ +			self::markTestSkipped('Test redis host/port is not specified'); +		} +	} + +	protected function setUp() +	{ +		parent::setUp(); + +		$this->driver = new phpbb_cache_driver_redis(self::$config['host'], self::$config['port']); +		$this->driver->purge(); +	} +} | 
