[Buildroot] [PATCH v2 2/2] support/testing/tests/package/: runtime test

Nicolas Carrier nicolas.carrier at orolia.com
Sat Oct 26 17:59:15 UTC 2019


This patch implements a test with a simple pattern for factoring python
2 and python 3 lines of codes.
Other tests I saw in this directory could benefit of this pattern and
I'm volunteer to this work.
Is it a good idea? Something I should work on?


Running tests for this package give:
$ support/testing/run-tests --keep --output out --download
~/workspace/buildroot-dl/
tests.package.test_bmap_tools.TestPy2BmapTools
19:07:28 TestPy2BmapTools                         Starting
19:07:29 TestPy2BmapTools                         Building
19:13:01 TestPy2BmapTools                         Building done
19:13:16 TestPy2BmapTools                         Cleaning up
.
----------------------------------------------------------------------
Ran 1 test in 348.512s

OK
$ support/testing/run-tests --keep --output out --download
~/workspace/buildroot-dl/
tests.package.test_bmap_tools.TestPy3BmapTools
19:17:03 TestPy3BmapTools                         Starting
19:17:04 TestPy3BmapTools                         Building
19:22:06 TestPy3BmapTools                         Building done
19:22:21 TestPy3BmapTools                         Cleaning up
.
----------------------------------------------------------------------
Ran 1 test in 318.076s

OK

The test-pkg result:
$ ./utils/test-pkg -p bmap-tools -c bmap-
tools.config                               br-arm-full [1/6]: OK
                  br-arm-cortex-a9-glibc [2/6]: OK
                   br-arm-cortex-m4-full [3/6]: SKIPPED
                          br-x86-64-musl [4/6]: OK
                      br-arm-full-static [5/6]: SKIPPED
                            sourcery-arm [6/6]: OK
6 builds, 2 skipped, 0 build failed, 0 legal-info failed

And check-package:
$ ./utils/check-package package/bmap-tools/*
30 lines processed
0 warnings generated

On Sat, 2019-10-26 at 19:52 +0200, Nicolas Carrier wrote:
> This patch implements a simple test in which a dummy file system
> image
> is created, then `bmaptool create` and `bmaptool copy` are used to
> copy
> it to another file.
> 
> Signed-off-by: Nicolas Carrier <nicolas.carrier at orolia.com>
> 
> ---
> 
> Changes v1 -> v2:
>   - removed spurious trace
> 
> ---
> 
>  .../tests/package/sample_bmap_tools.sh        | 15 ++++++
>  .../testing/tests/package/test_bmap_tools.py  | 53
> +++++++++++++++++++
>  2 files changed, 68 insertions(+)
>  create mode 100755
> support/testing/tests/package/sample_bmap_tools.sh
>  create mode 100644 support/testing/tests/package/test_bmap_tools.py
> 
> diff --git a/support/testing/tests/package/sample_bmap_tools.sh
> b/support/testing/tests/package/sample_bmap_tools.sh
> new file mode 100755
> index 0000000000..7c90368c17
> --- /dev/null
> +++ b/support/testing/tests/package/sample_bmap_tools.sh
> @@ -0,0 +1,15 @@
> +#!/bin/sh
> +# simple test which creates a dummy file system image, then use
> bmaptool create
> +# and bmaptool copy to copy it to another file
> +
> +set -xeu
> +
> +# create the necessary test files
> +dd if=/dev/zero of=disk.img bs=2M count=1
> +mkfs.ext4 disk.img
> +fallocate -d disk.img
> +dd if=/dev/zero of=copy.img bs=2M count=1
> +
> +# do a test copy of the file system image
> +bmaptool create -o disk.img.bmap disk.img
> +bmaptool copy disk.img copy.img
> diff --git a/support/testing/tests/package/test_bmap_tools.py
> b/support/testing/tests/package/test_bmap_tools.py
> new file mode 100644
> index 0000000000..192b84387e
> --- /dev/null
> +++ b/support/testing/tests/package/test_bmap_tools.py
> @@ -0,0 +1,53 @@
> +import os
> +import sys
> +import infra
> +
> +from infra.basetest import BRTest
> +from abc import ABC, abstractproperty
> +
> +class AbstractBmapToolsTest(BRTest, ABC):
> +    __test__ = False
> +    sample_script = "tests/package/sample_bmap_tools.sh"
> +
> +    copy_script = 'tests/package/copy-sample-script-to-target.sh'
> +    config = f'''
> +        {infra.basetest.BASIC_TOOLCHAIN_CONFIG}
> +        BR2_TARGET_ROOTFS_CPIO=y
> +        BR2_PACKAGE_BMAP_TOOLS=y
> +        BR2_ROOTFS_POST_BUILD_SCRIPT="{infra.filepath(copy_script)}"
> +        BR2_ROOTFS_POST_SCRIPT_ARGS="{infra.filepath(sample_script)}
> "
> +        # BR2_TARGET_ROOTFS_TAR is not set
> +        BR2_PACKAGE_UTIL_LINUX=y
> +        BR2_PACKAGE_UTIL_LINUX_FALLOCATE=y
> +        BR2_PACKAGE_E2FSPROGS=y
> +        BR2_PACKAGE_UTIL_LINUX_LIBUUID=y
> +        '''
> +
> +    def __init__(self, names):
> +        super(AbstractBmapToolsTest, self).__init__(names)
> +        self.config += f"BR2_PACKAGE_PYTHON{self.python_version}=y"
> +
> +    @abstractproperty
> +    def python_version(self):
> +        pass
> +
> +    def login(self):
> +        cpio_file = os.path.join(self.builddir, "images",
> "rootfs.cpio")
> +        self.emulator.boot(arch="armv5",
> +                           kernel="builtin",
> +                           options=["-initrd", cpio_file])
> +        self.emulator.login()
> +
> +    def test_run(self):
> +        self.login()
> +        cmd = f"/root/{os.path.basename(self.sample_script)}"
> +        _, exit_code = self.emulator.run(cmd, timeout=10)
> +        self.assertEqual(exit_code, 0)
> +
> +class TestPy2BmapTools(AbstractBmapToolsTest):
> +    __test__ = True
> +    python_version = ""
> +
> +class TestPy3BmapTools(AbstractBmapToolsTest):
> +    __test__ = True
> +    python_version = "3"



More information about the buildroot mailing list