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_pytest.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_python_dbus_next.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