test(dbus): Add support for testing driver reset notification
Introduce `FakeResetDriverWatchdog` to simulate driver reset triggers. Update existing tests and add a new test, `test_notify_reset_driver`, to verify reset notifications using the event signaling mechanism.
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# SPDX-FileCopyrightText: 2025 KUNBUS GmbH
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
from revpi_middleware.cli_commands.dbus_helper import BusType, simple_call
|
||||
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
|
||||
from tests.dbus_middleware1.fake_devices import IOCTL_QUEUE, RESET_DRIVER_EVENT
|
||||
|
||||
|
||||
class TestObjectPicontrol(TestBusProvider):
|
||||
@@ -20,3 +23,23 @@ class TestObjectPicontrol(TestBusProvider):
|
||||
)
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user