From bc91d35da7a04d8d28b20ba4ca32672a2dd1c736 Mon Sep 17 00:00:00 2001 From: Mikael Bourhis-Cloarec Date: Thu, 6 Jan 2022 17:13:01 +0100 Subject: [PATCH] support/testing: add package/test_mender.py Create a test to check Mender client at runtime. The aim of this test is: - to check the correct execution of simple Mender commands, in a minimal environment; - to validate there is no missing dependencies for runtime. This test is not a board integration test for Mender, including well-configured bootloader, partitioning, ... Check: - the daemon is started; - the current 'artifact name' (name of the image or update) of the active partition is read, without error. For that, we need to fake (see the 'overlay' directory): - some bootloader environment variables; - the name of an update. Signed-off-by: Mikael Bourhis-Cloarec [Romain: remove single hyphen command (Mender 3.0.0)] Signed-off-by: Romain Naour Signed-off-by: Thomas Petazzoni --- support/testing/tests/package/test_mender.py | 32 +++++++++++++++++++ .../rootfs-overlay/etc/mender/artifact_info | 1 + .../rootfs-overlay/usr/bin/fw_printenv | 6 ++++ 3 files changed, 39 insertions(+) create mode 100644 support/testing/tests/package/test_mender.py create mode 100644 support/testing/tests/package/test_mender/rootfs-overlay/etc/mender/artifact_info create mode 100755 support/testing/tests/package/test_mender/rootfs-overlay/usr/bin/fw_printenv diff --git a/support/testing/tests/package/test_mender.py b/support/testing/tests/package/test_mender.py new file mode 100644 index 0000000000..fdf55ed616 --- /dev/null +++ b/support/testing/tests/package/test_mender.py @@ -0,0 +1,32 @@ +import os + +import infra.basetest + + +class TestMender(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_PACKAGE_MENDER=y + BR2_TARGET_ROOTFS_CPIO=y + BR2_ROOTFS_OVERLAY="{}" + """.format( + # overlay to add a fake 'fw_printenv', used by Mender + infra.filepath("tests/package/test_mender/rootfs-overlay")) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + # Check if the Daemon is running + self.assertRunOk("ls /var/run/mender.pid") + self.assertRunOk("ps aux | egrep [m]ender") + + # Check if a simple Mender command is correctly executed + self.assertRunOk("mender -log-level debug show-artifact") + self.assertRunOk("mender -log-level debug show-artifact | grep 'RUNTIME_TEST_ARTIFACT_NAME'") + cmd = "mender show-artifact 2>&1 | grep -i 'err'" # Check if no 'error' among the traces + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 1) diff --git a/support/testing/tests/package/test_mender/rootfs-overlay/etc/mender/artifact_info b/support/testing/tests/package/test_mender/rootfs-overlay/etc/mender/artifact_info new file mode 100644 index 0000000000..4d54b8f89c --- /dev/null +++ b/support/testing/tests/package/test_mender/rootfs-overlay/etc/mender/artifact_info @@ -0,0 +1 @@ +artifact_name=RUNTIME_TEST_ARTIFACT_NAME diff --git a/support/testing/tests/package/test_mender/rootfs-overlay/usr/bin/fw_printenv b/support/testing/tests/package/test_mender/rootfs-overlay/usr/bin/fw_printenv new file mode 100755 index 0000000000..c002a0f2b8 --- /dev/null +++ b/support/testing/tests/package/test_mender/rootfs-overlay/usr/bin/fw_printenv @@ -0,0 +1,6 @@ +#!/bin/sh + +# Fake 'fw_printenv' because UBoot is not installed: print some plausible 'key-value' +echo "bootcount=0" +echo "mender_boot_part=rootfs" +echo "upgrade_available=0"