Skip to content

Commit

Permalink
Updating calls of Cache::set() inside Cache. Updating the documentati…
Browse files Browse the repository at this point in the history
…on for set() so it better explains how the temporary settings work.

Updating APC and Memcache engine tests to reflect the lack of state being stored inside Cache.
  • Loading branch information
markstory committed Sep 18, 2010
1 parent 5e725e6 commit b6d845a
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 65 deletions.
25 changes: 14 additions & 11 deletions cake/libs/cache.php
Expand Up @@ -172,8 +172,10 @@ protected static function _loadEngine($name, $plugin = null) {
}

/**
* Temporarily change settings to current config options. if no params are passed, resets settings if needed
* Cache::write() will reset the configuration changes made
* Temporarily change the settings on a cache config. The settings will persist for the next write
* operation (write, decrement, increment, clear). Any reads that are done before the write, will
* use the modified settings. If `$settings` is empty, the settings will be reset to the
* original configuration.
*
* Can be called with 2 or 3 parameters. To set multiple values at once.
*
Expand All @@ -183,6 +185,10 @@ protected static function _loadEngine($name, $plugin = null) {
*
* `Cache::set('duration', '+30 minutes', 'my_config');`
*
* To reset a config back to the originally configured values.
*
* `Cache::set(null, 'my_config');`
*
* @param mixed $settings Optional string for simple name-value pair or array
* @param string $value Optional for a simple name-value pair
* @param string $config The configuration name you are changing. Defaults to 'default'
Expand Down Expand Up @@ -265,7 +271,7 @@ public static function write($key, $value, $config = 'default') {
}

$success = self::$_engines[$config]->write($settings['prefix'] . $key, $value, $settings['duration']);
self::set(array(), null, $config);
self::set(null, $config);
if ($success === false && $value !== '') {
trigger_error(
sprintf(__("%s cache was unable to write '%s' to cache", true), $config, $key),
Expand Down Expand Up @@ -307,10 +313,7 @@ public static function read($key, $config = 'default') {
if (!$key) {
return false;
}
$success = self::$_engines[$config]->read($settings['prefix'] . $key);

self::set(array(), null, $config);
return $success;
return self::$_engines[$config]->read($settings['prefix'] . $key);
}

/**
Expand All @@ -337,7 +340,7 @@ public static function increment($key, $offset = 1, $config = 'default') {
return false;
}
$success = self::$_engines[$config]->increment($settings['prefix'] . $key, $offset);
self::set(array(), null, $config);
self::set(null, $config);
return $success;
}
/**
Expand All @@ -364,7 +367,7 @@ public static function decrement($key, $offset = 1, $config = 'default') {
return false;
}
$success = self::$_engines[$config]->decrement($settings['prefix'] . $key, $offset);
self::set(array(), null, $config);
self::set(null, $config);
return $success;
}
/**
Expand Down Expand Up @@ -399,7 +402,7 @@ public static function delete($key, $config = 'default') {
}

$success = self::$_engines[$config]->delete($settings['prefix'] . $key);
self::set(array(), null, $config);
self::set(null, $config);
return $success;
}

Expand All @@ -421,7 +424,7 @@ public static function clear($check = false, $config = 'default') {
return false;
}
$success = self::$_engines[$config]->clear($check);
self::set(array(), null, $config);
self::set(null, $config);
return $success;
}

Expand Down
50 changes: 25 additions & 25 deletions cake/tests/cases/libs/cache/apc.test.php
Expand Up @@ -74,21 +74,21 @@ function tearDown() {
* @return void
*/
function testReadAndWriteCache() {
Cache::set(array('duration' => 1));
Cache::set(array('duration' => 1), 'apc');

$result = Cache::read('test');
$result = Cache::read('test', 'apc');
$expecting = '';
$this->assertEqual($result, $expecting);

$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('test', $data);
$result = Cache::write('test', $data, 'apc');
$this->assertTrue($result);

$result = Cache::read('test');
$result = Cache::read('test', 'apc');
$expecting = $data;
$this->assertEqual($result, $expecting);

Cache::delete('test');
Cache::delete('test', 'apc');
}

/**
Expand All @@ -98,31 +98,31 @@ function testReadAndWriteCache() {
* @return void
*/
function testExpiry() {
Cache::set(array('duration' => 1));
Cache::set(array('duration' => 1), 'apc');

$result = Cache::read('test');
$result = Cache::read('test', 'apc');
$this->assertFalse($result);

$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('other_test', $data);
$result = Cache::write('other_test', $data, 'apc');
$this->assertTrue($result);

sleep(2);
$result = Cache::read('other_test');
$result = Cache::read('other_test', 'apc');
$this->assertFalse($result);

Cache::set(array('duration' => 1));
Cache::set(array('duration' => 1), 'apc');

$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('other_test', $data);
$result = Cache::write('other_test', $data, 'apc');
$this->assertTrue($result);

sleep(2);
$result = Cache::read('other_test');
$result = Cache::read('other_test', 'apc');
$this->assertFalse($result);

sleep(2);
$result = Cache::read('other_test');
$result = Cache::read('other_test', 'apc');
$this->assertFalse($result);
}

Expand All @@ -134,10 +134,10 @@ function testExpiry() {
*/
function testDeleteCache() {
$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('delete_test', $data);
$result = Cache::write('delete_test', $data, 'apc');
$this->assertTrue($result);

$result = Cache::delete('delete_test');
$result = Cache::delete('delete_test', 'apc');
$this->assertTrue($result);
}

Expand All @@ -151,19 +151,19 @@ function testDecrement() {
if ($this->skipIf(!function_exists('apc_dec'), 'No apc_dec() function, cannot test decrement() %s')) {
return;
}
$result = Cache::write('test_decrement', 5);
$result = Cache::write('test_decrement', 5, 'apc');
$this->assertTrue($result);

$result = Cache::decrement('test_decrement');
$result = Cache::decrement('test_decrement', 1, 'apc');
$this->assertEqual(4, $result);

$result = Cache::read('test_decrement');
$result = Cache::read('test_decrement', 'apc');
$this->assertEqual(4, $result);

$result = Cache::decrement('test_decrement', 2);
$result = Cache::decrement('test_decrement', 2, 'apc');
$this->assertEqual(2, $result);

$result = Cache::read('test_decrement');
$result = Cache::read('test_decrement', 'apc');
$this->assertEqual(2, $result);

}
Expand All @@ -178,19 +178,19 @@ function testIncrement() {
if ($this->skipIf(!function_exists('apc_inc'), 'No apc_inc() function, cannot test increment() %s')) {
return;
}
$result = Cache::write('test_increment', 5);
$result = Cache::write('test_increment', 5, 'apc');
$this->assertTrue($result);

$result = Cache::increment('test_increment');
$result = Cache::increment('test_increment', 1, 'apc');
$this->assertEqual(6, $result);

$result = Cache::read('test_increment');
$result = Cache::read('test_increment', 'apc');
$this->assertEqual(6, $result);

$result = Cache::increment('test_increment', 2);
$result = Cache::increment('test_increment', 2, 'apc');
$this->assertEqual(8, $result);

$result = Cache::read('test_increment');
$result = Cache::read('test_increment', 'apc');
$this->assertEqual(8, $result);
}
}
58 changes: 29 additions & 29 deletions cake/tests/cases/libs/cache/memcache.test.php
Expand Up @@ -78,7 +78,7 @@ function tearDown() {
* @return void
*/
function testSettings() {
$settings = Cache::settings();
$settings = Cache::settings('memcache');
unset($settings['serialize'], $settings['path']);
$expecting = array(
'prefix' => 'cake_',
Expand Down Expand Up @@ -141,21 +141,21 @@ function testConnect() {
* @return void
*/
function testReadAndWriteCache() {
Cache::set(array('duration' => 1));
Cache::set(array('duration' => 1), null, 'memcache');

$result = Cache::read('test');
$result = Cache::read('test', 'memcache');
$expecting = '';
$this->assertEqual($result, $expecting);

$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('test', $data);
$result = Cache::write('test', $data, 'memcache');
$this->assertTrue($result);

$result = Cache::read('test');
$result = Cache::read('test', 'memcache');
$expecting = $data;
$this->assertEqual($result, $expecting);

Cache::delete('test');
Cache::delete('test', 'memcache');
}

/**
Expand All @@ -165,42 +165,42 @@ function testReadAndWriteCache() {
* @return void
*/
function testExpiry() {
Cache::set(array('duration' => 1));
Cache::set(array('duration' => 1), 'memcache');

$result = Cache::read('test');
$result = Cache::read('test', 'memcache');
$this->assertFalse($result);

$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('other_test', $data);
$result = Cache::write('other_test', $data, 'memcache');
$this->assertTrue($result);

sleep(2);
$result = Cache::read('other_test');
$result = Cache::read('other_test', 'memcache');
$this->assertFalse($result);

Cache::set(array('duration' => "+1 second"));
Cache::set(array('duration' => "+1 second"), 'memcache');

$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('other_test', $data);
$result = Cache::write('other_test', $data, 'memcache');
$this->assertTrue($result);

sleep(2);
$result = Cache::read('other_test');
$result = Cache::read('other_test', 'memcache');
$this->assertFalse($result);

Cache::config('memcache', array('duration' => '+1 second'));
sleep(2);

$result = Cache::read('other_test');
$result = Cache::read('other_test', 'memcache');
$this->assertFalse($result);

Cache::config('memcache', array('duration' => '+30 day'));
Cache::config('memcache', array('duration' => '+30 days'));
$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('long_expiry_test', $data);
$result = Cache::write('long_expiry_test', $data, 'memcache');
$this->assertTrue($result);

sleep(2);
$result = Cache::read('long_expiry_test');
$result = Cache::read('long_expiry_test', 'memcache');
$expecting = $data;
$this->assertEqual($result, $expecting);

Expand All @@ -215,10 +215,10 @@ function testExpiry() {
*/
function testDeleteCache() {
$data = 'this is a test of the emergency broadcasting system';
$result = Cache::write('delete_test', $data);
$result = Cache::write('delete_test', $data, 'memcache');
$this->assertTrue($result);

$result = Cache::delete('delete_test');
$result = Cache::delete('delete_test', 'memcache');
$this->assertTrue($result);
}

Expand All @@ -229,19 +229,19 @@ function testDeleteCache() {
* @return void
*/
function testDecrement() {
$result = Cache::write('test_decrement', 5);
$result = Cache::write('test_decrement', 5, 'memcache');
$this->assertTrue($result);

$result = Cache::decrement('test_decrement');
$result = Cache::decrement('test_decrement', 1, 'memcache');
$this->assertEqual(4, $result);

$result = Cache::read('test_decrement');
$result = Cache::read('test_decrement', 'memcache');
$this->assertEqual(4, $result);

$result = Cache::decrement('test_decrement', 2);
$result = Cache::decrement('test_decrement', 2, 'memcache');
$this->assertEqual(2, $result);

$result = Cache::read('test_decrement');
$result = Cache::read('test_decrement', 'memcache');
$this->assertEqual(2, $result);
}

Expand All @@ -252,19 +252,19 @@ function testDecrement() {
* @return void
*/
function testIncrement() {
$result = Cache::write('test_increment', 5);
$result = Cache::write('test_increment', 5, 'memcache');
$this->assertTrue($result);

$result = Cache::increment('test_increment');
$result = Cache::increment('test_increment', 1, 'memcache');
$this->assertEqual(6, $result);

$result = Cache::read('test_increment');
$result = Cache::read('test_increment', 'memcache');
$this->assertEqual(6, $result);

$result = Cache::increment('test_increment', 2);
$result = Cache::increment('test_increment', 2, 'memcache');
$this->assertEqual(8, $result);

$result = Cache::read('test_increment');
$result = Cache::read('test_increment', 'memcache');
$this->assertEqual(8, $result);
}

Expand Down

0 comments on commit b6d845a

Please sign in to comment.