|
7 | 7 |
|
8 | 8 | from bucketbase import MemoryBucket |
9 | 9 | from bucketbase.fs_bucket import AppendOnlyFSBucket, FSBucket |
| 10 | +from bucketbase.named_lock_manager import FileLockManager |
10 | 11 |
|
11 | 12 |
|
12 | 13 | class TestAppendOnlyFSBucket(unittest.TestCase): |
@@ -44,7 +45,8 @@ def put_object(self2, name, content): |
44 | 45 | # put object is expected to create a lock file before calling base_bucket.put_object, and remove it after |
45 | 46 | bucket_in_test.put_object(object_name, content) |
46 | 47 |
|
47 | | - self.assertFalse(lock_file_path.exists()) |
| 48 | + verifier_manager = FileLockManager(self.locks_path) |
| 49 | + self.assertTrue(verifier_manager.get_lock(object_name).acquire(timeout=0.1), "Lock should have been released after put_object") |
48 | 50 | self.assertEqual(base_bucket_put_calls, [(object_name, content)]) |
49 | 51 |
|
50 | 52 | def test_put_object_twice_raises_exception(self): |
@@ -89,9 +91,12 @@ def test_lock_object_creates_lock_and_unlock_releases(self): |
89 | 91 | # Check if the lock file was created |
90 | 92 | lock_file_path = self.locks_path / (object_name.replace(bucket_in_test.SEP, FSBucket.TEMP_SEP) + ".lock") |
91 | 93 | self.assertTrue(lock_file_path.exists()) |
| 94 | + verifier_manager = FileLockManager(self.locks_path) |
| 95 | + with self.assertRaises(TimeoutError): |
| 96 | + verifier_manager.get_lock(object_name).acquire(timeout=0.1) |
92 | 97 |
|
93 | 98 | bucket_in_test._unlock_object(object_name) |
94 | | - self.assertFalse(lock_file_path.exists()) |
| 99 | + self.assertTrue(verifier_manager.get_lock(object_name).acquire(timeout=0.1), "Lock should have been released after _unlock_object") |
95 | 100 |
|
96 | 101 | def test_unlocking_unlocked_object_raises_assertion(self): |
97 | 102 | bucket_in_test = AppendOnlyFSBucket(self.base_bucket, self.locks_path) |
@@ -213,3 +218,7 @@ def thread2_func(): |
213 | 218 | t2.join() |
214 | 219 | self.assertListEqual(results, ["thread1_done", "thread2_file_exists"]) |
215 | 220 | self.assertEqual(bucket_in_test.get_object(object_name), content1) |
| 221 | + |
| 222 | + |
| 223 | +if __name__ == "__main__": |
| 224 | + unittest.main() |
0 commit comments