commiting uncommited changes on live site
[weblabels.fsf.org.git] / crm.fsf.org / 20131203 / files / modules / simpletest / tests / lock.test
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