class MemCacheClearCase in Memcache API and Integration 7
Same name in this branch
- 7 tests/memcache.test \MemCacheClearCase
- 7 tests/memcache6.test \MemCacheClearCase
Same name and namespace in other branches
- 6 tests/memcache.test \MemCacheClearCase
Test cache clearing methods.
Hierarchy
- class \MemCacheClearCase extends \MemcacheTestCase
Expanded class hierarchy of MemCacheClearCase
File
- tests/
memcache6.test, line 176
View source
class MemCacheClearCase extends MemcacheTestCase {
public static function getInfo() {
return array(
'name' => 'Cache clear test',
'description' => 'Check our clearing is done the proper way.',
'group' => 'Memcache',
);
}
function setUp() {
$this->default_bin = 'cache_page';
$this->default_value = $this
->randomName(10);
parent::setUp();
}
/**
* Test clearing the cache with a cid, no cache lifetime.
*/
function testClearCidNoLifetime() {
$this
->clearCidTest();
}
/**
* Test clearing the cache with a cid, with cache lifetime.
*/
function testClearCidLifetime() {
variable_set('cache_lifetime', 6000);
$this
->clearCidTest();
}
/**
* Test clearing using wildcard prefixes, no cache lifetime.
*/
function testClearWildcardNoLifetime() {
$this
->clearWildcardPrefixTest();
}
/**
* Test clearing using wildcard prefix, with cache lifetime.
*/
function testClearWildcardLifetime() {
variable_set('cache_lifetime', 6000);
$this
->clearWildcardPrefixTest();
}
/**
* Test full bin flushes with no cache lifetime.
*/
function testClearWildcardFull() {
variable_set("cache_flush_{$this->default_bin}", 0);
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 true.'));
cache_clear_all('*', $this->default_bin, TRUE);
$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.'));
}
/**
* Test full bin flushes with cache lifetime.
*/
function testClearCacheLifetime() {
variable_set("cache_flush_{$this->default_bin}", 0);
variable_set('cache_lifetime', 600);
// Set a cache item with an expiry.
cache_set('test_cid', $this->default_value, $this->default_bin, time() + 3600);
$this
->assertTrue($this
->checkCacheExists('test_cid', $this->default_value), 'Cache item was created successfully.');
// Set a permanent cache item.
cache_set('test_cid_2', $this->default_value, $this->default_bin);
// Clear the page and block caches.
cache_clear_all();
// Since the cache was cleared within the current session, cache_get()
// should return false.
$this
->assertFalse($this
->checkCacheExists('test_cid', $this->default_value), 'Cache item was cleared successfully.');
// However permament items should stay in place.
$this
->assertTrue($this
->checkCacheExists('test_cid_2', $this->default_value), 'Cache item was not cleared');
// If $_SESSION['cache_flush'] is not set, then the expired item should be returned.
unset($_SESSION['cache_flush']);
$this
->assertTrue($this
->checkCacheExists('test_cid', $this->default_value), 'Cache item is still returned due to minimum cache lifetime.');
// Set a much shorter cache lifetime.
variable_set('cache_content_flush_' . $this->default_bin, 0);
variable_set('cache_lifetime', 1);
cache_set('test_cid_1', $this->default_value, $this->default_bin, time() + 6000);
$this
->assertTrue($this
->checkCacheExists('test_cid', $this->default_value), 'Cache item was created successfully.');
sleep(2);
cache_clear_all();
$this
->assertFalse($this
->checkCacheExists('test_cid', $this->default_value), 'Cache item is not returned once minimum cache lifetime has expired.');
// Reset the cache clear variables.
variable_set('cache_content_flush_' . $this->default_bin, 0);
variable_set('cache_lifetime', 6000);
sleep(1);
// Confirm that cache_lifetime does not take effect for full bin flushes.
cache_set('test_cid', $this->default_value, $this->default_bin, time() + 6000);
$this
->assertTrue($this
->checkCacheExists('test_cid', $this->default_value), 'Cache item was created successfully.');
cache_set('test_cid_2', $this->default_value, $this->default_bin);
$this
->assertTrue($this
->checkCacheExists('test_cid_2', $this->default_value), 'Cache item was created successfully.');
// Now flush the bin.
cache_clear_all('*', $this->default_bin, TRUE);
$this
->assertFalse($this
->checkCacheExists('test_cid', $this->default_value), 'Cache item was cleared successfully.');
$this
->assertFalse($this
->checkCacheExists('test_cid_2', $this->default_value), 'Cache item was cleared successfully.');
}
/**
* Test clearing using a cid.
*/
function clearCidTest() {
variable_set("cache_flush_{$this->default_bin}", 0);
cache_set('test_cid_clear', $this->default_value, $this->default_bin);
$this
->assertCacheExists(t('Cache was set for clearing cid.'), $this->default_value, 'test_cid_clear');
cache_clear_all('test_cid_clear', $this->default_bin);
$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 cache clears using wildcard prefixes.
*/
function clearWildcardPrefixTest() {
variable_set("cache_flush_{$this->default_bin}", 0);
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 substring with wildcard true.'));
cache_clear_all('test_', $this->default_bin, TRUE);
$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.'));
// Test for the case where a wildcard object disappears, for example a
// partial memcache restart or eviction.
cache_set('test_cid_clear1', $this->default_value, $this->default_bin);
$this
->assertTrue($this
->checkCacheExists('test_cid_clear1', $this->default_value), 'The cache was created successfully.');
cache_clear_all('test_', $this->default_bin, TRUE);
$this
->assertFalse($this
->checkCacheExists('test_cid_clear1', $this->default_value), 'The cache was cleared successfully.');
// Delete the wildcard manually to simulate an eviction.
$wildcard = '.wildcard-' . 'test_';
dmemcache_delete($wildcard, $this->default_bin);
// Reset the memcache_wildcards() static cache.
memcache_wildcards(FALSE, FALSE, FALSE, TRUE);
$this
->assertFalse($this
->checkCacheExists('test_cid_clear1', $this->default_value), 'The cache was cleared successfully.');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
MemCacheClearCase:: |
function | Test clearing using a cid. | ||
MemCacheClearCase:: |
function | Test cache clears using wildcard prefixes. | ||
MemCacheClearCase:: |
public static | function | ||
MemCacheClearCase:: |
function | |||
MemCacheClearCase:: |
function | Test full bin flushes with cache lifetime. | ||
MemCacheClearCase:: |
function | Test clearing the cache with a cid, with cache lifetime. | ||
MemCacheClearCase:: |
function | Test clearing the cache with a cid, no cache lifetime. | ||
MemCacheClearCase:: |
function | Test full bin flushes with no cache lifetime. | ||
MemCacheClearCase:: |
function | Test clearing using wildcard prefix, with cache lifetime. | ||
MemCacheClearCase:: |
function | Test clearing using wildcard prefixes, no cache lifetime. |