diff options
author | Armin Kuster <akuster808@gmail.com> | 2019-12-07 17:55:48 -0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-12-09 12:00:43 +0000 |
commit | d486fe88c148dddd9f9da18192e7cd305c3efe11 (patch) | |
tree | 2c24e468abd2f17a55101577a9e9eb374be9c7af /meta/lib | |
parent | cf872ba730f96c47b9c36532b0a3a59cae98d0aa (diff) | |
download | poky-d486fe88c148dddd9f9da18192e7cd305c3efe11.tar.gz |
oeqa/selftest/runtime_test: split systemd and sysvinit tests out
This should help debug which part of this selftest is failing.
We can not tell which outloop is failing so split the tests into
systemd and sysvinit.
[YOCTO #13650]
(From OE-Core rev: 5f49ac73ca38ae711e093b35ae0feb5a0674198a)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r-- | meta/lib/oeqa/selftest/cases/runtime_test.py | 97 |
1 files changed, 62 insertions, 35 deletions
diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py index 7aa9fb25da..60cb2e01a6 100644 --- a/meta/lib/oeqa/selftest/cases/runtime_test.py +++ b/meta/lib/oeqa/selftest/cases/runtime_test.py | |||
@@ -10,6 +10,7 @@ import re | |||
10 | import tempfile | 10 | import tempfile |
11 | import shutil | 11 | import shutil |
12 | import oe.lsb | 12 | import oe.lsb |
13 | from oeqa.core.decorator.data import skipIfNotQemu | ||
13 | 14 | ||
14 | class TestExport(OESelftestTestCase): | 15 | class TestExport(OESelftestTestCase): |
15 | 16 | ||
@@ -243,7 +244,47 @@ class TestImage(OESelftestTestCase): | |||
243 | bitbake('-c testimage core-image-minimal') | 244 | bitbake('-c testimage core-image-minimal') |
244 | 245 | ||
245 | class Postinst(OESelftestTestCase): | 246 | class Postinst(OESelftestTestCase): |
246 | def test_postinst_rootfs_and_boot(self): | 247 | |
248 | def init_manager_loop(self, init_manager): | ||
249 | import oe.path | ||
250 | |||
251 | vars = get_bb_vars(("IMAGE_ROOTFS", "sysconfdir"), "core-image-minimal") | ||
252 | rootfs = vars["IMAGE_ROOTFS"] | ||
253 | self.assertIsNotNone(rootfs) | ||
254 | sysconfdir = vars["sysconfdir"] | ||
255 | self.assertIsNotNone(sysconfdir) | ||
256 | # Need to use oe.path here as sysconfdir starts with / | ||
257 | hosttestdir = oe.path.join(rootfs, sysconfdir, "postinst-test") | ||
258 | targettestdir = os.path.join(sysconfdir, "postinst-test") | ||
259 | |||
260 | for classes in ("package_rpm", "package_deb", "package_ipk"): | ||
261 | with self.subTest(init_manager=init_manager, package_class=classes): | ||
262 | features = 'CORE_IMAGE_EXTRA_INSTALL = "postinst-delayed-b"\n' | ||
263 | features += 'IMAGE_FEATURES += "package-management empty-root-password"\n' | ||
264 | features += 'PACKAGE_CLASSES = "%s"\n' % classes | ||
265 | if init_manager == "systemd": | ||
266 | features += 'DISTRO_FEATURES_append = " systemd"\n' | ||
267 | features += 'VIRTUAL-RUNTIME_init_manager = "systemd"\n' | ||
268 | features += 'DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"\n' | ||
269 | features += 'VIRTUAL-RUNTIME_initscripts = ""\n' | ||
270 | self.write_config(features) | ||
271 | |||
272 | bitbake('core-image-minimal') | ||
273 | |||
274 | self.assertTrue(os.path.isfile(os.path.join(hosttestdir, "rootfs")), | ||
275 | "rootfs state file was not created") | ||
276 | |||
277 | with runqemu('core-image-minimal') as qemu: | ||
278 | # Make the test echo a string and search for that as | ||
279 | # run_serial()'s status code is useless.' | ||
280 | for filename in ("rootfs", "delayed-a", "delayed-b"): | ||
281 | status, output = qemu.run_serial("test -f %s && echo found" % os.path.join(targettestdir, filename)) | ||
282 | self.assertEqual(output, "found", "%s was not present on boot" % filename) | ||
283 | |||
284 | |||
285 | |||
286 | @skipIfNotQemu('qemuall', 'Test only runs in qemu') | ||
287 | def test_postinst_rootfs_and_boot_sysvinit(self): | ||
247 | """ | 288 | """ |
248 | Summary: The purpose of this test case is to verify Post-installation | 289 | Summary: The purpose of this test case is to verify Post-installation |
249 | scripts are called when rootfs is created and also test | 290 | scripts are called when rootfs is created and also test |
@@ -257,46 +298,32 @@ class Postinst(OESelftestTestCase): | |||
257 | created by postinst_boot recipe is present on image. | 298 | created by postinst_boot recipe is present on image. |
258 | Expected: The files are successfully created during rootfs and boot | 299 | Expected: The files are successfully created during rootfs and boot |
259 | time for 3 different package managers: rpm,ipk,deb and | 300 | time for 3 different package managers: rpm,ipk,deb and |
260 | for initialization managers: sysvinit and systemd. | 301 | for initialization managers: sysvinit. |
261 | 302 | ||
262 | """ | 303 | """ |
304 | self.init_manager_loop("sysvinit") | ||
263 | 305 | ||
264 | import oe.path | ||
265 | 306 | ||
266 | vars = get_bb_vars(("IMAGE_ROOTFS", "sysconfdir"), "core-image-minimal") | 307 | @skipIfNotQemu('qemuall', 'Test only runs in qemu') |
267 | rootfs = vars["IMAGE_ROOTFS"] | 308 | def test_postinst_rootfs_and_boot_systemd(self): |
268 | self.assertIsNotNone(rootfs) | 309 | """ |
269 | sysconfdir = vars["sysconfdir"] | 310 | Summary: The purpose of this test case is to verify Post-installation |
270 | self.assertIsNotNone(sysconfdir) | 311 | scripts are called when rootfs is created and also test |
271 | # Need to use oe.path here as sysconfdir starts with / | 312 | that script can be delayed to run at first boot. |
272 | hosttestdir = oe.path.join(rootfs, sysconfdir, "postinst-test") | 313 | Dependencies: NA |
273 | targettestdir = os.path.join(sysconfdir, "postinst-test") | 314 | Steps: 1. Add proper configuration to local.conf file |
315 | 2. Build a "core-image-minimal" image | ||
316 | 3. Verify that file created by postinst_rootfs recipe is | ||
317 | present on rootfs dir. | ||
318 | 4. Boot the image created on qemu and verify that the file | ||
319 | created by postinst_boot recipe is present on image. | ||
320 | Expected: The files are successfully created during rootfs and boot | ||
321 | time for 3 different package managers: rpm,ipk,deb and | ||
322 | for initialization managers: systemd. | ||
274 | 323 | ||
275 | for init_manager in ("sysvinit", "systemd"): | 324 | """ |
276 | for classes in ("package_rpm", "package_deb", "package_ipk"): | ||
277 | with self.subTest(init_manager=init_manager, package_class=classes): | ||
278 | features = 'CORE_IMAGE_EXTRA_INSTALL = "postinst-delayed-b"\n' | ||
279 | features += 'IMAGE_FEATURES += "package-management empty-root-password"\n' | ||
280 | features += 'PACKAGE_CLASSES = "%s"\n' % classes | ||
281 | if init_manager == "systemd": | ||
282 | features += 'DISTRO_FEATURES_append = " systemd"\n' | ||
283 | features += 'VIRTUAL-RUNTIME_init_manager = "systemd"\n' | ||
284 | features += 'DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"\n' | ||
285 | features += 'VIRTUAL-RUNTIME_initscripts = ""\n' | ||
286 | self.write_config(features) | ||
287 | |||
288 | bitbake('core-image-minimal') | ||
289 | |||
290 | self.assertTrue(os.path.isfile(os.path.join(hosttestdir, "rootfs")), | ||
291 | "rootfs state file was not created") | ||
292 | |||
293 | with runqemu('core-image-minimal') as qemu: | ||
294 | # Make the test echo a string and search for that as | ||
295 | # run_serial()'s status code is useless.' | ||
296 | for filename in ("rootfs", "delayed-a", "delayed-b"): | ||
297 | status, output = qemu.run_serial("test -f %s && echo found" % os.path.join(targettestdir, filename)) | ||
298 | self.assertEqual(output, "found", "%s was not present on boot" % filename) | ||
299 | 325 | ||
326 | self.init_manager_loop("systemd") | ||
300 | 327 | ||
301 | 328 | ||
302 | def test_failing_postinst(self): | 329 | def test_failing_postinst(self): |