diff mbox series

[U-Boot,v2,4/5] test/py: test_fs: add tests for creating/deleting many files

Message ID 20190524051039.32460-5-takahiro.akashi@linaro.org
State Changes Requested
Delegated to: Tom Rini
Headers show
Series fs: fat: fixes for write under root directory | expand

Commit Message

AKASHI Takahiro May 24, 2019, 5:10 a.m. UTC
Two test cases are added under test_fs_ext:
    test case 10: for root directory
    test case 11: for non-root directory

Those will verify a behavior fixed by the commits related to
root directory
("fs: fat: allocate a new cluster for root directory of fat32" and
"fs: fat: flush a directory cluster properly"), and focus on
handling long-file-name directory entries under a directory.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
---
 test/py/tests/test_fs/test_ext.py | 84 +++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)

Comments

Heinrich Schuchardt May 28, 2019, 4:46 p.m. UTC | #1
As both Tom and I wrote to you in reply of to the first version of the
patch it is not clear how these tests can be run.

make tests

simply skips them.

Could you, please, provide a description in test/py/README.md.

Best regards

Heinrich

On 5/24/19 7:10 AM, AKASHI Takahiro wrote:
> Two test cases are added under test_fs_ext:
>      test case 10: for root directory
>      test case 11: for non-root directory
>
> Those will verify a behavior fixed by the commits related to
> root directory
> ("fs: fat: allocate a new cluster for root directory of fat32" and
> "fs: fat: flush a directory cluster properly"), and focus on
> handling long-file-name directory entries under a directory.
>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> ---
>   test/py/tests/test_fs/test_ext.py | 84 +++++++++++++++++++++++++++++++
>   1 file changed, 84 insertions(+)
>
> diff --git a/test/py/tests/test_fs/test_ext.py b/test/py/tests/test_fs/test_ext.py
> index 2c47738b8df2..361f440dd6d4 100644
> --- a/test/py/tests/test_fs/test_ext.py
> +++ b/test/py/tests/test_fs/test_ext.py
> @@ -233,3 +233,87 @@ class TestFsExt(object):
>                       % (fs_type, ADDR, MIN_FILE)])
>               assert('Unable to write "/dir1' in ''.join(output))
>               assert_fs_integrity(fs_type, fs_img)
> +
> +    def test_fs_ext10(self, u_boot_console, fs_obj_ext):
> +        """
> +        'Test Case 10 - create/delete as many directories under root directory
> +        as amount of directory entries goes beyond one cluster size)'
> +        """
> +        fs_type,fs_img,md5val = fs_obj_ext
> +        with u_boot_console.log.section('Test Case 10 - create/delete (many)'):
> +            # Test Case 10a - Create many files
> +            #   Please note that the size of directory entry is 32 bytes.
> +            #   So one typical cluster may holds 64 (2048/32) entries.
> +            output = u_boot_console.run_command(
> +                'host bind 0 %s' % fs_img)
> +
> +            for i in range(0, 66):
> +                output = u_boot_console.run_command(
> +                    '%swrite host 0:0 %x /FILE0123456789_%02x 100'
> +                    % (fs_type, ADDR, i))
> +            output = u_boot_console.run_command('%sls host 0:0 /' % fs_type)
> +            assert('FILE0123456789_00' in output)
> +            assert('FILE0123456789_41' in output)
> +
> +            # Test Case 10b - Delete many files
> +            for i in range(0, 66):
> +                output = u_boot_console.run_command(
> +                    '%srm host 0:0 /FILE0123456789_%02x'
> +                    % (fs_type, i))
> +            output = u_boot_console.run_command('%sls host 0:0 /' % fs_type)
> +            assert(not 'FILE0123456789_00' in output)
> +            assert(not 'FILE0123456789_41' in output)
> +
> +            # Test Case 10c - Create many files again
> +            # Please note no.64 and 65 are intentionally re-created
> +            for i in range(64, 128):
> +                output = u_boot_console.run_command(
> +                    '%swrite host 0:0 %x /FILE0123456789_%02x 100'
> +                    % (fs_type, ADDR, i))
> +            output = u_boot_console.run_command('%sls host 0:0 /' % fs_type)
> +            assert('FILE0123456789_40' in output)
> +            assert('FILE0123456789_79' in output)
> +
> +            assert_fs_integrity(fs_type, fs_img)
> +
> +    def test_fs_ext11(self, u_boot_console, fs_obj_ext):
> +        """
> +        'Test Case 11 - create/delete as many directories under non-root
> +        directory as amount of directory entries goes beyond one cluster size)'
> +        """
> +        fs_type,fs_img,md5val = fs_obj_ext
> +        with u_boot_console.log.section('Test Case 10 - create/delete (many)'):
> +            # Test Case 11a - Create many files
> +            #   Please note that the size of directory entry is 32 bytes.
> +            #   So one typical cluster may holds 64 (2048/32) entries.
> +            output = u_boot_console.run_command(
> +                'host bind 0 %s' % fs_img)
> +
> +            for i in range(0, 66):
> +                output = u_boot_console.run_command(
> +                    '%swrite host 0:0 %x /dir1/FILE0123456789_%02x 100'
> +                    % (fs_type, ADDR, i))
> +            output = u_boot_console.run_command('%sls host 0:0 /dir1' % fs_type)
> +            assert('FILE0123456789_00' in output)
> +            assert('FILE0123456789_41' in output)
> +
> +            # Test Case 11b - Delete many files
> +            for i in range(0, 66):
> +                output = u_boot_console.run_command(
> +                    '%srm host 0:0 /dir1/FILE0123456789_%02x'
> +                    % (fs_type, i))
> +            output = u_boot_console.run_command('%sls host 0:0 /dir1' % fs_type)
> +            assert(not 'FILE0123456789_00' in output)
> +            assert(not 'FILE0123456789_41' in output)
> +
> +            # Test Case 11c - Create many files again
> +            # Please note no.64 and 65 are intentionally re-created
> +            for i in range(64, 128):
> +                output = u_boot_console.run_command(
> +                    '%swrite host 0:0 %x /dir1/FILE0123456789_%02x 100'
> +                    % (fs_type, ADDR, i))
> +            output = u_boot_console.run_command('%sls host 0:0 /dir1' % fs_type)
> +            assert('FILE0123456789_40' in output)
> +            assert('FILE0123456789_79' in output)
> +
> +            assert_fs_integrity(fs_type, fs_img)
>
Tom Rini May 28, 2019, 5:03 p.m. UTC | #2
On Tue, May 28, 2019 at 06:46:36PM +0200, Heinrich Schuchardt wrote:

> As both Tom and I wrote to you in reply of to the first version of the
> patch it is not clear how these tests can be run.
> 
> make tests
> 
> simply skips them.
> 
> Could you, please, provide a description in test/py/README.md.

To be a bit more clear, https://patchwork.ozlabs.org/patch/1104600/
documents the requirement to install libguestfs-tools but not how to
configure things further.  Just installing that package locally changes
my existing test/py/tests/test_fs/test_basic.py run from
'..........................sssssssssssss' to full skip.
diff mbox series

Patch

diff --git a/test/py/tests/test_fs/test_ext.py b/test/py/tests/test_fs/test_ext.py
index 2c47738b8df2..361f440dd6d4 100644
--- a/test/py/tests/test_fs/test_ext.py
+++ b/test/py/tests/test_fs/test_ext.py
@@ -233,3 +233,87 @@  class TestFsExt(object):
                     % (fs_type, ADDR, MIN_FILE)])
             assert('Unable to write "/dir1' in ''.join(output))
             assert_fs_integrity(fs_type, fs_img)
+
+    def test_fs_ext10(self, u_boot_console, fs_obj_ext):
+        """
+        'Test Case 10 - create/delete as many directories under root directory
+        as amount of directory entries goes beyond one cluster size)'
+        """
+        fs_type,fs_img,md5val = fs_obj_ext
+        with u_boot_console.log.section('Test Case 10 - create/delete (many)'):
+            # Test Case 10a - Create many files
+            #   Please note that the size of directory entry is 32 bytes.
+            #   So one typical cluster may holds 64 (2048/32) entries.
+            output = u_boot_console.run_command(
+                'host bind 0 %s' % fs_img)
+
+            for i in range(0, 66):
+                output = u_boot_console.run_command(
+                    '%swrite host 0:0 %x /FILE0123456789_%02x 100'
+                    % (fs_type, ADDR, i))
+            output = u_boot_console.run_command('%sls host 0:0 /' % fs_type)
+            assert('FILE0123456789_00' in output)
+            assert('FILE0123456789_41' in output)
+
+            # Test Case 10b - Delete many files
+            for i in range(0, 66):
+                output = u_boot_console.run_command(
+                    '%srm host 0:0 /FILE0123456789_%02x'
+                    % (fs_type, i))
+            output = u_boot_console.run_command('%sls host 0:0 /' % fs_type)
+            assert(not 'FILE0123456789_00' in output)
+            assert(not 'FILE0123456789_41' in output)
+
+            # Test Case 10c - Create many files again
+            # Please note no.64 and 65 are intentionally re-created
+            for i in range(64, 128):
+                output = u_boot_console.run_command(
+                    '%swrite host 0:0 %x /FILE0123456789_%02x 100'
+                    % (fs_type, ADDR, i))
+            output = u_boot_console.run_command('%sls host 0:0 /' % fs_type)
+            assert('FILE0123456789_40' in output)
+            assert('FILE0123456789_79' in output)
+
+            assert_fs_integrity(fs_type, fs_img)
+
+    def test_fs_ext11(self, u_boot_console, fs_obj_ext):
+        """
+        'Test Case 11 - create/delete as many directories under non-root
+        directory as amount of directory entries goes beyond one cluster size)'
+        """
+        fs_type,fs_img,md5val = fs_obj_ext
+        with u_boot_console.log.section('Test Case 10 - create/delete (many)'):
+            # Test Case 11a - Create many files
+            #   Please note that the size of directory entry is 32 bytes.
+            #   So one typical cluster may holds 64 (2048/32) entries.
+            output = u_boot_console.run_command(
+                'host bind 0 %s' % fs_img)
+
+            for i in range(0, 66):
+                output = u_boot_console.run_command(
+                    '%swrite host 0:0 %x /dir1/FILE0123456789_%02x 100'
+                    % (fs_type, ADDR, i))
+            output = u_boot_console.run_command('%sls host 0:0 /dir1' % fs_type)
+            assert('FILE0123456789_00' in output)
+            assert('FILE0123456789_41' in output)
+
+            # Test Case 11b - Delete many files
+            for i in range(0, 66):
+                output = u_boot_console.run_command(
+                    '%srm host 0:0 /dir1/FILE0123456789_%02x'
+                    % (fs_type, i))
+            output = u_boot_console.run_command('%sls host 0:0 /dir1' % fs_type)
+            assert(not 'FILE0123456789_00' in output)
+            assert(not 'FILE0123456789_41' in output)
+
+            # Test Case 11c - Create many files again
+            # Please note no.64 and 65 are intentionally re-created
+            for i in range(64, 128):
+                output = u_boot_console.run_command(
+                    '%swrite host 0:0 %x /dir1/FILE0123456789_%02x 100'
+                    % (fs_type, ADDR, i))
+            output = u_boot_console.run_command('%sls host 0:0 /dir1' % fs_type)
+            assert('FILE0123456789_40' in output)
+            assert('FILE0123456789_79' in output)
+
+            assert_fs_integrity(fs_type, fs_img)