From a120045c9f048004760d2c42f3b7eb6d66f63b6c Mon Sep 17 00:00:00 2001 From: Dries Buytaert <dries@buytaert.net> Date: Wed, 7 Sep 2011 14:38:31 -0400 Subject: [PATCH] - Patch #81461 by catch, pillarsdotnet, beejeebus: clean up the cache API (stop overloading function arguments, remove procedural wrappers). --- includes/bootstrap.inc | 34 ++-- includes/cache-install.inc | 10 + includes/cache.inc | 212 +++++++++++++------- modules/simpletest/drupal_web_test_case.php | 8 +- modules/simpletest/tests/cache.test | 110 +++++----- 5 files changed, 223 insertions(+), 151 deletions(-) diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc index 1f29c246dafd..2d6366739ee9 100644 --- a/includes/bootstrap.inc +++ b/includes/bootstrap.inc @@ -28,7 +28,7 @@ /** * Indicates that the item should never be removed unless explicitly selected. * - * The item may be removed using cache_clear_all() with a cache ID. + * The item may be removed using cache()->delete() with a cache ID. */ define('CACHE_PERMANENT', 0); @@ -283,12 +283,12 @@ abstract class DrupalCacheArray implements ArrayAccess { /** - * A cid to pass to cache_set() and cache_get(). + * A cid to pass to cache()->set() and cache()->get(). */ private $cid; /** - * A bin to pass to cache_set() and cache_get(). + * A bin to pass to cache()->set() and cache()->get(). */ private $bin; @@ -314,7 +314,7 @@ public function __construct($cid, $bin) { $this->cid = $cid; $this->bin = $bin; - if ($cached = cache_get($this->cid, $this->bin)) { + if ($cached = cache($bin)->get($this->cid)) { $this->storage = $cached->data; } } @@ -391,10 +391,10 @@ protected function set($cid, $data, $bin, $lock = TRUE) { // To implement locking for cache misses, override __construct(). $lock_name = $cid . ':' . $bin; if (!$lock || lock_acquire($lock_name)) { - if ($cached = cache_get($cid, $bin)) { + if ($cached = cache($bin)->get($cid)) { $data = $cached->data + $data; } - cache_set($cid, $data, $bin); + cache($bin)->set($cid, $data); if ($lock) { lock_release($lock_name); } @@ -899,7 +899,7 @@ function drupal_get_filename($type, $name, $filename = NULL) { function variable_initialize($conf = array()) { // NOTE: caching the variables improves performance by 20% when serving // cached pages. - if ($cached = cache_get('variables', 'cache_bootstrap')) { + if ($cached = cache('bootstrap')->get('variables')) { $variables = $cached->data; } else { @@ -914,7 +914,7 @@ function variable_initialize($conf = array()) { else { // Proceed with variable rebuild. $variables = array_map('unserialize', db_query('SELECT name, value FROM {variable}')->fetchAllKeyed()); - cache_set('variables', $variables, 'cache_bootstrap'); + cache('bootstrap')->set('variables', $variables); lock_release($name); } } @@ -971,7 +971,7 @@ function variable_set($name, $value) { db_merge('variable')->key(array('name' => $name))->fields(array('value' => serialize($value)))->execute(); - cache_clear_all('variables', 'cache_bootstrap'); + cache('bootstrap')->delete('variables'); $conf[$name] = $value; } @@ -995,7 +995,7 @@ function variable_del($name) { db_delete('variable') ->condition('name', $name) ->execute(); - cache_clear_all('variables', 'cache_bootstrap'); + cache('bootstrap')->delete('variables'); unset($conf[$name]); } @@ -1024,7 +1024,7 @@ function drupal_page_get_cache($check_only = FALSE) { } if (drupal_page_is_cacheable()) { - $cache = cache_get($base_root . request_uri(), 'cache_page'); + $cache = cache('page')->get($base_root . request_uri()); if ($cache !== FALSE) { $cache_hit = TRUE; } @@ -2791,7 +2791,7 @@ function drupal_get_complete_schema($rebuild = FALSE) { if (empty($schema) || $rebuild) { // Try to load the schema from cache. - if (!$rebuild && $cached = cache_get('schema')) { + if (!$rebuild && $cached = cache()->get('schema')) { $schema = $cached->data; } // Otherwise, rebuild the schema cache. @@ -2817,7 +2817,7 @@ function drupal_get_complete_schema($rebuild = FALSE) { // That would break modules which use $schema further down the line. $current = (array) module_invoke($module, 'schema'); // Set 'module' and 'name' keys for each table, and remove descriptions, - // as they needlessly slow down cache_get() for every single request. + // as they needlessly slow down cache()->get() for every single request. _drupal_schema_initialize($current, $module); $schema = array_merge($schema, $current); } @@ -2826,10 +2826,10 @@ function drupal_get_complete_schema($rebuild = FALSE) { // If the schema is empty, avoid saving it: some database engines require // the schema to perform queries, and this could lead to infinite loops. if (!empty($schema) && (drupal_get_bootstrap_phase() == DRUPAL_BOOTSTRAP_FULL)) { - cache_set('schema', $schema); + cache()->set('schema', $schema); } if ($rebuild) { - cache_clear_all('schema:', 'cache', TRUE); + cache()->deletePrefix('schema:'); } } } @@ -2900,7 +2900,7 @@ function _registry_check_code($type, $name = NULL) { if (!isset($lookup_cache)) { $lookup_cache = array(); - if ($cache = cache_get('lookup_cache', 'cache_bootstrap')) { + if ($cache = cache('bootstrap')->get('lookup_cache')) { $lookup_cache = $cache->data; } } @@ -2917,7 +2917,7 @@ function _registry_check_code($type, $name = NULL) { // changes to the lookup cache for this request. if ($type == REGISTRY_WRITE_LOOKUP_CACHE) { if ($cache_update_needed) { - cache_set('lookup_cache', $lookup_cache, 'cache_bootstrap'); + cache('bootstrap')->set('lookup_cache', $lookup_cache); } return; } diff --git a/includes/cache-install.inc b/includes/cache-install.inc index d9bb0f92ea5b..8bcf8b7b1c17 100644 --- a/includes/cache-install.inc +++ b/includes/cache-install.inc @@ -26,6 +26,16 @@ function getMultiple(&$cids) { function set($cid, $data, $expire = CACHE_PERMANENT) { } + function deletePrefix($cid) { + try { + if (class_exists('Database')) { + parent::deletePrefix($cid); + } + } + catch (Exception $e) { + } + } + function clear($cid = NULL, $wildcard = FALSE) { // If there is a database cache, attempt to clear it whenever possible. The // reason for doing this is that the database cache can accumulate data diff --git a/includes/cache.inc b/includes/cache.inc index 8666874ac625..9b60a7e08fbb 100644 --- a/includes/cache.inc +++ b/includes/cache.inc @@ -1,7 +1,7 @@ <?php /** - * Get the cache object for a cache bin. + * Factory for instantiating and statically caching the correct class for a cache bin. * * By default, this returns an instance of the DrupalDatabaseCache class. * Classes implementing DrupalCacheInterface can register themselves both as a @@ -10,11 +10,16 @@ * @see DrupalCacheInterface * * @param $bin - * The cache bin for which the cache object should be returned. + * The cache bin for which the cache object should be returned, defaults to + * 'cache'. * @return DrupalCacheInterface * The cache object associated with the specified bin. */ -function _cache_get_object($bin) { +function cache($bin = 'cache') { + // Temporary backwards compatibiltiy layer, allow old style prefixed cache + // bin names to be passed as arguments. + $bin = str_replace('cache_', '', $bin); + // We do not use drupal_static() here because we do not want to change the // storage of a cache bin mid-request. static $cache_objects; @@ -46,7 +51,7 @@ function _cache_get_object($bin) { * The cache or FALSE on failure. */ function cache_get($cid, $bin = 'cache') { - return _cache_get_object($bin)->get($cid); + return cache($bin)->get($cid); } /** @@ -61,7 +66,7 @@ function cache_get($cid, $bin = 'cache') { * An array of the items successfully returned from cache indexed by cid. */ function cache_get_multiple(array &$cids, $bin = 'cache') { - return _cache_get_object($bin)->getMultiple($cids); + return cache($bin)->getMultiple($cids); } /** @@ -134,7 +139,7 @@ function cache_get_multiple(array &$cids, $bin = 'cache') { * the given time, after which it behaves like CACHE_TEMPORARY. */ function cache_set($cid, $data, $bin = 'cache', $expire = CACHE_PERMANENT) { - return _cache_get_object($bin)->set($cid, $data, $expire); + return cache($bin)->set($cid, $data, $expire); } /** @@ -161,12 +166,12 @@ function cache_clear_all($cid = NULL, $bin = NULL, $wildcard = FALSE) { // Clear the block cache first, so stale data will // not end up in the page cache. if (module_exists('block')) { - cache_clear_all(NULL, 'cache_block'); + cache('block')->expire(); } - cache_clear_all(NULL, 'cache_page'); + cache('page')->expire(); return; } - return _cache_get_object($bin)->clear($cid, $wildcard); + return cache($bin)->clear($cid, $wildcard); } /** @@ -181,7 +186,7 @@ function cache_clear_all($cid = NULL, $bin = NULL, $wildcard = FALSE) { * TRUE if the cache bin specified is empty. */ function cache_is_empty($bin) { - return _cache_get_object($bin)->isEmpty(); + return cache($bin)->isEmpty(); } /** @@ -218,7 +223,7 @@ function cache_is_empty($bin) { * cache_get($cid, 'custom_bin'); * @endcode * - * @see _cache_get_object() + * @see cache() * @see DrupalDatabaseCache */ interface DrupalCacheInterface { @@ -274,6 +279,44 @@ function getMultiple(&$cids); */ function set($cid, $data, $expire = CACHE_PERMANENT); + /** + * Delete an item from the cache. + * + * @param $cid + * The cache ID to delete. + */ + function delete($cid); + + /** + * Delete multiple items from the cache. + * + * @param $cids + * An array of $cids to delete. + */ + function deleteMultiple(Array $cids); + + /** + * Delete items from the cache using a wildcard prefix. + * + * @param $prefix + * A wildcard prefix. + */ + function deletePrefix($prefix); + + /** + * Flush all cache items in a bin. + */ + function flush(); + + /** + * Expire temporary items from cache. + */ + function expire(); + + /** + * Perform garbage collection on a cache bin. + */ + function garbageCollection(); /** * Expire data from the cache. If called without arguments, expirable @@ -286,6 +329,9 @@ function set($cid, $data, $expire = CACHE_PERMANENT); * If set to TRUE, the $cid is treated as a substring * to match rather than a complete ID. The match is a right hand * match. If '*' is given as $cid, the bin $bin will be emptied. + * + * @todo: this method is deprecated, as it's functionality is covered by + * more targetted methods in the interface. */ function clear($cid = NULL, $wildcard = FALSE); @@ -311,6 +357,11 @@ class DrupalDatabaseCache implements DrupalCacheInterface { protected $bin; function __construct($bin) { + // All cache tables should be prefixed with 'cache_', apart from the + // default 'cache' bin, which would look silly. + if ($bin != 'cache') { + $bin = 'cache_' . $bin; + } $this->bin = $bin; } @@ -350,28 +401,6 @@ function getMultiple(&$cids) { } } - /** - * Garbage collection for get() and getMultiple(). - * - * @param $bin - * The bin being requested. - */ - protected function garbageCollection() { - global $user; - - // Garbage collection necessary when enforcing a minimum cache lifetime. - $cache_flush = variable_get('cache_flush_' . $this->bin, 0); - if ($cache_flush && ($cache_flush + variable_get('cache_lifetime', 0) <= REQUEST_TIME)) { - // Reset the variable immediately to prevent a meltdown in heavy load situations. - variable_set('cache_flush_' . $this->bin, 0); - // Time to flush old cache data - db_delete($this->bin) - ->condition('expire', CACHE_PERMANENT, '<>') - ->condition('expire', $cache_flush, '<=') - ->execute(); - } - } - /** * Prepare a cached item. * @@ -434,64 +463,101 @@ function set($cid, $data, $expire = CACHE_PERMANENT) { } } - function clear($cid = NULL, $wildcard = FALSE) { - global $user; + function delete($cid) { + db_delete($this->bin) + ->condition('cid', $cid) + ->execute(); + } - if (empty($cid)) { - if (variable_get('cache_lifetime', 0)) { - // We store the time in the current user's $user->cache variable which - // will be saved into the sessions bin by _drupal_session_write(). We then - // simulate that the cache was flushed for this user by not returning - // cached data that was cached before the timestamp. - $user->cache = REQUEST_TIME; - - $cache_flush = variable_get('cache_flush_' . $this->bin, 0); - if ($cache_flush == 0) { - // This is the first request to clear the cache, start a timer. - variable_set('cache_flush_' . $this->bin, REQUEST_TIME); - } - elseif (REQUEST_TIME > ($cache_flush + variable_get('cache_lifetime', 0))) { - // Clear the cache for everyone, cache_lifetime seconds have - // passed since the first request to clear the cache. - db_delete($this->bin) - ->condition('expire', CACHE_PERMANENT, '<>') - ->condition('expire', REQUEST_TIME, '<') - ->execute(); - variable_set('cache_flush_' . $this->bin, 0); - } + function deleteMultiple(Array $cids) { + // Delete in chunks when a large array is passed. + do { + db_delete($this->bin) + ->condition('cid', array_splice($cids, 0, 1000), 'IN') + ->execute(); + } + while (count($cids)); + } + + function deletePrefix($prefix) { + db_delete($this->bin) + ->condition('cid', db_like($prefix) . '%', 'LIKE') + ->execute(); + } + + function flush() { + db_truncate($this->bin)->execute(); + } + + function expire() { + if (variable_get('cache_lifetime', 0)) { + // We store the time in the current user's $user->cache variable which + // will be saved into the sessions bin by _drupal_session_write(). We then + // simulate that the cache was flushed for this user by not returning + // cached data that was cached before the timestamp. + $GLOBALS['user']->cache = REQUEST_TIME; + + $cache_flush = variable_get('cache_flush_' . $this->bin, 0); + if ($cache_flush == 0) { + // This is the first request to clear the cache, start a timer. + variable_set('cache_flush_' . $this->bin, REQUEST_TIME); } - else { - // No minimum cache lifetime, flush all temporary cache entries now. + elseif (REQUEST_TIME > ($cache_flush + variable_get('cache_lifetime', 0))) { + // Clear the cache for everyone, cache_lifetime seconds have + // passed since the first request to clear the cache. db_delete($this->bin) ->condition('expire', CACHE_PERMANENT, '<>') ->condition('expire', REQUEST_TIME, '<') ->execute(); + variable_set('cache_flush_' . $this->bin, 0); } } + else { + // No minimum cache lifetime, flush all temporary cache entries now. + db_delete($this->bin) + ->condition('expire', CACHE_PERMANENT, '<>') + ->condition('expire', REQUEST_TIME, '<') + ->execute(); + } + } + + function garbageCollection() { + global $user; + + // When cache lifetime is in force, avoid running garbage collection too + // often since this will remove temporary cache items indiscriminately. + $cache_flush = variable_get('cache_flush_' . $this->bin, 0); + if ($cache_flush && ($cache_flush + variable_get('cache_lifetime', 0) <= REQUEST_TIME)) { + // Reset the variable immediately to prevent a meltdown in heavy load situations. + variable_set('cache_flush_' . $this->bin, 0); + // Time to flush old cache data + db_delete($this->bin) + ->condition('expire', CACHE_PERMANENT, '<>') + ->condition('expire', $cache_flush, '<=') + ->execute(); + } + } + + function clear($cid = NULL, $wildcard = FALSE) { + global $user; + + if (empty($cid)) { + $this->expire(); + } else { if ($wildcard) { if ($cid == '*') { - db_truncate($this->bin)->execute(); + $this->flush(); } else { - db_delete($this->bin) - ->condition('cid', db_like($cid) . '%', 'LIKE') - ->execute(); + $this->deletePrefix($cid); } } elseif (is_array($cid)) { - // Delete in chunks when a large array is passed. - do { - db_delete($this->bin) - ->condition('cid', array_splice($cid, 0, 1000), 'IN') - ->execute(); - } - while (count($cid)); + $this->deleteMultiple($cid); } else { - db_delete($this->bin) - ->condition('cid', $cid) - ->execute(); + $this->delete($cid); } } } diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php index 5c39cfc11cd5..b2a7bf1d3433 100644 --- a/modules/simpletest/drupal_web_test_case.php +++ b/modules/simpletest/drupal_web_test_case.php @@ -1238,6 +1238,10 @@ protected function setUp() { ->condition('test_id', $this->testId) ->execute(); + // Reset all statics and variables to perform tests in a clean environment. + $conf = array(); + drupal_static_reset(); + // Clone the current connection and replace the current prefix. $connection_info = Database::getConnectionInfo('default'); Database::renameConnection('default', 'simpletest_original_default'); @@ -1285,10 +1289,6 @@ protected function setUp() { ini_set('log_errors', 1); ini_set('error_log', $public_files_directory . '/error.log'); - // Reset all statics and variables to perform tests in a clean environment. - $conf = array(); - drupal_static_reset(); - // Set the test information for use in other parts of Drupal. $test_info = &$GLOBALS['drupal_test_info']; $test_info['test_run_id'] = $this->databasePrefix; diff --git a/modules/simpletest/tests/cache.test b/modules/simpletest/tests/cache.test index 954f575961dc..1235269ccad4 100644 --- a/modules/simpletest/tests/cache.test +++ b/modules/simpletest/tests/cache.test @@ -1,7 +1,7 @@ <?php class CacheTestCase extends DrupalWebTestCase { - protected $default_bin = 'cache'; + protected $default_bin = 'cache_page'; protected $default_cid = 'test_temporary'; protected $default_value = 'CacheTest'; @@ -22,9 +22,9 @@ class CacheTestCase extends DrupalWebTestCase { $bin = $this->default_bin; } - $cache = cache_get($cid, $bin); + $cached = cache($bin)->get($cid); - return isset($cache->data) && $cache->data == $var; + return isset($cached->data) && $cached->data == $var; } /** @@ -71,8 +71,8 @@ class CacheTestCase extends DrupalWebTestCase { $cid = $this->default_cid; } - $cache = cache_get($cid, $bin); - $this->assertFalse($cache, $message); + $cached = cache($bin)->get($cid); + $this->assertFalse($cached, $message); } /** @@ -85,7 +85,7 @@ class CacheTestCase extends DrupalWebTestCase { $bin = $this->default_bin; } - cache_clear_all(NULL, $bin); + cache($bin)->expire(); } /** @@ -146,23 +146,24 @@ class CacheSavingCase extends CacheTestCase { $test_object->test2 = 100; $test_object->test3 = array('drupal1', 'drupal2' => 'drupal3', 'drupal4' => array('drupal5', 'drupal6')); - cache_set('test_object', $test_object, 'cache'); - $cache = cache_get('test_object', 'cache'); - $this->assertTrue(isset($cache->data) && $cache->data == $test_object, t('Object is saved and restored properly.')); + + cache()->set('test_object', $test_object); + $cached = cache()->get('test_object'); + $this->assertTrue(isset($cached->data) && $cached->data == $test_object, t('Object is saved and restored properly.')); } /* * Check or a variable is stored and restored properly. **/ function checkVariable($var) { - cache_set('test_var', $var, 'cache'); - $cache = cache_get('test_var', 'cache'); - $this->assertTrue(isset($cache->data) && $cache->data === $var, t('@type is saved and restored properly.', array('@type' => ucfirst(gettype($var))))); + cache()->set('test_var', $var); + $cached = cache()->get('test_var'); + $this->assertTrue(isset($cached->data) && $cached->data === $var, t('@type is saved and restored properly.', array('@type' => ucfirst(gettype($var))))); } } /** - * Test cache_get_multiple(). + * Test getMultiple(). */ class CacheGetMultipleUnitTest extends CacheTestCase { @@ -175,33 +176,34 @@ class CacheGetMultipleUnitTest extends CacheTestCase { } function setUp() { - $this->default_bin = 'cache_page'; + $this->default_bin = 'page'; parent::setUp(); } /** - * Test cache_get_multiple(). + * Test getMultiple(). */ function testCacheMultiple() { $item1 = $this->randomName(10); $item2 = $this->randomName(10); - cache_set('item1', $item1, $this->default_bin); - cache_set('item2', $item2, $this->default_bin); + $cache = cache($this->default_bin); + $cache->set('item1', $item1); + $cache->set('item2', $item2); $this->assertTrue($this->checkCacheExists('item1', $item1), t('Item 1 is cached.')); $this->assertTrue($this->checkCacheExists('item2', $item2), t('Item 2 is cached.')); - // Fetch both records from the database with cache_get_multiple(). + // Fetch both records from the database with getMultiple(). $item_ids = array('item1', 'item2'); - $items = cache_get_multiple($item_ids, $this->default_bin); + $items = $cache->getMultiple($item_ids); $this->assertEqual($items['item1']->data, $item1, t('Item was returned from cache successfully.')); $this->assertEqual($items['item2']->data, $item2, t('Item was returned from cache successfully.')); // Remove one item from the cache. - cache_clear_all('item2', $this->default_bin); + $cache->delete('item2'); - // Confirm that only one item is returned by cache_get_multiple(). + // Confirm that only one item is returned by getMultiple(). $item_ids = array('item1', 'item2'); - $items = cache_get_multiple($item_ids, $this->default_bin); + $items = $cache->getMultiple($item_ids); $this->assertEqual($items['item1']->data, $item1, t('Item was returned from cache successfully.')); $this->assertFalse(isset($items['item2']), t('Item was not returned from the cache.')); $this->assertTrue(count($items) == 1, t('Only valid cache entries returned.')); @@ -221,7 +223,7 @@ class CacheClearCase extends CacheTestCase { } function setUp() { - $this->default_bin = 'cache_page'; + $this->default_bin = 'page'; $this->default_value = $this->randomName(10); parent::setUp(); @@ -231,44 +233,36 @@ class CacheClearCase extends CacheTestCase { * Test clearing using a cid. */ function testClearCid() { - cache_set('test_cid_clear', $this->default_value, $this->default_bin); + $cache = cache($this->default_bin); + $cache->set('test_cid_clear', $this->default_value); $this->assertCacheExists(t('Cache was set for clearing cid.'), $this->default_value, 'test_cid_clear'); - cache_clear_all('test_cid_clear', $this->default_bin); + $cache->delete('test_cid_clear'); $this->assertCacheRemoved(t('Cache was removed after clearing cid.'), 'test_cid_clear'); - - cache_set('test_cid_clear1', $this->default_value, $this->default_bin); - cache_set('test_cid_clear2', $this->default_value, $this->default_bin); - $this->assertTrue($this->checkCacheExists('test_cid_clear1', $this->default_value) - && $this->checkCacheExists('test_cid_clear2', $this->default_value), - t('Two caches were created for checking cid "*" with wildcard false.')); - cache_clear_all('*', $this->default_bin); - $this->assertTrue($this->checkCacheExists('test_cid_clear1', $this->default_value) - && $this->checkCacheExists('test_cid_clear2', $this->default_value), - t('Two caches still exists after clearing cid "*" with wildcard false.')); } /** * Test clearing using wildcard. */ function testClearWildcard() { - cache_set('test_cid_clear1', $this->default_value, $this->default_bin); - cache_set('test_cid_clear2', $this->default_value, $this->default_bin); + $cache = cache($this->default_bin); + $cache->set('test_cid_clear1', $this->default_value); + $cache->set('test_cid_clear2', $this->default_value); $this->assertTrue($this->checkCacheExists('test_cid_clear1', $this->default_value) && $this->checkCacheExists('test_cid_clear2', $this->default_value), t('Two caches were created for checking cid "*" with wildcard true.')); - cache_clear_all('*', $this->default_bin, TRUE); + $cache->flush(); $this->assertFalse($this->checkCacheExists('test_cid_clear1', $this->default_value) || $this->checkCacheExists('test_cid_clear2', $this->default_value), t('Two caches removed after clearing cid "*" with wildcard true.')); - cache_set('test_cid_clear1', $this->default_value, $this->default_bin); - cache_set('test_cid_clear2', $this->default_value, $this->default_bin); + $cache->set('test_cid_clear1', $this->default_value); + $cache->set('test_cid_clear2', $this->default_value); $this->assertTrue($this->checkCacheExists('test_cid_clear1', $this->default_value) && $this->checkCacheExists('test_cid_clear2', $this->default_value), t('Two caches were created for checking cid substring with wildcard true.')); - cache_clear_all('test_', $this->default_bin, TRUE); + $cache->deletePrefix('test_'); $this->assertFalse($this->checkCacheExists('test_cid_clear1', $this->default_value) || $this->checkCacheExists('test_cid_clear2', $this->default_value), t('Two caches removed after clearing cid substring with wildcard true.')); @@ -279,16 +273,17 @@ class CacheClearCase extends CacheTestCase { */ function testClearArray() { // Create three cache entries. - cache_set('test_cid_clear1', $this->default_value, $this->default_bin); - cache_set('test_cid_clear2', $this->default_value, $this->default_bin); - cache_set('test_cid_clear3', $this->default_value, $this->default_bin); + $cache = cache($this->default_bin); + $cache->set('test_cid_clear1', $this->default_value); + $cache->set('test_cid_clear2', $this->default_value); + $cache->set('test_cid_clear3', $this->default_value); $this->assertTrue($this->checkCacheExists('test_cid_clear1', $this->default_value) && $this->checkCacheExists('test_cid_clear2', $this->default_value) && $this->checkCacheExists('test_cid_clear3', $this->default_value), t('Three cache entries were created.')); // Clear two entries using an array. - cache_clear_all(array('test_cid_clear1', 'test_cid_clear2'), $this->default_bin); + $cache->deleteMultiple(array('test_cid_clear1', 'test_cid_clear2')); $this->assertFalse($this->checkCacheExists('test_cid_clear1', $this->default_value) || $this->checkCacheExists('test_cid_clear2', $this->default_value), t('Two cache entries removed after clearing with an array.')); @@ -299,12 +294,12 @@ class CacheClearCase extends CacheTestCase { // Set the cache clear threshold to 2 to confirm that the full bin is cleared // when the threshold is exceeded. variable_set('cache_clear_threshold', 2); - cache_set('test_cid_clear1', $this->default_value, $this->default_bin); - cache_set('test_cid_clear2', $this->default_value, $this->default_bin); + $cache->set('test_cid_clear1', $this->default_value); + $cache->set('test_cid_clear2', $this->default_value); $this->assertTrue($this->checkCacheExists('test_cid_clear1', $this->default_value) && $this->checkCacheExists('test_cid_clear2', $this->default_value), t('Two cache entries were created.')); - cache_clear_all(array('test_cid_clear1', 'test_cid_clear2', 'test_cid_clear3'), $this->default_bin); + $cache->deleteMultiple(array('test_cid_clear1', 'test_cid_clear2', 'test_cid_clear3')); $this->assertFalse($this->checkCacheExists('test_cid_clear1', $this->default_value) || $this->checkCacheExists('test_cid_clear2', $this->default_value) || $this->checkCacheExists('test_cid_clear3', $this->default_value), @@ -316,7 +311,7 @@ class CacheClearCase extends CacheTestCase { */ function testFlushAllCaches() { // Create cache entries for each flushed cache bin. - $bins = array('cache', 'cache_filter', 'cache_page', 'cache_boostrap', 'cache_path'); + $bins = array('cache', 'filter', 'page', 'bootstrap', 'path'); $bins = array_merge(module_invoke_all('flush_caches'), $bins); foreach ($bins as $id => $bin) { $id = 'test_cid_clear' . $id; @@ -334,7 +329,7 @@ class CacheClearCase extends CacheTestCase { } /** - * Test cache_is_empty() function. + * Test isEmpty() method. */ class CacheIsEmptyCase extends CacheTestCase { public static function getInfo() { @@ -346,7 +341,7 @@ class CacheIsEmptyCase extends CacheTestCase { } function setUp() { - $this->default_bin = 'cache_page'; + $this->default_bin = 'page'; $this->default_value = $this->randomName(10); parent::setUp(); @@ -357,15 +352,16 @@ class CacheIsEmptyCase extends CacheTestCase { */ function testIsEmpty() { // Clear the cache bin. - cache_clear_all('*', $this->default_bin); - $this->assertTrue(cache_is_empty($this->default_bin), t('The cache bin is empty')); + $cache = cache($this->default_bin); + $cache->flush(); + $this->assertTrue($cache->isEmpty(), t('The cache bin is empty')); // Add some data to the cache bin. - cache_set($this->default_cid, $this->default_value, $this->default_bin); + $cache->set($this->default_cid, $this->default_value); $this->assertCacheExists(t('Cache was set.'), $this->default_value, $this->default_cid); - $this->assertFalse(cache_is_empty($this->default_bin), t('The cache bin is not empty')); + $this->assertFalse($cache->isEmpty(), t('The cache bin is not empty')); // Remove the cached data. - cache_clear_all($this->default_cid, $this->default_bin); + $cache->delete($this->default_cid); $this->assertCacheRemoved(t('Cache was removed.'), $this->default_cid); - $this->assertTrue(cache_is_empty($this->default_bin), t('The cache bin is empty')); + $this->assertTrue($cache->isEmpty(), t('The cache bin is empty')); } } -- GitLab