From 3a3a8bb96d0cb7be2529ab095f305fd3b042783c Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Fri, 7 Jan 2011 20:58:28 +0100 Subject: [feature/system-cron] Abstract the database locking mechanism out of cron. Added a number of tests for the locking mechanism which can now lock arbitrary config variables. PHPBB3-9596 --- tests/lock/db_test.php | 67 ++++++++++++++++++++++++++++++++++++++++++ tests/lock/fixtures/config.xml | 13 ++++++++ 2 files changed, 80 insertions(+) create mode 100644 tests/lock/db_test.php create mode 100644 tests/lock/fixtures/config.xml (limited to 'tests/lock') diff --git a/tests/lock/db_test.php b/tests/lock/db_test.php new file mode 100644 index 0000000000..0702a2c21e --- /dev/null +++ b/tests/lock/db_test.php @@ -0,0 +1,67 @@ +createXMLDataSet(dirname(__FILE__).'/fixtures/config.xml'); + } + + public function setUp() + { + global $db, $config; + + $db = $this->db = $this->new_dbal(); + $config = $this->config = array('rand_seed' => '', 'rand_seed_last_update' => '0'); + $this->lock = new phpbb_lock_db('test_lock', $this->config, $this->db); + } + + public function test_new_lock() + { + global $config; + + $this->assertTrue($this->lock->lock()); + $this->assertTrue(isset($config['test_lock']), 'Lock was created'); + + $lock2 = new phpbb_lock_db('test_lock', $config, $this->db); + $this->assertFalse($lock2->lock()); + + $this->lock->unlock(); + $this->assertEquals('0', $config['test_lock'], 'Lock was released'); + } + + public function test_expire_lock() + { + $lock = new phpbb_lock_db('foo_lock', $this->config, $this->db); + $this->assertTrue($lock->lock()); + } + + public function test_double_lock() + { + global $config; + + $this->assertTrue($this->lock->lock()); + $this->assertTrue(isset($config['test_lock']), 'Lock was created'); + + $value = $config['test_lock']; + + $this->assertTrue($this->lock->lock()); + $this->assertEquals($value, $config['test_lock'], 'Second lock was ignored'); + + $this->lock->unlock(); + $this->assertEquals('0', $config['test_lock'], 'Lock was released'); + } +} diff --git a/tests/lock/fixtures/config.xml b/tests/lock/fixtures/config.xml new file mode 100644 index 0000000000..f36c8b929a --- /dev/null +++ b/tests/lock/fixtures/config.xml @@ -0,0 +1,13 @@ + + + + config_name + config_value + is_dynamic + + foo_lock + 1 abcd + 1 + +
+
-- cgit v1.2.1