abstract class Redis_Tests_Lock_LockingUnitTestCase in Redis 7.3
Hierarchy
- class \DrupalTestCase
Expanded class hierarchy of Redis_Tests_Lock_LockingUnitTestCase
1 string reference to 'Redis_Tests_Lock_LockingUnitTestCase'
- PhpRedisLockingUnitTestCase.test in lib/
Redis/ Tests/ Lock/ PhpRedisLockingUnitTestCase.test
File
- lib/
Redis/ Tests/ Lock/ LockingUnitTestCase.php, line 3
View source
abstract class Redis_Tests_Lock_LockingUnitTestCase extends Redis_Tests_AbstractUnitTestCase {
/**
* Ensure lock flush at tear down
*
* @var array
*/
protected $backends = array();
/**
* Get the lock client class name
*
* @return string
* Lock backend class name or null if cannot spawn it
*/
protected abstract function getLockBackendClass();
public function tearDown() {
if (!empty($this->backends)) {
foreach ($this->backends as $backend) {
$backend
->lockReleaseAll();
}
$this->backends = array();
}
parent::tearDown();
}
/**
* Create a new lock backend with a generated lock id
*
* @return Redis_Lock_BackendInterface
*/
public function createLockBackend() {
if (!$this
->getLockBackendClass()) {
throw new \Exception("Lock backend class does not exist");
}
$className = Redis_Client::getClass(Redis_Client::REDIS_IMPL_LOCK);
return $this->backends[] = new $className(Redis_Client::getClient(), Redis_Client::getDefaultPrefix('lock'));
}
public function testLock() {
$b1 = $this
->createLockBackend();
$b2 = $this
->createLockBackend();
$s = $b1
->lockAcquire('test1', 20000);
$this
->assertTrue($s, "Lock test1 acquired");
$s = $b1
->lockAcquire('test1', 20000);
$this
->assertTrue($s, "Lock test1 acquired a second time by the same thread");
$s = $b2
->lockAcquire('test1', 20000);
$this
->assertFalse($s, "Lock test1 could not be acquired by another thread");
$b2
->lockRelease('test1');
$s = $b2
->lockAcquire('test1');
$this
->assertFalse($s, "Lock test1 could not be released by another thread");
$b1
->lockRelease('test1');
$s = $b2
->lockAcquire('test1');
$this
->assertTrue($s, "Lock test1 has been released by the first thread");
}
public function testReleaseAll() {
$b1 = $this
->createLockBackend();
$b2 = $this
->createLockBackend();
$b1
->lockAcquire('test1', 200);
$b1
->lockAcquire('test2', 2000);
$b1
->lockAcquire('test3', 20000);
$s = $b2
->lockAcquire('test2');
$this
->assertFalse($s, "Lock test2 could not be released by another thread");
$s = $b2
->lockAcquire('test3');
$this
->assertFalse($s, "Lock test4 could not be released by another thread");
$b1
->lockReleaseAll();
$s = $b2
->lockAcquire('test1');
$this
->assertTrue($s, "Lock test1 has been released");
$s = $b2
->lockAcquire('test2');
$this
->assertTrue($s, "Lock test2 has been released");
$s = $b2
->lockAcquire('test3');
$this
->assertTrue($s, "Lock test3 has been released");
$b2
->lockReleaseAll();
}
public function testConcurentLock() {
/*
* Code for web test case
*
$this->drupalGet('redis/acquire/test1/1000');
$this->assertText("REDIS_ACQUIRED", "Lock test1 acquired");
$this->drupalGet('redis/acquire/test1/1');
$this->assertText("REDIS_FAILED", "Lock test1 could not be acquired by a second thread");
$this->drupalGet('redis/acquire/test2/1000');
$this->assertText("REDIS_ACQUIRED", "Lock test2 acquired");
$this->drupalGet('redis/acquire/test2/1');
$this->assertText("REDIS_FAILED", "Lock test2 could not be acquired by a second thread");
*/
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DrupalTestCase:: |
protected | property | Assertions thrown in that test case. | |
DrupalTestCase:: |
protected | property | The database prefix of this test run. | |
DrupalTestCase:: |
protected | property | The original file directory, before it was changed for testing purposes. | |
DrupalTestCase:: |
public | property | Current results of this test case. | |
DrupalTestCase:: |
protected | property | Flag to indicate whether the test has been set up. | |
DrupalTestCase:: |
protected | property | ||
DrupalTestCase:: |
protected | property | ||
DrupalTestCase:: |
protected | property | This class is skipped when looking for the source of an assertion. | |
DrupalTestCase:: |
protected | property | The test run ID. | |
DrupalTestCase:: |
protected | property | Time limit for the test. | |
DrupalTestCase:: |
public | property | Whether to cache the installation part of the setUp() method. | |
DrupalTestCase:: |
public | property | Whether to cache the modules installation part of the setUp() method. | |
DrupalTestCase:: |
protected | property | URL to the verbose output file directory. | |
DrupalTestCase:: |
protected | function | Internal helper: stores the assert. | |
DrupalTestCase:: |
protected | function | Check to see if two values are equal. | |
DrupalTestCase:: |
protected | function | Check to see if a value is false (an empty string, 0, NULL, or FALSE). | |
DrupalTestCase:: |
protected | function | Check to see if two values are identical. | |
DrupalTestCase:: |
protected | function | Check to see if two values are not equal. | |
DrupalTestCase:: |
protected | function | Check to see if two values are not identical. | |
DrupalTestCase:: |
protected | function | Check to see if a value is not NULL. | |
DrupalTestCase:: |
protected | function | Check to see if a value is NULL. | |
DrupalTestCase:: |
protected | function | Check to see if a value is not false (not an empty string, 0, NULL, or FALSE). | |
DrupalTestCase:: |
public static | function | Delete an assertion record by message ID. | |
DrupalTestCase:: |
protected | function | Fire an error assertion. | 1 |
DrupalTestCase:: |
public | function | Handle errors during test runs. | 1 |
DrupalTestCase:: |
protected | function | Handle exceptions. | |
DrupalTestCase:: |
protected | function | Fire an assertion that is always negative. | |
DrupalTestCase:: |
public static | function | Converts a list of possible parameters into a stack of permutations. | |
DrupalTestCase:: |
protected | function | Cycles through backtrace until the first non-assertion method is found. | |
DrupalTestCase:: |
public static | function | Returns the database connection to the site running Simpletest. | |
DrupalTestCase:: |
public static | function | Store an assertion from outside the testing context. | |
DrupalTestCase:: |
protected | function | Fire an assertion that is always positive. | |
DrupalTestCase:: |
public static | function | Generates a random string containing letters and numbers. | |
DrupalTestCase:: |
public static | function | Generates a random string of ASCII characters of codes 32 to 126. | |
DrupalTestCase:: |
public | function | Run all tests in this class. | |
DrupalTestCase:: |
protected | function | Logs a verbose message in a text file. | |
DrupalUnitTestCase:: |
function |
Constructor for DrupalUnitTestCase. Overrides DrupalTestCase:: |
||
Redis_Tests_AbstractUnitTestCase:: |
protected static | property | ||
Redis_Tests_AbstractUnitTestCase:: |
private | property | Drupal $conf array backup | |
Redis_Tests_AbstractUnitTestCase:: |
protected static | function | Enable the autoloader | |
Redis_Tests_AbstractUnitTestCase:: |
abstract protected | function | Set up the Redis configuration. | 21 |
Redis_Tests_AbstractUnitTestCase:: |
final private | function | Prepare client manager | |
Redis_Tests_AbstractUnitTestCase:: |
final private | function | Prepare Drupal environmment for testing | |
Redis_Tests_AbstractUnitTestCase:: |
final private | function | Restore client manager | |
Redis_Tests_AbstractUnitTestCase:: |
final private | function | Restore Drupal environment after testing. | |
Redis_Tests_AbstractUnitTestCase:: |
public | function |
Sets up unit test environment. Overrides DrupalUnitTestCase:: |
1 |
Redis_Tests_Lock_LockingUnitTestCase:: |
protected | property | Ensure lock flush at tear down | |
Redis_Tests_Lock_LockingUnitTestCase:: |
public | function | Create a new lock backend with a generated lock id | |
Redis_Tests_Lock_LockingUnitTestCase:: |
abstract protected | function | Get the lock client class name | 2 |
Redis_Tests_Lock_LockingUnitTestCase:: |
public | function |
Overrides Redis_Tests_AbstractUnitTestCase:: |
|
Redis_Tests_Lock_LockingUnitTestCase:: |
public | function | ||
Redis_Tests_Lock_LockingUnitTestCase:: |
public | function | ||
Redis_Tests_Lock_LockingUnitTestCase:: |
public | function |