MDL-40903 cache: Unittests and small fixes for persistent application cache
This commit is contained in:
committed by
Sam Hemelryk
parent
b7a3f7457d
commit
ae3f682a63
Vendored
+158
@@ -1535,4 +1535,162 @@ class cache_phpunit_tests extends advanced_testcase {
|
||||
$this->assertInstanceOf('cache_request', $cache);
|
||||
$this->assertArrayHasKey('cache_is_searchable', $cache->phpunit_get_store_implements());
|
||||
}
|
||||
|
||||
public function test_persistent_cache() {
|
||||
$instance = cache_config_phpunittest::instance();
|
||||
$instance->phpunit_add_definition('phpunit/persistentapp', array(
|
||||
'mode' => cache_store::MODE_APPLICATION,
|
||||
'component' => 'phpunit',
|
||||
'area' => 'persistentapp',
|
||||
'persistentdata' => true,
|
||||
'persistentmaxsize' => 3,
|
||||
));
|
||||
$instance->phpunit_add_definition('phpunit/persistentapp2', array(
|
||||
'mode' => cache_store::MODE_APPLICATION,
|
||||
'component' => 'phpunit',
|
||||
'area' => 'persistentapp2',
|
||||
'persistentdata' => true,
|
||||
'persistentmaxsize' => 3,
|
||||
));
|
||||
$instance->phpunit_add_definition('phpunit/persistentapp3', array(
|
||||
'mode' => cache_store::MODE_APPLICATION,
|
||||
'component' => 'phpunit',
|
||||
'area' => 'persistentapp3',
|
||||
'persistentdata' => true,
|
||||
'persistentmaxsize' => 3,
|
||||
));
|
||||
$instance->phpunit_add_definition('phpunit/persistentapp4', array(
|
||||
'mode' => cache_store::MODE_APPLICATION,
|
||||
'component' => 'phpunit',
|
||||
'area' => 'persistentapp3',
|
||||
'persistentdata' => true,
|
||||
'persistentmaxsize' => 4,
|
||||
));
|
||||
$cache = cache::make('phpunit', 'persistentapp');
|
||||
$this->assertInstanceOf('cache_phpunit_application', $cache);
|
||||
|
||||
// Set and get three elements.
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertTrue($cache->set('b', 'B'));
|
||||
$this->assertTrue($cache->set('c', 'C'));
|
||||
$this->assertEquals('A', $cache->get('a'));
|
||||
$this->assertEquals(array('b' => 'B', 'c' => 'C'), $cache->get_many(array('b', 'c')));
|
||||
|
||||
// Make sure all items are in persistent cache.
|
||||
$this->assertEquals('A', $cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertEquals('B', $cache->phpunit_get_directly_from_persistcache('b'));
|
||||
$this->assertEquals('C', $cache->phpunit_get_directly_from_persistcache('c'));
|
||||
|
||||
// Add new value and make sure it is in cache and it is in persistcache.
|
||||
$this->assertTrue($cache->set('d', 'D'));
|
||||
$this->assertEquals('D', $cache->phpunit_get_directly_from_persistcache('d'));
|
||||
$this->assertEquals('D', $cache->get('d'));
|
||||
|
||||
// Now the least recent accessed item (a) is no longer in persistent cache.
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertEquals('B', $cache->phpunit_get_directly_from_persistcache('b'));
|
||||
$this->assertEquals('C', $cache->phpunit_get_directly_from_persistcache('c'));
|
||||
|
||||
// Adding and deleting element.
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertTrue($cache->delete('a'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertFalse($cache->has('a'));
|
||||
|
||||
// Make sure "purge" deletes from persist as well.
|
||||
$cache->purge();
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('b'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('c'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('d'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('e'));
|
||||
|
||||
// Check that persistent cache holds the last accessed items by get/set.
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertTrue($cache->set('b', 'B'));
|
||||
$this->assertTrue($cache->set('c', 'C'));
|
||||
$this->assertTrue($cache->set('d', 'D'));
|
||||
$this->assertTrue($cache->set('e', 'E'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('b'));
|
||||
$this->assertEquals('C', $cache->phpunit_get_directly_from_persistcache('c'));
|
||||
$this->assertEquals('D', $cache->phpunit_get_directly_from_persistcache('d'));
|
||||
$this->assertEquals('E', $cache->phpunit_get_directly_from_persistcache('e'));
|
||||
|
||||
/** @var cache_phpunit_application $cache */
|
||||
$cache = cache::make('phpunit', 'persistentapp2');
|
||||
$this->assertInstanceOf('cache_phpunit_application', $cache);
|
||||
|
||||
// Check that persistent cache holds the last accessed items by get/set.
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertTrue($cache->set('b', 'B'));
|
||||
$this->assertTrue($cache->set('c', 'C'));
|
||||
$this->assertTrue($cache->set('d', 'D'));
|
||||
$this->assertTrue($cache->set('e', 'E'));
|
||||
// Current keys in persist cache: c, d, e.
|
||||
$this->assertEquals('C', $cache->phpunit_get_directly_from_persistcache('c'));
|
||||
$this->assertEquals('D', $cache->phpunit_get_directly_from_persistcache('d'));
|
||||
$this->assertEquals('E', $cache->phpunit_get_directly_from_persistcache('e'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('b'));
|
||||
|
||||
$this->assertEquals('A', $cache->get('a'));
|
||||
// Current keys in persist cache: d, e, a.
|
||||
$this->assertEquals('D', $cache->phpunit_get_directly_from_persistcache('d'));
|
||||
$this->assertEquals('E', $cache->phpunit_get_directly_from_persistcache('e'));
|
||||
$this->assertEquals('A', $cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('b'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('c'));
|
||||
|
||||
// Current keys in persist cache: d, e, a.
|
||||
$this->assertEquals(array('c' => 'C'), $cache->get_many(array('c')));
|
||||
// Current keys in persist cache: e, a, c.
|
||||
$this->assertEquals('E', $cache->phpunit_get_directly_from_persistcache('e'));
|
||||
$this->assertEquals('A', $cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertEquals('C', $cache->phpunit_get_directly_from_persistcache('c'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('b'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('d'));
|
||||
|
||||
|
||||
$cache = cache::make('phpunit', 'persistentapp3');
|
||||
$this->assertInstanceOf('cache_phpunit_application', $cache);
|
||||
|
||||
// Check that persistent cache holds the last accessed items by get/set.
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertTrue($cache->set('b', 'B'));
|
||||
$this->assertTrue($cache->set('c', 'C'));
|
||||
$this->assertTrue($cache->set('d', 'D'));
|
||||
$this->assertTrue($cache->set('e', 'E'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('b'));
|
||||
$this->assertEquals('C', $cache->phpunit_get_directly_from_persistcache('c'));
|
||||
$this->assertEquals('D', $cache->phpunit_get_directly_from_persistcache('d'));
|
||||
$this->assertEquals('E', $cache->phpunit_get_directly_from_persistcache('e'));
|
||||
|
||||
$this->assertTrue($cache->set('b', 'B2'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertEquals('B2', $cache->phpunit_get_directly_from_persistcache('b'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('c'));
|
||||
$this->assertEquals('D', $cache->phpunit_get_directly_from_persistcache('d'));
|
||||
$this->assertEquals('E', $cache->phpunit_get_directly_from_persistcache('e'));
|
||||
|
||||
$this->assertEquals(2, $cache->set_many(array('b' => 'B3', 'c' => 'C3')));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertEquals('B3', $cache->phpunit_get_directly_from_persistcache('b'));
|
||||
$this->assertEquals('C3', $cache->phpunit_get_directly_from_persistcache('c'));
|
||||
$this->assertFalse($cache->phpunit_get_directly_from_persistcache('d'));
|
||||
$this->assertEquals('E', $cache->phpunit_get_directly_from_persistcache('e'));
|
||||
|
||||
$cache = cache::make('phpunit', 'persistentapp4');
|
||||
$this->assertInstanceOf('cache_phpunit_application', $cache);
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertTrue($cache->set('a', 'A'));
|
||||
$this->assertEquals('A', $cache->phpunit_get_directly_from_persistcache('a'));
|
||||
$this->assertEquals('A', $cache->get('a'));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user