Message ID | 20230308103448.2134894-2-kareem.zarka@huawei.com |
---|---|
State | New |
Headers | show |
Series | meta/lib/oeqa/selftest/cases/wic: Add tests for configuring kernel image install into boot partition. | expand |
Hello Kareem, are you planning to continue withis this review? If not i would try to get this merged. On 08.03.2023 11:34, Kareem Zarka wrote: > - test_skip_kernel_install: This test verifies that the kernel is not > installed in the boot partition when the 'install-kernel-into-boot-dir' > parameter is set to false. > - test_kernel_install: This test verifies that the kernel is installed > in the boot partition when the 'install-kernel-into-boot-dir' parameter > is set to true . > Both tests use a WKS (Kickstart) file to specify the desired > configuration, build a disk image using WIC, and extract the disk image > to a temporary directory to verify the results. > > Signed-off-by: Kareem Zarka <kareem.zarka@huawei.com> > --- > meta/lib/oeqa/selftest/cases/wic.py | 70 +++++++++++++++++++++++++++++ > 1 file changed, 70 insertions(+) > > diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py > index b9430cdb3b..7f5db1dc73 100644 > --- a/meta/lib/oeqa/selftest/cases/wic.py > +++ b/meta/lib/oeqa/selftest/cases/wic.py > @@ -16,6 +16,7 @@ import hashlib > from glob import glob > from shutil import rmtree, copy > from tempfile import NamedTemporaryFile > +from tempfile import TemporaryDirectory > > from oeqa.selftest.case import OESelftestTestCase > from oeqa.core.decorator import OETestTag > @@ -146,6 +147,75 @@ class CLITests(OESelftestTestCase): > self.assertEqual(1, runCmd('wic', ignore_status=True).status) > > class Wic(WicTestCase): > + def test_skip_kernel_install(self): > + """Test the functionality of not installing the kernel in the boot directory using the wic plugin""" > + # Build the mtools package to support FAT filesystem handling > + bitbake("mtools") I believe this should be 'bitbake("mtools-native")'. This should fix the error on the build server. > + # create a temporary file for the WKS content > + with NamedTemporaryFile("w", suffix=".wks") as wks: > + wks.write( > + 'part --source bootimg-efi ' > + '--sourceparams="loader=grub-efi,install-kernel-into-boot-dir=false" ' > + '--label boot --active\n' > + ) > + wks.flush() > + # create a temporary directory to extract the disk image to > + with TemporaryDirectory() as tmpdir: > + img = 'core-image-minimal' > + # build the image using the WKS file > + cmd = "wic create %s -e %s -o %s" % ( > + wks.name, img, self.resultdir) > + runCmd(cmd) > + wksname = os.path.splitext(os.path.basename(wks.name))[0] > + out = glob(os.path.join( > + self.resultdir, "%s-*.direct" % wksname)) > + self.assertEqual(1, len(out)) > + # extract the content of the disk image to the temporary directory > + cmd = "wic cp %s:1 %s" % (out[0], tmpdir) > + runCmd(cmd) > + # check if the kernel is installed or not > + kimgtype = get_bb_var('KERNEL_IMAGETYPE', img) > + for file in os.listdir(tmpdir): > + if file == kimgtype: > + raise AssertionError( > + "The kernel image '{}' was found in the partition".format(kimgtype) > + ) > + > + def test_kernel_install(self): > + """Test the installation of the kernel to the boot directory in the wic plugin""" > + # Build the mtools package to support FAT filesystem handling > + bitbake("mtools") Probably 'bitbake("mtools-native")' > + # create a temporary file for the WKS content > + with NamedTemporaryFile("w", suffix=".wks") as wks: > + wks.write( > + 'part --source bootimg-efi ' > + '--sourceparams="loader=grub-efi,install-kernel-into-boot-dir=true" ' > + '--label boot --active\n' > + ) > + wks.flush() > + # create a temporary directory to extract the disk image to > + with TemporaryDirectory() as tmpdir: > + img = 'core-image-minimal' > + # build the image using the WKS file > + cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir) > + runCmd(cmd) > + wksname = os.path.splitext(os.path.basename(wks.name))[0] > + out = glob(os.path.join(self.resultdir, "%s-*.direct" % wksname)) > + self.assertEqual(1, len(out)) > + # extract the content of the disk image to the temporary directory > + cmd = "wic cp %s:1 %s" % (out[0], tmpdir) > + runCmd(cmd) > + # check if the kernel is installed or not > + kimgtype = get_bb_var('KERNEL_IMAGETYPE', img) > + found = False > + for file in os.listdir(tmpdir): > + if file == kimgtype: > + found = True > + break > + self.assertTrue( > + found, "The kernel image '{}' was not found in the boot partition".format(kimgtype) > + ) > + > def test_build_image_name(self): > """Test wic create wictestdisk --image-name=core-image-minimal""" > cmd = "wic create wictestdisk --image-name=core-image-minimal -o %s" % self.resultdir Regards, Christian
diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py index b9430cdb3b..7f5db1dc73 100644 --- a/meta/lib/oeqa/selftest/cases/wic.py +++ b/meta/lib/oeqa/selftest/cases/wic.py @@ -16,6 +16,7 @@ import hashlib from glob import glob from shutil import rmtree, copy from tempfile import NamedTemporaryFile +from tempfile import TemporaryDirectory from oeqa.selftest.case import OESelftestTestCase from oeqa.core.decorator import OETestTag @@ -146,6 +147,75 @@ class CLITests(OESelftestTestCase): self.assertEqual(1, runCmd('wic', ignore_status=True).status) class Wic(WicTestCase): + def test_skip_kernel_install(self): + """Test the functionality of not installing the kernel in the boot directory using the wic plugin""" + # Build the mtools package to support FAT filesystem handling + bitbake("mtools") + # create a temporary file for the WKS content + with NamedTemporaryFile("w", suffix=".wks") as wks: + wks.write( + 'part --source bootimg-efi ' + '--sourceparams="loader=grub-efi,install-kernel-into-boot-dir=false" ' + '--label boot --active\n' + ) + wks.flush() + # create a temporary directory to extract the disk image to + with TemporaryDirectory() as tmpdir: + img = 'core-image-minimal' + # build the image using the WKS file + cmd = "wic create %s -e %s -o %s" % ( + wks.name, img, self.resultdir) + runCmd(cmd) + wksname = os.path.splitext(os.path.basename(wks.name))[0] + out = glob(os.path.join( + self.resultdir, "%s-*.direct" % wksname)) + self.assertEqual(1, len(out)) + # extract the content of the disk image to the temporary directory + cmd = "wic cp %s:1 %s" % (out[0], tmpdir) + runCmd(cmd) + # check if the kernel is installed or not + kimgtype = get_bb_var('KERNEL_IMAGETYPE', img) + for file in os.listdir(tmpdir): + if file == kimgtype: + raise AssertionError( + "The kernel image '{}' was found in the partition".format(kimgtype) + ) + + def test_kernel_install(self): + """Test the installation of the kernel to the boot directory in the wic plugin""" + # Build the mtools package to support FAT filesystem handling + bitbake("mtools") + # create a temporary file for the WKS content + with NamedTemporaryFile("w", suffix=".wks") as wks: + wks.write( + 'part --source bootimg-efi ' + '--sourceparams="loader=grub-efi,install-kernel-into-boot-dir=true" ' + '--label boot --active\n' + ) + wks.flush() + # create a temporary directory to extract the disk image to + with TemporaryDirectory() as tmpdir: + img = 'core-image-minimal' + # build the image using the WKS file + cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir) + runCmd(cmd) + wksname = os.path.splitext(os.path.basename(wks.name))[0] + out = glob(os.path.join(self.resultdir, "%s-*.direct" % wksname)) + self.assertEqual(1, len(out)) + # extract the content of the disk image to the temporary directory + cmd = "wic cp %s:1 %s" % (out[0], tmpdir) + runCmd(cmd) + # check if the kernel is installed or not + kimgtype = get_bb_var('KERNEL_IMAGETYPE', img) + found = False + for file in os.listdir(tmpdir): + if file == kimgtype: + found = True + break + self.assertTrue( + found, "The kernel image '{}' was not found in the boot partition".format(kimgtype) + ) + def test_build_image_name(self): """Test wic create wictestdisk --image-name=core-image-minimal""" cmd = "wic create wictestdisk --image-name=core-image-minimal -o %s" % self.resultdir
- test_skip_kernel_install: This test verifies that the kernel is not installed in the boot partition when the 'install-kernel-into-boot-dir' parameter is set to false. - test_kernel_install: This test verifies that the kernel is installed in the boot partition when the 'install-kernel-into-boot-dir' parameter is set to true . Both tests use a WKS (Kickstart) file to specify the desired configuration, build a disk image using WIC, and extract the disk image to a temporary directory to verify the results. Signed-off-by: Kareem Zarka <kareem.zarka@huawei.com> --- meta/lib/oeqa/selftest/cases/wic.py | 70 +++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+)