OLD | NEW |
| (Empty) |
1 # Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Sze
ged | |
2 # | |
3 # All rights reserved. | |
4 # | |
5 # Redistribution and use in source and binary forms, with or without | |
6 # modification, are permitted provided that the following conditions | |
7 # are met: | |
8 # 1. Redistributions of source code must retain the above copyright | |
9 # notice, this list of conditions and the following disclaimer. | |
10 # 2. Redistributions in binary form must reproduce the above copyright | |
11 # notice, this list of conditions and the following disclaimer in the | |
12 # documentation and/or other materials provided with the distribution. | |
13 # | |
14 # THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF SZEGED ``AS IS'' AND ANY | |
15 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
16 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
17 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UNIVERSITY OF SZEGED OR | |
18 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | |
19 # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | |
20 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |
21 # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | |
22 # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
23 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
24 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
25 | |
26 import os | |
27 import tempfile | |
28 import unittest2 as unittest | |
29 | |
30 from webkitpy.common.system.file_lock import FileLock | |
31 | |
32 | |
33 class FileLockTest(unittest.TestCase): | |
34 | |
35 def setUp(self): | |
36 self._lock_name = "TestWebKit" + str(os.getpid()) + ".lock" | |
37 self._lock_path = os.path.join(tempfile.gettempdir(), self._lock_name) | |
38 self._file_lock1 = FileLock(self._lock_path, 0.1) | |
39 self._file_lock2 = FileLock(self._lock_path, 0.1) | |
40 | |
41 def tearDown(self): | |
42 self._file_lock1.release_lock() | |
43 self._file_lock2.release_lock() | |
44 | |
45 def test_lock_lifecycle(self): | |
46 # Create the lock. | |
47 self._file_lock1.acquire_lock() | |
48 self.assertTrue(os.path.exists(self._lock_path)) | |
49 | |
50 # Try to lock again. | |
51 self.assertFalse(self._file_lock2.acquire_lock()) | |
52 | |
53 # Release the lock. | |
54 self._file_lock1.release_lock() | |
55 self.assertFalse(os.path.exists(self._lock_path)) | |
56 | |
57 def test_stuck_lock(self): | |
58 open(self._lock_path, 'w').close() | |
59 self._file_lock1.acquire_lock() | |
60 self._file_lock1.release_lock() | |
OLD | NEW |