function DrupalWebTestCase::storeSetupCache

Store the installation setup to a cache.

Parameters

string $cache_key_prefix: (optional) Additional prefix for the cache key.

Return value

bool TRUE if the installation was stored in the cache, FALSE otherwise.

1 call to DrupalWebTestCase::storeSetupCache()
DrupalWebTestCase::setUp in modules/simpletest/drupal_web_test_case.php
Sets up a Drupal site for running functional and integration tests.

File

modules/simpletest/drupal_web_test_case.php, line 1575

Class

DrupalWebTestCase
Test case for typical Drupal tests.

Code

protected function storeSetupCache($cache_key_prefix = '') {
    $cache_key = $this->getSetupCacheKey($cache_key_prefix);
    $lock_key = 'simpletest_store_cache_' . $cache_key . '_' . $this->testId;
    // All concurrent tests share the same test id. Therefore it is possible to
    // use the lock to ensure that only one process will store the cache. This
    // is important as else DB tables created by one process could be deleted
    // by another as the cache copying is idempotent.
    if (!lock_acquire($lock_key)) {
        return FALSE;
    }
    // Try to copy the installation to the setup cache - now that we have a
    // lock to do so.
    if (!$this->copySetupCache(substr($this->databasePrefix, 10), $cache_key)) {
        // It is non-fatal if the cache cannot be copied as the next test run
        // will try it again.
        $this->assert('debug', t('Storing cache with key @key failed', array(
            '@key' => $cache_key,
        )), 'storeSetupCache');
        lock_release($lock_key);
        return FALSE;
    }
    // Inform others that this cache is usable now.
    $cache_file = $this->originalFileDirectory . '/simpletest/' . $cache_key . '/simpletest-cache-setup';
    file_put_contents($cache_file, time());
    lock_release($lock_key);
    return TRUE;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.