diff --git a/core/modules/system/src/Tests/Cache/ChainedFastBackendUnitTest.php b/core/modules/system/src/Tests/Cache/ChainedFastBackendUnitTest.php index c34563c..1c484fa 100644 --- a/core/modules/system/src/Tests/Cache/ChainedFastBackendUnitTest.php +++ b/core/modules/system/src/Tests/Cache/ChainedFastBackendUnitTest.php @@ -7,6 +7,7 @@ namespace Drupal\system\Tests\Cache; +use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Cache\ChainedFastBackend; use Drupal\Core\Cache\DatabaseBackend; use Drupal\Core\Cache\PhpBackend; @@ -34,4 +35,31 @@ protected function createCacheBackend($bin) { return $backend; } + /** + * Test permanent TTL. + */ + function testPermanentTtl() { + $bin = 'test'; + $consistent_backend = new DatabaseBackend(\Drupal::service('database'), \Drupal::service('cache_tags.invalidator.checksum'), $bin); + $consistent_backend->setPermanentTtl(2); + $fast_backend = new DatabaseBackend(\Drupal::service('database'), \Drupal::service('cache_tags.invalidator.checksum'), $bin); + $consistent_backend->setPermanentTtl(4); + $backend = new ChainedFastBackend($consistent_backend, $fast_backend, $bin); + $cid = 'test'; + $value = 'test'; + $backend->set($cid, $value); + + // The item expiry will be taken from the fast backend, so reflects the + // settings on that backend. + $item = $backend->get($cid); + $this->assertTrue($item->expire !== CacheBackendInterface::CACHE_PERMANENT); + $this->assertTrue($item->expire <= REQUEST_TIME + 4 * DatabaseBackend::JITTER_MULTIPLIER); + $item = $consistent_backend->get($cid); + $this->assertTrue($item->expire !== CacheBackendInterface::CACHE_PERMANENT); + $this->assertTrue($item->expire <= REQUEST_TIME + 4 * DatabaseBackend::JITTER_MULTIPLIER); + $item = $fast_backend->get($cid); + $this->assertTrue($item->expire !== CacheBackendInterface::CACHE_PERMANENT); + $this->assertTrue($item->expire <= REQUEST_TIME + 2 * DatabaseBackend::JITTER_MULTIPLIER); + } + }