# -*- coding: utf-8 -*- # SPDX-FileCopyrightText: 2025 KUNBUS GmbH # SPDX-License-Identifier: GPL-2.0-or-later from threading import Thread from time import sleep from revpi_middleware.cli_commands.dbus_helper import BusType, await_signal, simple_call from revpi_middleware.dbus_middleware1 import extend_interface from tests.dbus_middleware1.bus_provider import TestBusProvider from tests.dbus_middleware1.fake_devices import IOCTL_QUEUE, RESET_DRIVER_EVENT class TestObjectPicontrol(TestBusProvider): def test_is_active(self): self.assertTrue(self.bp.running) def test_reset_driver(self): simple_call( "ResetDriver", interface=extend_interface("picontrol"), bus_type=BusType.SESSION, ) ioctl_call = IOCTL_QUEUE.get(timeout=2.0) self.assertEqual((19212, 0), ioctl_call) def test_notify_reset_driver(self): timeout = 5 def target_call_reset_driver(): sleep(1.0) RESET_DRIVER_EVENT.set() th_wait_for_reset = Thread(target=target_call_reset_driver, daemon=True) th_wait_for_reset.start() result = await_signal( "NotifyDriverReset", timeout, extend_interface("picontrol"), bus_type=BusType.SESSION, ) self.assertTrue(result) th_wait_for_reset.join(timeout=timeout)