cms/drupal/modules/simpletest/tests/lock.test
changeset 541 e756a8c72c3d
equal deleted inserted replaced
540:07239de796bb 541:e756a8c72c3d
       
     1 <?php
       
     2 
       
     3 /**
       
     4  * Tests for the lock system.
       
     5  */
       
     6 class LockFunctionalTest extends DrupalWebTestCase {
       
     7 
       
     8   public static function getInfo() {
       
     9     return array(
       
    10       'name' => 'Locking framework tests',
       
    11       'description' => 'Confirm locking works between two separate requests.',
       
    12       'group' => 'System',
       
    13     );
       
    14   }
       
    15 
       
    16   function setUp() {
       
    17     parent::setUp('system_test');
       
    18   }
       
    19 
       
    20   /**
       
    21    * Confirm that we can acquire and release locks in two parallel requests.
       
    22    */
       
    23   function testLockAcquire() {
       
    24     $lock_acquired = 'TRUE: Lock successfully acquired in system_test_lock_acquire()';
       
    25     $lock_not_acquired = 'FALSE: Lock not acquired in system_test_lock_acquire()';
       
    26     $this->assertTrue(lock_acquire('system_test_lock_acquire'), 'Lock acquired by this request.', 'Lock');
       
    27     $this->assertTrue(lock_acquire('system_test_lock_acquire'), 'Lock extended by this request.', 'Lock');
       
    28     lock_release('system_test_lock_acquire');
       
    29 
       
    30     // Cause another request to acquire the lock.
       
    31     $this->drupalGet('system-test/lock-acquire');
       
    32     $this->assertText($lock_acquired, 'Lock acquired by the other request.', 'Lock');
       
    33     // The other request has finished, thus it should have released its lock.
       
    34     $this->assertTrue(lock_acquire('system_test_lock_acquire'), 'Lock acquired by this request.', 'Lock');
       
    35     // This request holds the lock, so the other request cannot acquire it.
       
    36     $this->drupalGet('system-test/lock-acquire');
       
    37     $this->assertText($lock_not_acquired, 'Lock not acquired by the other request.', 'Lock');
       
    38     lock_release('system_test_lock_acquire');
       
    39 
       
    40     // Try a very short timeout and lock breaking.
       
    41     $this->assertTrue(lock_acquire('system_test_lock_acquire', 0.5), 'Lock acquired by this request.', 'Lock');
       
    42     sleep(1);
       
    43     // The other request should break our lock.
       
    44     $this->drupalGet('system-test/lock-acquire');
       
    45     $this->assertText($lock_acquired, 'Lock acquired by the other request, breaking our lock.', 'Lock');
       
    46     // We cannot renew it, since the other thread took it.
       
    47     $this->assertFalse(lock_acquire('system_test_lock_acquire'), 'Lock cannot be extended by this request.', 'Lock');
       
    48 
       
    49     // Check the shut-down function.
       
    50     $lock_acquired_exit = 'TRUE: Lock successfully acquired in system_test_lock_exit()';
       
    51     $lock_not_acquired_exit = 'FALSE: Lock not acquired in system_test_lock_exit()';
       
    52     $this->drupalGet('system-test/lock-exit');
       
    53     $this->assertText($lock_acquired_exit, 'Lock acquired by the other request before exit.', 'Lock');
       
    54     $this->assertTrue(lock_acquire('system_test_lock_exit'), 'Lock acquired by this request after the other request exits.', 'Lock');
       
    55   }
       
    56 }
       
    57