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.