mirror of
https://git.yoctoproject.org/poky
synced 2026-06-01 00:59:48 +00:00
oeqa/selftest/runtime_test: simplify postinst testing
Update the packages and file names to reflect the new postinst recipe. Fix a sh syntax error in the run_serial file exists test which was hidden by a logic problem in the status code. Remove the older test_verify_postinst as it's effectively a subset of test_postinst_rootfs_and_boot, and doesn't work: when booting under systemd the strings it searches for are not output to the console, but the test still passes. (From OE-Core rev: 781a1be88f5812157a231bf5771a01bb978bfcd9) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
d39a301778
commit
d5f42075e6
@@ -167,55 +167,6 @@ class TestImage(OESelftestTestCase):
|
|||||||
|
|
||||||
class Postinst(OESelftestTestCase):
|
class Postinst(OESelftestTestCase):
|
||||||
@OETestID(1540)
|
@OETestID(1540)
|
||||||
def test_verify_postinst(self):
|
|
||||||
"""
|
|
||||||
Summary: The purpose of this test is to verify the execution order of postinst Bugzilla ID: [5319]
|
|
||||||
Expected :
|
|
||||||
1. Compile a minimal image.
|
|
||||||
2. The compiled image will add the created layer with the recipes postinst[ abdpt]
|
|
||||||
3. Run qemux86
|
|
||||||
4. Validate the task execution order
|
|
||||||
Author: Francisco Pedraza <francisco.j.pedraza.gonzalez@intel.com>
|
|
||||||
"""
|
|
||||||
features = 'INHERIT += "testimage"\n'
|
|
||||||
features += 'CORE_IMAGE_EXTRA_INSTALL += "postinst-at-rootfs \
|
|
||||||
postinst-delayed-a \
|
|
||||||
postinst-delayed-b \
|
|
||||||
postinst-delayed-d \
|
|
||||||
postinst-delayed-p \
|
|
||||||
postinst-delayed-t \
|
|
||||||
"\n'
|
|
||||||
self.write_config(features)
|
|
||||||
|
|
||||||
bitbake('core-image-minimal -f ')
|
|
||||||
|
|
||||||
postinst_list = ['100-postinst-at-rootfs',
|
|
||||||
'101-postinst-delayed-a',
|
|
||||||
'102-postinst-delayed-b',
|
|
||||||
'103-postinst-delayed-d',
|
|
||||||
'104-postinst-delayed-p',
|
|
||||||
'105-postinst-delayed-t']
|
|
||||||
path_workdir = get_bb_var('WORKDIR','core-image-minimal')
|
|
||||||
workspacedir = 'testimage/qemu_boot_log'
|
|
||||||
workspacedir = os.path.join(path_workdir, workspacedir)
|
|
||||||
rexp = re.compile("^Running postinst .*/(?P<postinst>.*)\.\.\.$")
|
|
||||||
with runqemu('core-image-minimal') as qemu:
|
|
||||||
with open(workspacedir) as f:
|
|
||||||
found = False
|
|
||||||
idx = 0
|
|
||||||
for line in f.readlines():
|
|
||||||
line = line.strip().replace("^M","")
|
|
||||||
if not line: # To avoid empty lines
|
|
||||||
continue
|
|
||||||
m = rexp.search(line)
|
|
||||||
if m:
|
|
||||||
self.assertEqual(postinst_list[idx], m.group('postinst'), "Fail")
|
|
||||||
idx = idx+1
|
|
||||||
found = True
|
|
||||||
elif found:
|
|
||||||
self.assertEqual(idx, len(postinst_list), "Not found all postinsts")
|
|
||||||
break
|
|
||||||
|
|
||||||
@OETestID(1545)
|
@OETestID(1545)
|
||||||
def test_postinst_rootfs_and_boot(self):
|
def test_postinst_rootfs_and_boot(self):
|
||||||
"""
|
"""
|
||||||
@@ -234,16 +185,22 @@ postinst-delayed-t \
|
|||||||
for initialization managers: sysvinit and systemd.
|
for initialization managers: sysvinit and systemd.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
file_rootfs_name = "this-was-created-at-rootfstime"
|
|
||||||
fileboot_name = "this-was-created-at-first-boot"
|
import oe.path
|
||||||
rootfs_pkg = 'postinst-at-rootfs'
|
|
||||||
boot_pkg = 'postinst-delayed-a'
|
vars = get_bb_vars(("IMAGE_ROOTFS", "sysconfdir"), "core-image-minimal")
|
||||||
|
rootfs = vars["IMAGE_ROOTFS"]
|
||||||
|
self.assertIsNotNone(rootfs)
|
||||||
|
sysconfdir = vars["sysconfdir"]
|
||||||
|
self.assertIsNotNone(sysconfdir)
|
||||||
|
# Need to use oe.path here as sysconfdir starts with /
|
||||||
|
hosttestdir = oe.path.join(rootfs, sysconfdir, "postinst-test")
|
||||||
|
targettestdir = os.path.join(sysconfdir, "postinst-test")
|
||||||
|
|
||||||
for init_manager in ("sysvinit", "systemd"):
|
for init_manager in ("sysvinit", "systemd"):
|
||||||
for classes in ("package_rpm", "package_deb", "package_ipk"):
|
for classes in ("package_rpm", "package_deb", "package_ipk"):
|
||||||
with self.subTest(init_manager=init_manager, package_class=classes):
|
with self.subTest(init_manager=init_manager, package_class=classes):
|
||||||
features = 'MACHINE = "qemux86"\n'
|
features = 'CORE_IMAGE_EXTRA_INSTALL = "postinst-delayed-b"\n'
|
||||||
features += 'CORE_IMAGE_EXTRA_INSTALL += "%s %s "\n'% (rootfs_pkg, boot_pkg)
|
|
||||||
features += 'IMAGE_FEATURES += "package-management empty-root-password"\n'
|
features += 'IMAGE_FEATURES += "package-management empty-root-password"\n'
|
||||||
features += 'PACKAGE_CLASSES = "%s"\n' % classes
|
features += 'PACKAGE_CLASSES = "%s"\n' % classes
|
||||||
if init_manager == "systemd":
|
if init_manager == "systemd":
|
||||||
@@ -255,13 +212,12 @@ postinst-delayed-t \
|
|||||||
|
|
||||||
bitbake('core-image-minimal')
|
bitbake('core-image-minimal')
|
||||||
|
|
||||||
file_rootfs_created = os.path.join(get_bb_var('IMAGE_ROOTFS', "core-image-minimal"),
|
self.assertTrue(os.path.isfile(os.path.join(hosttestdir, "rootfs")),
|
||||||
file_rootfs_name)
|
"rootfs state file was not created")
|
||||||
found = os.path.isfile(file_rootfs_created)
|
|
||||||
self.assertTrue(found, "File %s was not created at rootfs time by %s" % \
|
|
||||||
(file_rootfs_name, rootfs_pkg))
|
|
||||||
|
|
||||||
testcommand = 'ls /etc/' + fileboot_name
|
|
||||||
with runqemu('core-image-minimal') as qemu:
|
with runqemu('core-image-minimal') as qemu:
|
||||||
status, output = qemu.run_serial("-f /etc/" + fileboot_name)
|
# Make the test echo a string and search for that as
|
||||||
self.assertEqual(status, 0, 'File %s was not created at first boot (%s)' % (fileboot_name, output))
|
# run_serial()'s status code is useless.'
|
||||||
|
for filename in ("rootfs", "delayed-a", "delayed-b"):
|
||||||
|
status, output = qemu.run_serial("test -f %s && echo found" % os.path.join(targettestdir, filename))
|
||||||
|
self.assertEqual(output, "found", "%s was not present on boot" % filename)
|
||||||
|
|||||||
Reference in New Issue
Block a user