Message ID | 20200730133352.18223-7-joaomarcos.costa@bootlin.com |
---|---|
State | Accepted |
Commit | f428e33b6bd7d01dc488534f59f56c4907c76b2f |
Delegated to: | Tom Rini |
Headers | show |
Series | Add support for the SquashFS filesystem | expand |
On Thu, Jul 30, 2020 at 03:33:52PM +0200, Joao Marcos Costa wrote: > Add Python scripts to test 'ls' and 'load' commands. The scripts > generate a SquashFS image and clean the directory after the assertions, > or if an exception is raised. > > Signed-off-by: Joao Marcos Costa <joaomarcos.costa@bootlin.com> Applied to u-boot/master, thanks!
On Sat, Aug 08, 2020 at 08:31:06AM -0400, Tom Rini wrote: > On Thu, Jul 30, 2020 at 03:33:52PM +0200, Joao Marcos Costa wrote: > > > Add Python scripts to test 'ls' and 'load' commands. The scripts > > generate a SquashFS image and clean the directory after the assertions, > > or if an exception is raised. > > > > Signed-off-by: Joao Marcos Costa <joaomarcos.costa@bootlin.com> > > Applied to u-boot/master, thanks! But... CI got backed up and I missed a real failure. Over at https://dev.azure.com/u-boot/u-boot/_build/results?buildId=1053&view=logs&j=50449d1b-398e-53ae-48fa-6bf338edeb51&t=97605dd2-f5a5-5dd7-2118-315ffdc8bcd6&l=558 the problem is: > os.mkdir(src) E PermissionError: [Errno 13] Permission denied: 'test/py/tests/test_fs/test_squashfs/sqfs_src/' because our source directory is read-only. I believe you need to use cons.config.build_dir instead to get to our build directory. Both tests fail in this manner. Can you please confirm my suggestion fixes this? If you don't want to configure Azure support directly you can submit a PR against the github mirror and that in turn will trigger an Azure run you can follow. Thanks! > > -- > Tom
Hello! On Sat, 8 Aug 2020 10:41:38 -0400 Tom Rini <trini@konsulko.com> wrote: > On Sat, Aug 08, 2020 at 08:31:06AM -0400, Tom Rini wrote: > > On Thu, Jul 30, 2020 at 03:33:52PM +0200, Joao Marcos Costa wrote: > > > > > Add Python scripts to test 'ls' and 'load' commands. The scripts > > > generate a SquashFS image and clean the directory after the > > > assertions, or if an exception is raised. > > > > > > Signed-off-by: Joao Marcos Costa <joaomarcos.costa@bootlin.com> > > > > Applied to u-boot/master, thanks! > > But... CI got backed up and I missed a real failure. Over at > https://dev.azure.com/u-boot/u-boot/_build/results?buildId=1053&view=logs&j=50449d1b-398e-53ae-48fa-6bf338edeb51&t=97605dd2-f5a5-5dd7-2118-315ffdc8bcd6&l=558 > the problem is: > > os.mkdir(src) > E PermissionError: [Errno 13] Permission denied: > 'test/py/tests/test_fs/test_squashfs/sqfs_src/' > > because our source directory is read-only. I believe you need to use > cons.config.build_dir instead to get to our build directory. Both > tests fail in this manner. Can you please confirm my suggestion > fixes this? If you don't want to configure Azure support directly you > can submit a PR against the github mirror and that in turn will > trigger an Azure run you can follow. Thanks! I submitted the PR that applies your suggestion and it really solves the problem. Here is the link to the log: https://travis-ci.org/github/u-boot/u-boot/jobs/716488309#L1307 I will send the patch in a few minutes. Thanks! > > > > > -- > > Tom > > > Joao Marcos
diff --git a/MAINTAINERS b/MAINTAINERS index 8ec6c5db81..b12074ff3f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -975,6 +975,7 @@ S: Maintained F: fs/squashfs/ F: include/sqfs.h F: cmd/sqfs.c +F: test/py/tests/test_fs/test_squashfs/ TARGET_BCMNS3 M: Bharat Gooty <bharat.gooty@broadcom.com> diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig index 829056e9ce..4dd5f87c68 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig @@ -84,6 +84,7 @@ CONFIG_CMD_TPM=y CONFIG_CMD_TPM_TEST=y CONFIG_CMD_BTRFS=y CONFIG_CMD_CBFS=y +CONFIG_CMD_SQUASHFS=y CONFIG_CMD_CRAMFS=y CONFIG_CMD_EXT4_WRITE=y CONFIG_CMD_MTDPARTS=y diff --git a/test/py/tests/test_fs/test_squashfs/sqfs_common.py b/test/py/tests/test_fs/test_squashfs/sqfs_common.py new file mode 100644 index 0000000000..9ef7b19ad9 --- /dev/null +++ b/test/py/tests/test_fs/test_squashfs/sqfs_common.py @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2020 Bootlin +# Author: Joao Marcos Costa <joaomarcos.costa@bootlin.com> + +import os +import random +import string + +def sqfs_get_random_letters(size): + letters = [] + for i in range(0, size): + letters.append(random.choice(string.ascii_letters)) + + return ''.join(letters) + +def sqfs_generate_file(path, size): + content = sqfs_get_random_letters(size) + file = open(path, "w") + file.write(content) + file.close() + +# generate image with three files and a symbolic link +def sqfs_generate_image(): + src = "test/py/tests/test_fs/test_squashfs/sqfs_src/" + dest = "test/py/tests/test_fs/test_squashfs/sqfs" + os.mkdir(src) + sqfs_generate_file(src + "frag_only", 100) + sqfs_generate_file(src + "blks_frag", 5100) + sqfs_generate_file(src + "blks_only", 4096) + os.symlink("frag_only", src + "sym") + os.system("mksquashfs " + src + " " + dest + " -b 4096 -always-use-fragments") + +# removes all files created by sqfs_generate_image() +def sqfs_clean(): + src = "test/py/tests/test_fs/test_squashfs/sqfs_src/" + dest = "test/py/tests/test_fs/test_squashfs/sqfs" + os.remove(src + "frag_only") + os.remove(src + "blks_frag") + os.remove(src + "blks_only") + os.remove(src + "sym") + os.rmdir(src) + os.remove(dest) diff --git a/test/py/tests/test_fs/test_squashfs/test_sqfs_load.py b/test/py/tests/test_fs/test_squashfs/test_sqfs_load.py new file mode 100644 index 0000000000..9b828fdf04 --- /dev/null +++ b/test/py/tests/test_fs/test_squashfs/test_sqfs_load.py @@ -0,0 +1,33 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2020 Bootlin +# Author: Joao Marcos Costa <joaomarcos.costa@bootlin.com> + +import os +import pytest +from sqfs_common import * + +@pytest.mark.boardspec('sandbox') +@pytest.mark.buildconfigspec('cmd_fs_generic') +@pytest.mark.buildconfigspec('cmd_squashfs') +@pytest.mark.buildconfigspec('fs_squashfs') +@pytest.mark.requiredtool('mksquashfs') +def test_sqfs_load(u_boot_console): + sqfs_generate_image() + command = "sqfsload host 0 $kernel_addr_r " + path = "test/py/tests/test_fs/test_squashfs/sqfs" + + try: + output = u_boot_console.run_command("host bind 0 " + path) + output = u_boot_console.run_command(command + "xxx") + assert "File not found." in output + output = u_boot_console.run_command(command + "frag_only") + assert "100 bytes read in" in output + output = u_boot_console.run_command(command + "blks_frag") + assert "5100 bytes read in" in output + output = u_boot_console.run_command(command + "blks_only") + assert "4096 bytes read in" in output + output = u_boot_console.run_command(command + "sym") + assert "100 bytes read in" in output + except: + sqfs_clean() + sqfs_clean() diff --git a/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py new file mode 100644 index 0000000000..dc31f1a50e --- /dev/null +++ b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2020 Bootlin +# Author: Joao Marcos Costa <joaomarcos.costa@bootlin.com> + +import os +import pytest +from sqfs_common import * + +@pytest.mark.boardspec('sandbox') +@pytest.mark.buildconfigspec('cmd_fs_generic') +@pytest.mark.buildconfigspec('cmd_squashfs') +@pytest.mark.buildconfigspec('fs_squashfs') +@pytest.mark.requiredtool('mksquashfs') +def test_sqfs_ls(u_boot_console): + sqfs_generate_image() + path = "test/py/tests/test_fs/test_squashfs/sqfs" + try: + output = u_boot_console.run_command("host bind 0 " + path) + output = u_boot_console.run_command("sqfsls host 0") + assert "4 file(s), 0 dir(s)" in output + assert "<SYM> sym" in output + output = u_boot_console.run_command("sqfsls host 0 xxx") + assert "** Cannot find directory. **" in output + except: + sqfs_clean() + sqfs_clean()
Add Python scripts to test 'ls' and 'load' commands. The scripts generate a SquashFS image and clean the directory after the assertions, or if an exception is raised. Signed-off-by: Joao Marcos Costa <joaomarcos.costa@bootlin.com> --- Changes in v4: - This patch was added in v4 and did not exist in the last version. MAINTAINERS | 1 + configs/sandbox_defconfig | 1 + .../test_fs/test_squashfs/sqfs_common.py | 42 +++++++++++++++++++ .../test_fs/test_squashfs/test_sqfs_load.py | 33 +++++++++++++++ .../test_fs/test_squashfs/test_sqfs_ls.py | 26 ++++++++++++ 5 files changed, 103 insertions(+) create mode 100644 test/py/tests/test_fs/test_squashfs/sqfs_common.py create mode 100644 test/py/tests/test_fs/test_squashfs/test_sqfs_load.py create mode 100644 test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py