| Message ID | 20230228065535.6174-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,
This caused:
AssertionError: Command 'wic cp /home/pokybuild/yocto-worker/oe-selftest-centos/build/build-st-1632991/wic-tmp/tmpy7vqghuf-202302281124-sda.direct:1 /tmp/tmp9xlwzw5t' returned non-zero exit status 1:
ERROR: Can't find executable 'mcopy'
so bitbake("mtools-native") was not enough
On 28/02/2023 07:55:35+0100, 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-native package to support FAT filesystem handling
> + 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=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-native package to support FAT filesystem handling
> + 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
> --
> 2.25.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#177821): https://lists.openembedded.org/g/openembedded-core/message/177821
> Mute This Topic: https://lists.openembedded.org/mt/97285464/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
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-native package to support FAT filesystem handling + 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=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-native package to support FAT filesystem handling + 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
- 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(+)