diff --git a/cache/classes/loaders.php b/cache/classes/loaders.php index 9ea6df32080a2..168124d7002d4 100644 --- a/cache/classes/loaders.php +++ b/cache/classes/loaders.php @@ -1077,7 +1077,7 @@ protected function static_acceleration_get($key) { $result = $data; } } - if ($result) { + if ($result !== false) { if ($this->perfdebug) { cache_helper::record_cache_hit('** static acceleration **', $this->definition); } @@ -2162,4 +2162,4 @@ protected function use_static_acceleration() { */ class cache_request extends cache { // This comment appeases code pre-checker ;) ! -} \ No newline at end of file +} diff --git a/cache/tests/cache_test.php b/cache/tests/cache_test.php index ef4709670b0a6..0a47e4f9b1511 100644 --- a/cache/tests/cache_test.php +++ b/cache/tests/cache_test.php @@ -2177,6 +2177,39 @@ public function test_performance_debug() { $startstats[$requestid]['stores']['cachestore_static']['sets']); } + public function test_static_cache() { + global $CFG; + $this->resetAfterTest(true); + $CFG->perfdebug = 15; + + // Create cache store with static acceleration. + $instance = cache_config_testing::instance(); + $applicationid = 'phpunit/applicationperf'; + $instance->phpunit_add_definition($applicationid, array( + 'mode' => cache_store::MODE_APPLICATION, + 'component' => 'phpunit', + 'area' => 'applicationperf', + 'simplekeys' => true, + 'staticacceleration' => true, + 'staticaccelerationsize' => 3 + )); + + $application = cache::make('phpunit', 'applicationperf'); + + // Check that stores register sets. + $this->assertTrue($application->set('setMe1', 1)); + $this->assertTrue($application->set('setMe2', 0)); + $this->assertTrue($application->set('setMe3', array())); + $this->assertTrue($application->get('setMe1') !== false); + $this->assertTrue($application->get('setMe2') !== false); + $this->assertTrue($application->get('setMe3') !== false); + + // Check that the static acceleration worked, even on empty arrays and the number 0. + $endstats = cache_helper::get_stats(); + $this->assertEquals(0, $endstats[$applicationid]['stores']['** static acceleration **']['misses']); + $this->assertEquals(3, $endstats[$applicationid]['stores']['** static acceleration **']['hits']); + } + public function test_performance_debug_off() { global $CFG; $this->resetAfterTest(true);