| 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 |