From: Peter Kjellerstedt <pkj@axis.com>
To: <openembedded-core@lists.openembedded.org>
Subject: [PATCHv2 2/2] oeqa/selftest/bbclasses: Add tests for systemd and update-rc.d interaction
Date: Wed, 21 Aug 2024 00:31:40 +0200 [thread overview]
Message-ID: <20240820223140.770567-2-pkj@axis.com> (raw)
In-Reply-To: <20240820223140.770567-1-pkj@axis.com>
These tests verify that the correct files are left behind when systemd
is inherited and depending on whether the systemd and/or sysvinit distro
features are enabled.
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
---
PATCHv2: Change LICENSE to MIT and add EXCLUDE_FROM_WORLD to the test
recipes
.../bbclasses/systemd-and-sysvinit.bb | 17 +++
.../recipes-test/bbclasses/systemd-only.bb | 12 ++
meta/lib/oeqa/selftest/cases/bbclasses.py | 106 ++++++++++++++++++
3 files changed, 135 insertions(+)
create mode 100644 meta-selftest/recipes-test/bbclasses/systemd-and-sysvinit.bb
create mode 100644 meta-selftest/recipes-test/bbclasses/systemd-only.bb
create mode 100644 meta/lib/oeqa/selftest/cases/bbclasses.py
diff --git a/meta-selftest/recipes-test/bbclasses/systemd-and-sysvinit.bb b/meta-selftest/recipes-test/bbclasses/systemd-and-sysvinit.bb
new file mode 100644
index 0000000000..f9fc59a494
--- /dev/null
+++ b/meta-selftest/recipes-test/bbclasses/systemd-and-sysvinit.bb
@@ -0,0 +1,17 @@
+LICENSE = "MIT"
+
+inherit allarch systemd update-rc.d
+
+do_install() {
+ install -d ${D}${systemd_system_unitdir}
+ touch ${D}${systemd_system_unitdir}/${BPN}.service
+
+ install -d ${D}${INIT_D_DIR}
+ touch ${D}${INIT_D_DIR}/${BPN}
+}
+
+INITSCRIPT_NAME = "${BPN}"
+
+SYSTEMD_SERVICE:${PN} = "${BPN}.service"
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-selftest/recipes-test/bbclasses/systemd-only.bb b/meta-selftest/recipes-test/bbclasses/systemd-only.bb
new file mode 100644
index 0000000000..590a27b9cb
--- /dev/null
+++ b/meta-selftest/recipes-test/bbclasses/systemd-only.bb
@@ -0,0 +1,12 @@
+LICENSE = "MIT"
+
+inherit allarch systemd
+
+do_install() {
+ install -d ${D}${systemd_system_unitdir}
+ touch ${D}${systemd_system_unitdir}/${BPN}.service
+}
+
+SYSTEMD_SERVICE:${PN} = "${BPN}.service"
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/meta/lib/oeqa/selftest/cases/bbclasses.py b/meta/lib/oeqa/selftest/cases/bbclasses.py
new file mode 100644
index 0000000000..10545ebe65
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/bbclasses.py
@@ -0,0 +1,106 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import get_bb_vars, bitbake
+
+class Systemd(OESelftestTestCase):
+ """
+ Tests related to the systemd bbclass.
+ """
+
+ def getVars(self, recipe):
+ self.bb_vars = get_bb_vars(
+ [
+ 'BPN',
+ 'D',
+ 'INIT_D_DIR',
+ 'prefix',
+ 'systemd_system_unitdir',
+ 'sysconfdir',
+ ],
+ recipe,
+ )
+
+ def fileExists(self, filename):
+ self.assertExists(filename.format(**self.bb_vars))
+
+ def fileNotExists(self, filename):
+ self.assertNotExists(filename.format(**self.bb_vars))
+
+ def test_systemd_in_distro(self):
+ """
+ Summary: Verify that no sysvinit files are installed when the
+ systemd distro feature is enabled, but sysvinit is not.
+ Expected: Systemd service file exists, but /etc does not.
+ Product: OE-Core
+ Author: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
+ """
+
+ self.write_config("""
+DISTRO_FEATURES:append = " systemd usrmerge"
+DISTRO_FEATURES:remove = "sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+""")
+ bitbake("systemd-only systemd-and-sysvinit -c install")
+
+ self.getVars("systemd-only")
+ self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
+
+ self.getVars("systemd-and-sysvinit")
+ self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
+ self.fileNotExists("{D}{sysconfdir}")
+
+ def test_systemd_and_sysvinit_in_distro(self):
+ """
+ Summary: Verify that both systemd and sysvinit files are installed
+ when both the systemd and sysvinit distro features are
+ enabled.
+ Expected: Systemd service file and sysvinit initscript exist.
+ Product: OE-Core
+ Author: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
+ """
+
+ self.write_config("""
+DISTRO_FEATURES:append = " systemd sysvinit usrmerge"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+""")
+ bitbake("systemd-only systemd-and-sysvinit -c install")
+
+ self.getVars("systemd-only")
+ self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
+
+ self.getVars("systemd-and-sysvinit")
+ self.fileExists("{D}{systemd_system_unitdir}/{BPN}.service")
+ self.fileExists("{D}{INIT_D_DIR}/{BPN}")
+
+ def test_sysvinit_in_distro(self):
+ """
+ Summary: Verify that no systemd service files are installed when the
+ sysvinit distro feature is enabled, but systemd is not.
+ Expected: The systemd service file does not exist, nor does /usr.
+ The sysvinit initscript exists.
+ Product: OE-Core
+ Author: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
+ """
+
+ self.write_config("""
+DISTRO_FEATURES:remove = "systemd"
+DISTRO_FEATURES:append = " sysvinit usrmerge"
+VIRTUAL-RUNTIME_init_manager = "sysvinit"
+""")
+ bitbake("systemd-only systemd-and-sysvinit -c install")
+
+ self.getVars("systemd-only")
+ self.fileNotExists("{D}{systemd_system_unitdir}/{BPN}.service")
+ self.fileNotExists("{D}{prefix}")
+ self.fileNotExists("{D}{sysconfdir}")
+ self.fileExists("{D}")
+
+ self.getVars("systemd-and-sysvinit")
+ self.fileNotExists("{D}{systemd_system_unitdir}/{BPN}.service")
+ self.fileNotExists("{D}{prefix}")
+ self.fileExists("{D}{INIT_D_DIR}/{BPN}")
next prev parent reply other threads:[~2024-08-20 22:31 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-20 22:31 [PATCHv2 1/2] systemd.bbclass: Clean up empty parent directories Peter Kjellerstedt
2024-08-20 22:31 ` Peter Kjellerstedt [this message]
2024-08-22 10:07 ` [OE-core] [PATCHv2 2/2] oeqa/selftest/bbclasses: Add tests for systemd and update-rc.d interaction Richard Purdie
[not found] ` <17EE05117ACE9BE7.29141@lists.openembedded.org>
2024-08-22 10:10 ` Richard Purdie
-- strict thread matches above, loose matches on Subject: below --
2024-08-23 17:06 [PATCHv2 1/2] systemd.bbclass: Clean up empty parent directories Peter Kjellerstedt
2024-08-23 17:06 ` [PATCHv2 2/2] oeqa/selftest/bbclasses: Add tests for systemd and update-rc.d interaction Peter Kjellerstedt
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=20240820223140.770567-2-pkj@axis.com \
--to=pkj@axis.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.