diff options
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): |