def test_threaded_filelock(self): self.make_dir("testindex") st = FileStorage("testindex") lock1 = st.lock("testlock") result = [] # The thread function tries to acquire the lock and # then quits def fn(): lock2 = st.lock("testlock") gotit = try_for(lock2.acquire, 1.0, 0.1) if gotit: result.append(True) lock2.release() t = threading.Thread(target=fn) # Acquire the lock in this thread lock1.acquire() # Start the other thread trying to acquire the lock t.start() # Wait for a bit time.sleep(0.15) # Release the lock lock1.release() # Wait for the other thread to finish t.join() # If the other thread got the lock, it should have # appended something to the "results" list. self.assertEqual(len(result), 1) self.clean_file("testindex/testlock") self.destroy_dir("testindex")
def test_filelock_simple(self): self.make_dir("testindex") st = FileStorage("testindex") lock1 = st.lock("testlock") lock2 = st.lock("testlock") self.assertTrue(lock1.acquire()) self.assertFalse(lock2.acquire()) lock1.release() self.assertTrue(lock2.acquire()) self.assertFalse(lock1.acquire()) lock2.release() self.clean_file("testindex/testlock") self.destroy_dir("testindex")