oeqa/selftest/systemdboot: Add Test to check boot file is created correctly

Add Test case to verify if EFI bootloader for
systemd boot is correctly build inside of image.

[YOCTO #9903]

(From meta-yocto rev: ce060ee09d00d737007f4a0569e13bebbcde0b3f)

Signed-off-by: Jose Perez Carranza <jose.perez.carranza@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Jose Perez Carranza 2017-06-15 05:49:06 -07:00 committed by Richard Purdie
parent 14d67c0f7c
commit 00e2566f0e

View File

@ -2,25 +2,26 @@ import os
from oeqa.selftest.case import OESelftestTestCase from oeqa.selftest.case import OESelftestTestCase
from oeqa.core.decorator.oeid import OETestID from oeqa.core.decorator.oeid import OETestID
from oeqa.core.decorator.depends import OETestDepends
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
class Systemdboot(OESelftestTestCase): class Systemdboot(OESelftestTestCase):
def _common_setup(self): def _common_setup(self):
""" """
Common setup for test cases: 1445, XXXX Common setup for test cases: 1445, 1528
""" """
# Set EFI_PROVIDER = "gummiboot" and MACHINE = "genericx86-64" in conf/local.conf # Set EFI_PROVIDER = "systemdboot" and MACHINE = "genericx86-64" in conf/local.conf
features = 'EFI_PROVIDER = "systemd-boot"\n' features = 'EFI_PROVIDER = "systemd-boot"\n'
features += 'MACHINE = "genericx86-64"' features += 'MACHINE = "genericx86-64"'
self.append_config(features) self.append_config(features)
def _common_build(self): def _common_build(self):
""" """
Common build for test cases: 1445 , XXXX Common build for test cases: 1445 , 1528
""" """
# Build a genericx86-64/efi gummiboot image # Build a genericx86-64/efi systemdboot image
bitbake('mtools-native core-image-minimal') bitbake('mtools-native core-image-minimal')
@ -50,3 +51,48 @@ class Systemdboot(OESelftestTestCase):
found = os.path.isfile(systemdbootfile) found = os.path.isfile(systemdbootfile)
self.assertTrue(found, 'Systemd-Boot file %s not found' % systemdbootfile) self.assertTrue(found, 'Systemd-Boot file %s not found' % systemdbootfile)
@OETestID(1528)
@OETestDepends(['systemd_boot.Systemdboot.test_efi_systemdboot_images_can_be_built'])
def test_image_efi_file(self):
"""
Summary: Check if EFI bootloader for systemd is correctly build
Dependencies: Image was built correctly on testcase 1445
Steps: 1. Copy bootx64.efi file form the hddimg created
under build/tmp/deploy/images/genericx86-64
2. Check bootx64.efi was copied form hddimg
3. Verify the checksums from the copied and previously
created file are equal.
Expected : Systemd-bootx64.efi and bootx64.efi should be the same
hence checksums should be equal.
Product: oe-core
Author: Jose Perez Carranza <jose.perez.carranza at linux-intel.com>
AutomatedBy: Jose Perez Carranza <jose.perez.carranza at linux-intel.com>
"""
systemdbootfile = os.path.join(get_bb_var('DEPLOY_DIR'), 'images', 'genericx86-64',
'systemd-bootx64.efi')
systemdbootimage = os.path.join(get_bb_var('DEPLOY_DIR'), 'images', 'genericx86-64',
'core-image-minimal-genericx86-64.hddimg')
imagebootfile = os.path.join(get_bb_var('DEPLOY_DIR'), 'images', 'genericx86-64',
'bootx64.efi')
mcopynative = os.path.join(get_bb_var('STAGING_BINDIR_NATIVE'), 'mcopy')
#Clean environment before start the test
if os.path.isfile(imagebootfile):
runCmd('rm -f %s' % imagebootfile)
#Step 1
runCmd('%s -i %s ::EFI/BOOT/bootx64.efi %s' % (mcopynative ,systemdbootimage,
imagebootfile))
#Step 2
found = os.path.isfile(imagebootfile)
self.assertTrue(found, 'bootx64.efi file %s was not copied from image'
% imagebootfile)
#Step 3
result = runCmd('md5sum %s %s' % (systemdbootfile, imagebootfile))
self.assertEqual(result.output.split()[0], result.output.split()[2],
'%s was not correclty generated' % imagebootfile)