Ejemplo n.º 1
0
    def test_acquire_locks_all_instances(self):
        lock1 = PTLock(self.__dummy_lock_id)
        lock2 = PTLock(self.__dummy_lock_id)

        lock1.acquire()
        for lock in (lock1, lock2):
            self.assertTrue(lock.is_locked())
        lock1.release()
    def __init__(self, device_path: str, device_address: int):
        self._device_path = device_path
        self._device_address = device_address

        self._post_read_delay = 0.020
        self._post_write_delay = 0.020

        self._lock = PTLock(f"i2c_{device_address:#0{4}x}")

        self._read_device = None
        self._write_device = None
Ejemplo n.º 3
0
    def test_is_locked_method(self):
        lock1 = PTLock(self.__dummy_lock_id)
        lock2 = PTLock(self.__dummy_lock_id)

        lock1.acquire()
        for lock in (lock1, lock2):
            self.assertTrue(lock.is_locked())

        lock1.release()
        for lock in (lock1, lock2):
            self.assertFalse(lock.is_locked())
Ejemplo n.º 4
0
    def test_acquire_locks_thread_until_unlocked(self):
        def acquire_lock(_lock: PTLock):
            _lock.acquire()

        lock = PTLock(self.__dummy_lock_id)
        lock.acquire()

        lock2 = PTLock(self.__dummy_lock_id)
        thread = Thread(target=acquire_lock, args=[lock2])
        thread.start()

        self.assertTrue(thread.is_alive())
        lock.release()
        thread.join()
        self.assertFalse(thread.is_alive())
Ejemplo n.º 5
0
 def acquire_lock(_lock: PTLock):
     _lock.acquire()
Ejemplo n.º 6
0
    def test_release_a_locked_lock_by_other_object_fails(self):
        lock1 = PTLock(self.__dummy_lock_id)
        self.assertTrue(lock1.acquire())

        lock2 = PTLock(self.__dummy_lock_id)
        self.assertFalse(lock2.release())
Ejemplo n.º 7
0
 def test_release_an_unlocked_lock_returns_false(self):
     lock = PTLock(self.__dummy_lock_id)
     self.assertFalse(lock.release())
Ejemplo n.º 8
0
 def test_release_a_locked_lock_by_same_object_returns_true(self):
     lock = PTLock(self.__dummy_lock_id)
     self.assertTrue(lock.acquire())
     self.assertTrue(lock.release())
Ejemplo n.º 9
0
 def test_acquire_an_already_acquired_lock_by_same_object_fails(self):
     lock = PTLock(self.__dummy_lock_id)
     self.assertTrue(lock.acquire())
     self.assertFalse(lock.acquire())
Ejemplo n.º 10
0
 def test_acquire_success(self):
     lock = PTLock(self.__dummy_lock_id)
     self.assertTrue(lock.acquire())
Ejemplo n.º 11
0
 def test_chmod_is_called_if_file_doesnt_exist(self, exists_mock):
     _ = PTLock(self.__dummy_lock_id)
     exists_mock.assert_called_once_with(self.lock_file_path)
     mock_os.chmod.assert_called_once_with(self.lock_file_path, 146)
Ejemplo n.º 12
0
 def test_instance_opens_file(self, m):
     _ = PTLock(self.__dummy_lock_id)
     m.assert_called_with(self.lock_file_path, 'w')