From: "Vyacheslav Yurkov" <uvv.mail@gmail.com>
To: Openembedded-core@lists.openembedded.org
Cc: Vyacheslav Yurkov <uvv.mail@gmail.com>
Subject: [PATCH v2 7/8] oeqa/selftest: overlayfs unit tests
Date: Fri, 9 Jul 2021 13:31:45 +0200 [thread overview]
Message-ID: <20210709113146.69020-7-uvv.mail@gmail.com> (raw)
In-Reply-To: <20210709113146.69020-1-uvv.mail@gmail.com>
Unit tests for overlayfs.bbclass
Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
---
meta/lib/oeqa/selftest/cases/overlayfs.py | 126 ++++++++++++++++++++++
1 file changed, 126 insertions(+)
create mode 100644 meta/lib/oeqa/selftest/cases/overlayfs.py
diff --git a/meta/lib/oeqa/selftest/cases/overlayfs.py b/meta/lib/oeqa/selftest/cases/overlayfs.py
new file mode 100644
index 0000000000..74bf1c4167
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/overlayfs.py
@@ -0,0 +1,126 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
+
+class OverlayFSTests(OESelftestTestCase):
+ """Overlayfs class usage tests"""
+
+ def getline(self, res, line):
+ for l in res.output.split('\n'):
+ if line in l:
+ return l
+
+ def test_distro_features_missing(self):
+ """
+ Summary: Check that required DISTRO_FEATURES are set
+ Expected: Fail when either systemd or overlayfs are not in DISTRO_FEATURES
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+OVERLAYFS_MOUNT_POINT[mnt-overlay] = "/mnt/overlay"
+IMAGE_INSTALL_append = "overlayfs-user"
+"""
+ self.write_config(config)
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = self.getline(res, "overlayfs-user was skipped: missing required distro features")
+ self.assertTrue("overlayfs" in res.output, msg=res.output)
+ self.assertTrue("systemd" in res.output, msg=res.output)
+ self.assertTrue("ERROR: Required build target 'core-image-minimal' has no buildable providers." in res.output, msg=res.output)
+
+ def test_not_all_units_installed(self):
+ """
+ Summary: Test QA check that we have required mount units in the image
+ Expected: Fail because mount unit for overlay partition is not installed
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+OVERLAYFS_MOUNT_POINT[mnt-overlay] = "/mnt/overlay"
+IMAGE_INSTALL_append = "overlayfs-user"
+DISTRO_FEATURES += "systemd overlayfs"
+"""
+ self.write_config(config)
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = self.getline(res, "Unit name mnt-overlay.mount not found in systemd unit directories")
+ self.assertTrue(line and line.startswith("WARNING:"), msg=res.output)
+ line = self.getline(res, "Not all mount units are installed by the BSP")
+ self.assertTrue(line and line.startswith("ERROR:"), msg=res.output)
+
+ def test_mount_unit_not_set(self):
+ """
+ Summary: Test whether mount unit was set properly
+ Expected: Fail because mount unit was not set
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+IMAGE_INSTALL_append = "overlayfs-user"
+DISTRO_FEATURES += "systemd overlayfs"
+"""
+ self.write_config(config)
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = self.getline(res, "A recipe uses overlayfs class but there is no OVERLAYFS_MOUNT_POINT set in your MACHINE configuration")
+ self.assertTrue(line and line.startswith("Parsing recipes...ERROR:"), msg=res.output)
+
+ def test_wrong_mount_unit_set(self):
+ """
+ Summary: Test whether mount unit was set properly
+ Expected: Fail because not the correct flag used for mount unit
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+OVERLAYFS_MOUNT_POINT[usr-share-overlay] = "/usr/share/overlay"
+IMAGE_INSTALL_append = "overlayfs-user"
+DISTRO_FEATURES += "systemd overlayfs"
+"""
+ self.write_config(config)
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = self.getline(res, "Missing required mount point for OVERLAYFS_MOUNT_POINT[mnt-overlay] in your MACHINE configuration")
+ self.assertTrue(line and line.startswith("Parsing recipes...ERROR:"), msg=res.output)
+
+ def test_correct_image(self):
+ """
+ Summary: Check that we can create an image when all parameters are
+ set correctly
+ Expected: Image is created successfully
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+OVERLAYFS_MOUNT_POINT[mnt-overlay] = "/mnt/overlay"
+IMAGE_INSTALL_append = "overlayfs-user systemd-machine-units"
+DISTRO_FEATURES += "systemd overlayfs"
+"""
+
+ systemd_machine_unit_append = """
+SYSTEMD_SERVICE_${PN} += " \
+ mnt-overlay.mount \
+"
+
+do_install() {
+ install -d ${D}${systemd_unitdir}/system
+ cat <<EOT > ${D}${systemd_unitdir}/system/mnt-overlay.mount
+[Unit]
+Description=Tmpfs directory
+DefaultDependencies=no
+
+[Mount]
+What=tmpfs
+Where=/mnt/overlay
+Type=tmpfs
+Options=mode=1777,strictatime,nosuid,nodev
+
+[Install]
+WantedBy=multi-user.target
+EOT
+}
+
+"""
+ self.write_config(config)
+ self.write_recipeinc('systemd-machine-units', systemd_machine_unit_append)
+ bitbake('core-image-minimal')
--
2.28.0
next prev parent reply other threads:[~2021-07-09 11:32 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-09 11:31 [PATCH v2 1/8] overlayfs-qa: common functions for overlayfs Vyacheslav Yurkov
2021-07-09 11:31 ` [PATCH v2 2/8] overlayfs.bbclass: generate overlayfs mount units Vyacheslav Yurkov
2021-07-09 11:31 ` [PATCH v2 3/8] maintainers.inc: overlayfs bbclass maintainer Vyacheslav Yurkov
2021-07-09 11:31 ` [PATCH v2 4/8] rootfs-postcommands: add QA check for overlayfs Vyacheslav Yurkov
2021-07-09 11:31 ` [PATCH v2 5/8] systemd-machine-units: add bbappend for meta-selftest Vyacheslav Yurkov
2021-07-09 11:31 ` [PATCH v2 6/8] overlayfs: meta-selftest recipe Vyacheslav Yurkov
2021-07-09 11:31 ` Vyacheslav Yurkov [this message]
2021-07-10 9:01 ` [OE-core] [PATCH v2 7/8] oeqa/selftest: overlayfs unit tests Alexander Kanavin
2021-07-10 9:41 ` Alexandre Belloni
2021-07-10 12:47 ` Vyacheslav Yurkov
2021-07-10 17:15 ` Alexandre Belloni
2021-07-11 15:16 ` Vyacheslav Yurkov
2021-07-12 9:14 ` Alexandre Belloni
2021-07-12 9:42 ` Vyacheslav Yurkov
2021-07-09 11:31 ` [PATCH v2 8/8] docs: add overlayfs class Vyacheslav Yurkov
[not found] <169101D2B14E1B11.4752@lists.openembedded.org>
2021-07-12 15:00 ` [PATCH v2 7/8] oeqa/selftest: overlayfs unit tests Vyacheslav Yurkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210709113146.69020-7-uvv.mail@gmail.com \
--to=uvv.mail@gmail.com \
--cc=Openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.