From 4cd5559163131e105b837d80389292e1bb6d0fc7 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Fri, 17 Jul 2026 16:25:28 +0200 Subject: [PATCH] support/testing: mdnsd: new runtime test Boot an armv5 image running the mdnsd responder alongside the mquery client, then check that service discovery works: mquery browses for the bundled _http._tcp service and mdnsd, on the same host, answers over the loopback of the eth0 multicast group. Signed-off-by: Joachim Wiberg [Julien: add "mdnsd -v" invocation to show version] Signed-off-by: Julien Olivain --- DEVELOPERS | 1 + support/testing/tests/package/test_mdnsd.py | 41 +++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 support/testing/tests/package/test_mdnsd.py diff --git a/DEVELOPERS b/DEVELOPERS index 42418d01a2..a0749646cc 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1665,6 +1665,7 @@ F: package/ssdp-responder/ F: package/sysklogd/ F: package/uredir/ F: package/watchdogd/ +F: support/testing/tests/package/test_mdnsd.py N: Jochen Baltes F: package/altera-stapl diff --git a/support/testing/tests/package/test_mdnsd.py b/support/testing/tests/package/test_mdnsd.py new file mode 100644 index 0000000000..214eea7dd9 --- /dev/null +++ b/support/testing/tests/package/test_mdnsd.py @@ -0,0 +1,41 @@ +import os + +import infra.basetest + + +class TestMdnsd(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_MDNSD=y + BR2_PACKAGE_MDNSD_MQUERY=y + BR2_PACKAGE_MDNSD_HTTP_SERVICE=y + BR2_SYSTEM_DHCP="eth0" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img, + "-net", "nic,model=rtl8139", + "-net", "user"]) + self.emulator.login() + + # We check the program can execute. + self.assertRunOk("mdnsd -v") + + # The responder is started at boot by /etc/init.d/S50mdnsd and + # advertises the bundled _http._tcp service from /etc/mdns.d/. + self.assertRunOk("pidof mdnsd") + + # mdnsd only answers on multicast capable interfaces that are + # up, so wait for eth0 to get its DHCP address before querying. + cmd = "while ! ifconfig eth0 | grep -q 'inet addr'; do sleep 1; done" + self.assertRunOk(cmd, timeout=30) + + # mquery sends a multicast query for the advertised service; + # output is one "+ NAME (IP)" line per instance + cmd = "mquery -T _http._tcp |grep -F buildroot._http._tcp.local" + self.assertRunOk(cmd, timeout=30)