mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-09 17:03:35 -09:00
support/testing: add runtime test for easydbus
Test an actual D-Bus round-trip using easydbus: - obtain a name on the system bus - subscribe to a signal on a chosen object/interface - emit signal with a string payload - run the easydbus mainloop - verify the handler received the expected payload This covers both the default Lua interpreter (Lua 5.4) and LuaJIT (Lua 5.1 ABI). Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com> [Julien: - move test files into a rootfs-overlay - move common BR2_PACKAGE_{,EASY}DBUS configs to EasyDBusBase - make stricter check of script output - add DEVELOPERS entry for rootfs-overlay files ] Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
committed by
Julien Olivain
parent
d90bbf81f8
commit
4456d899d0
@@ -2290,6 +2290,8 @@ F: support/testing/tests/package/sample_python_dbus_fast.py
|
|||||||
F: support/testing/tests/package/sample_python_dbus_next.py
|
F: support/testing/tests/package/sample_python_dbus_next.py
|
||||||
F: support/testing/tests/package/sample_python_pytest.py
|
F: support/testing/tests/package/sample_python_pytest.py
|
||||||
F: support/testing/tests/package/sample_python_pytest_asyncio.py
|
F: support/testing/tests/package/sample_python_pytest_asyncio.py
|
||||||
|
F: support/testing/tests/package/test_easydbus.py
|
||||||
|
F: support/testing/tests/package/test_easydbus/
|
||||||
F: support/testing/tests/package/test_netdata.py
|
F: support/testing/tests/package/test_netdata.py
|
||||||
F: support/testing/tests/package/test_python_dbus_next.py
|
F: support/testing/tests/package/test_python_dbus_next.py
|
||||||
F: support/testing/tests/package/test_python_pytest.py
|
F: support/testing/tests/package/test_python_pytest.py
|
||||||
|
|||||||
44
support/testing/tests/package/test_easydbus.py
Normal file
44
support/testing/tests/package/test_easydbus.py
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
import infra.basetest
|
||||||
|
|
||||||
|
from tests.package.test_lua import TestLuaBase
|
||||||
|
|
||||||
|
|
||||||
|
class EasyDBusBase(TestLuaBase):
|
||||||
|
rootfs_overlay = \
|
||||||
|
infra.filepath("tests/package/test_easydbus/rootfs-overlay")
|
||||||
|
config = TestLuaBase.config + \
|
||||||
|
f"""
|
||||||
|
BR2_PACKAGE_DBUS=y
|
||||||
|
BR2_PACKAGE_EASYDBUS=y
|
||||||
|
BR2_ROOTFS_OVERLAY="{rootfs_overlay}"
|
||||||
|
"""
|
||||||
|
|
||||||
|
def signal_round_trip(self):
|
||||||
|
cmd = "lua /root/easydbus-sample.lua"
|
||||||
|
output, exit_code = self.emulator.run(cmd)
|
||||||
|
self.assertEqual(exit_code, 0)
|
||||||
|
self.assertEqual(output[0], "OK")
|
||||||
|
|
||||||
|
|
||||||
|
class TestLuaEasyDBus(EasyDBusBase):
|
||||||
|
config = EasyDBusBase.config + \
|
||||||
|
"""
|
||||||
|
BR2_PACKAGE_LUA=y
|
||||||
|
"""
|
||||||
|
|
||||||
|
def test_run(self):
|
||||||
|
self.login()
|
||||||
|
self.module_test("easydbus")
|
||||||
|
self.signal_round_trip()
|
||||||
|
|
||||||
|
|
||||||
|
class TestLuajitEasyDBus(EasyDBusBase):
|
||||||
|
config = EasyDBusBase.config + \
|
||||||
|
"""
|
||||||
|
BR2_PACKAGE_LUAJIT=y
|
||||||
|
"""
|
||||||
|
|
||||||
|
def test_run(self):
|
||||||
|
self.login()
|
||||||
|
self.module_test("easydbus")
|
||||||
|
self.signal_round_trip()
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
|
||||||
|
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
|
||||||
|
<busconfig>
|
||||||
|
<policy user="root">
|
||||||
|
<allow own="easydbus.SampleTest"/>
|
||||||
|
<allow send_destination="easydbus.SampleTest"/>
|
||||||
|
</policy>
|
||||||
|
</busconfig>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
local dbus = require 'easydbus'
|
||||||
|
|
||||||
|
local bus = assert(dbus.system())
|
||||||
|
local service_name = 'easydbus.SampleTest'
|
||||||
|
local object_path = '/easydbus/sample'
|
||||||
|
local interface_name = 'easydbus.SampleTest'
|
||||||
|
local signal_name = 'Pinged'
|
||||||
|
|
||||||
|
local owner_id = assert(bus:own_name(service_name))
|
||||||
|
|
||||||
|
local payload
|
||||||
|
bus:subscribe(nil, object_path, interface_name, signal_name,
|
||||||
|
function(arg) payload = arg; dbus.mainloop_quit() end)
|
||||||
|
assert(bus:emit(nil, object_path, interface_name, signal_name,
|
||||||
|
's', 'hello'))
|
||||||
|
dbus.mainloop()
|
||||||
|
|
||||||
|
bus:unown_name(owner_id)
|
||||||
|
|
||||||
|
assert(payload == 'hello',
|
||||||
|
'unexpected payload: ' .. tostring(payload))
|
||||||
|
print('OK')
|
||||||
Reference in New Issue
Block a user