class TestDiscoveryCacheContext in Drupal 8
Defines the TestDiscoveryCacheContext service.
Cache context ID: 'test_discovery'.
Hierarchy
- class \Drupal\simpletest\Cache\Context\TestDiscoveryCacheContext implements CacheContextInterface
Expanded class hierarchy of TestDiscoveryCacheContext
1 file declares its use of TestDiscoveryCacheContext
- TestDiscoveryCacheContextTest.php in core/
modules/ simpletest/ tests/ src/ Kernel/ Cache/ Context/ TestDiscoveryCacheContextTest.php
1 string reference to 'TestDiscoveryCacheContext'
- simpletest.services.yml in core/
modules/ simpletest/ simpletest.services.yml - core/modules/simpletest/simpletest.services.yml
1 service uses TestDiscoveryCacheContext
- cache_context.test_discovery in core/
modules/ simpletest/ simpletest.services.yml - Drupal\simpletest\Cache\Context\TestDiscoveryCacheContext
File
- core/
modules/ simpletest/ src/ Cache/ Context/ TestDiscoveryCacheContext.php, line 16
Namespace
Drupal\simpletest\Cache\ContextView source
class TestDiscoveryCacheContext implements CacheContextInterface {
/**
* The test discovery service.
*
* @var \Drupal\simpletest\TestDiscovery
*/
protected $testDiscovery;
/**
* The private key service.
*
* @var \Drupal\Core\PrivateKey
*/
protected $privateKey;
/**
* The hash of discovered test information.
*
* Services should not be stateful, but we only keep this information per
* request. That way we don't perform a file scan every time we need this
* hash. The test scan results are unlikely to change during the request.
*
* @var string
*/
protected $hash;
/**
* Construct a test discovery cache context.
*
* @param \Drupal\simpletest\TestDiscovery $test_discovery
* The test discovery service.
* @param \Drupal\Core\PrivateKey $private_key
* The private key service.
*/
public function __construct(TestDiscovery $test_discovery, PrivateKey $private_key) {
$this->testDiscovery = $test_discovery;
$this->privateKey = $private_key;
}
/**
* {@inheritdoc}
*/
public static function getLabel() {
return t('Test discovery');
}
/**
* {@inheritdoc}
*/
public function getContext() {
if (empty($this->hash)) {
$tests = $this->testDiscovery
->getTestClasses();
$this->hash = $this
->hash(serialize($tests));
}
return $this->hash;
}
/**
* {@inheritdoc}
*/
public function getCacheableMetadata() {
return new CacheableMetadata();
}
/**
* Hashes the given string.
*
* @param string $identifier
* The string to be hashed.
*
* @return string
* The hash.
*/
protected function hash($identifier) {
return hash('sha256', $this->privateKey
->get() . Settings::getHashSalt() . $identifier);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
TestDiscoveryCacheContext:: |
protected | property | The hash of discovered test information. | |
TestDiscoveryCacheContext:: |
protected | property | The private key service. | |
TestDiscoveryCacheContext:: |
protected | property | The test discovery service. | |
TestDiscoveryCacheContext:: |
public | function |
Gets the cacheability metadata for the context. Overrides CacheContextInterface:: |
|
TestDiscoveryCacheContext:: |
public | function |
Returns the string representation of the cache context. Overrides CacheContextInterface:: |
|
TestDiscoveryCacheContext:: |
public static | function |
Returns the label of the cache context. Overrides CacheContextInterface:: |
|
TestDiscoveryCacheContext:: |
protected | function | Hashes the given string. | |
TestDiscoveryCacheContext:: |
public | function | Construct a test discovery cache context. |