mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-22 20:58:22 +00:00
test: fs: Add filesystem integrity checks
We need to make sure that file writes,file creation, etc. are properly performed and do not corrupt the filesystem. To help with this, introduce the assert_fs_integrity() function that executes the appropriate fsck tool. It should be called at the end of any test that modify the content/organization of the filesystem. Currently only supports FATs and EXT4. Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
parent
5cfc73e6e2
commit
290100583d
5 changed files with 48 additions and 3 deletions
15
test/py/tests/test_fs/fstest_helpers.py
Normal file
15
test/py/tests/test_fs/fstest_helpers.py
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
# Copyright (c) 2019, Texas Instrument
|
||||||
|
# Author: JJ Hiblot <jjhiblot@ti.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
from subprocess import check_call, CalledProcessError
|
||||||
|
|
||||||
|
def assert_fs_integrity(fs_type, fs_img):
|
||||||
|
try:
|
||||||
|
if fs_type == 'ext4':
|
||||||
|
check_call('fsck.ext4 -n -f %s' % fs_img, shell=True)
|
||||||
|
if fs_type == 'fat':
|
||||||
|
check_call('fsck.fat -n %s' % fs_img, shell=True)
|
||||||
|
except CalledProcessError:
|
||||||
|
raise
|
|
@ -11,6 +11,7 @@ This test verifies basic read/write operation on file system.
|
||||||
import pytest
|
import pytest
|
||||||
import re
|
import re
|
||||||
from fstest_defs import *
|
from fstest_defs import *
|
||||||
|
from fstest_helpers import assert_fs_integrity
|
||||||
|
|
||||||
@pytest.mark.boardspec('sandbox')
|
@pytest.mark.boardspec('sandbox')
|
||||||
@pytest.mark.slow
|
@pytest.mark.slow
|
||||||
|
@ -237,6 +238,7 @@ class TestFsBasic(object):
|
||||||
'md5sum %x $filesize' % ADDR,
|
'md5sum %x $filesize' % ADDR,
|
||||||
'setenv filesize'])
|
'setenv filesize'])
|
||||||
assert(md5val[0] in ''.join(output))
|
assert(md5val[0] in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_fs12(self, u_boot_console, fs_obj_basic):
|
def test_fs12(self, u_boot_console, fs_obj_basic):
|
||||||
"""
|
"""
|
||||||
|
@ -252,6 +254,7 @@ class TestFsBasic(object):
|
||||||
'host bind 0 %s' % fs_img,
|
'host bind 0 %s' % fs_img,
|
||||||
'%swrite host 0:0 %x /. 0x10' % (fs_type, ADDR)])
|
'%swrite host 0:0 %x /. 0x10' % (fs_type, ADDR)])
|
||||||
assert('Unable to write' in ''.join(output))
|
assert('Unable to write' in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_fs13(self, u_boot_console, fs_obj_basic):
|
def test_fs13(self, u_boot_console, fs_obj_basic):
|
||||||
"""
|
"""
|
||||||
|
@ -286,3 +289,4 @@ class TestFsBasic(object):
|
||||||
'md5sum %x $filesize' % ADDR,
|
'md5sum %x $filesize' % ADDR,
|
||||||
'setenv filesize'])
|
'setenv filesize'])
|
||||||
assert(md5val[0] in ''.join(output))
|
assert(md5val[0] in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
|
@ -11,6 +11,7 @@ This test verifies extended write operation on file system.
|
||||||
import pytest
|
import pytest
|
||||||
import re
|
import re
|
||||||
from fstest_defs import *
|
from fstest_defs import *
|
||||||
|
from fstest_helpers import assert_fs_integrity
|
||||||
|
|
||||||
@pytest.mark.boardspec('sandbox')
|
@pytest.mark.boardspec('sandbox')
|
||||||
@pytest.mark.slow
|
@pytest.mark.slow
|
||||||
|
@ -36,6 +37,7 @@ class TestFsExt(object):
|
||||||
'md5sum %x $filesize' % ADDR,
|
'md5sum %x $filesize' % ADDR,
|
||||||
'setenv filesize'])
|
'setenv filesize'])
|
||||||
assert(md5val[0] in ''.join(output))
|
assert(md5val[0] in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_fs_ext2(self, u_boot_console, fs_obj_ext):
|
def test_fs_ext2(self, u_boot_console, fs_obj_ext):
|
||||||
"""
|
"""
|
||||||
|
@ -58,6 +60,7 @@ class TestFsExt(object):
|
||||||
'md5sum %x $filesize' % ADDR,
|
'md5sum %x $filesize' % ADDR,
|
||||||
'setenv filesize'])
|
'setenv filesize'])
|
||||||
assert(md5val[0] in ''.join(output))
|
assert(md5val[0] in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_fs_ext3(self, u_boot_console, fs_obj_ext):
|
def test_fs_ext3(self, u_boot_console, fs_obj_ext):
|
||||||
"""
|
"""
|
||||||
|
@ -72,6 +75,7 @@ class TestFsExt(object):
|
||||||
'%swrite host 0:0 %x /dir1/none/%s.w3 $filesize'
|
'%swrite host 0:0 %x /dir1/none/%s.w3 $filesize'
|
||||||
% (fs_type, ADDR, MIN_FILE)])
|
% (fs_type, ADDR, MIN_FILE)])
|
||||||
assert('Unable to write "/dir1/none/' in ''.join(output))
|
assert('Unable to write "/dir1/none/' in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_fs_ext4(self, u_boot_console, fs_obj_ext):
|
def test_fs_ext4(self, u_boot_console, fs_obj_ext):
|
||||||
"""
|
"""
|
||||||
|
@ -104,6 +108,7 @@ class TestFsExt(object):
|
||||||
'md5sum %x $filesize' % ADDR,
|
'md5sum %x $filesize' % ADDR,
|
||||||
'setenv filesize'])
|
'setenv filesize'])
|
||||||
assert(md5val[1] in ''.join(output))
|
assert(md5val[1] in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_fs_ext5(self, u_boot_console, fs_obj_ext):
|
def test_fs_ext5(self, u_boot_console, fs_obj_ext):
|
||||||
"""
|
"""
|
||||||
|
@ -136,6 +141,7 @@ class TestFsExt(object):
|
||||||
'md5sum %x $filesize' % ADDR,
|
'md5sum %x $filesize' % ADDR,
|
||||||
'setenv filesize'])
|
'setenv filesize'])
|
||||||
assert(md5val[2] in ''.join(output))
|
assert(md5val[2] in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_fs_ext6(self, u_boot_console, fs_obj_ext):
|
def test_fs_ext6(self, u_boot_console, fs_obj_ext):
|
||||||
"""
|
"""
|
||||||
|
@ -160,6 +166,7 @@ class TestFsExt(object):
|
||||||
'printenv filesize',
|
'printenv filesize',
|
||||||
'setenv filesize'])
|
'setenv filesize'])
|
||||||
assert('filesize=0' in ''.join(output))
|
assert('filesize=0' in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_fs_ext7(self, u_boot_console, fs_obj_ext):
|
def test_fs_ext7(self, u_boot_console, fs_obj_ext):
|
||||||
"""
|
"""
|
||||||
|
@ -192,6 +199,7 @@ class TestFsExt(object):
|
||||||
'md5sum %x $filesize' % ADDR,
|
'md5sum %x $filesize' % ADDR,
|
||||||
'setenv filesize'])
|
'setenv filesize'])
|
||||||
assert(md5val[3] in ''.join(output))
|
assert(md5val[3] in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_fs_ext8(self, u_boot_console, fs_obj_ext):
|
def test_fs_ext8(self, u_boot_console, fs_obj_ext):
|
||||||
"""
|
"""
|
||||||
|
@ -209,6 +217,7 @@ class TestFsExt(object):
|
||||||
'%swrite host 0:0 %x /dir1/%s.w8 0x1400 %x'
|
'%swrite host 0:0 %x /dir1/%s.w8 0x1400 %x'
|
||||||
% (fs_type, ADDR, MIN_FILE, 0x100000 + 0x1400))
|
% (fs_type, ADDR, MIN_FILE, 0x100000 + 0x1400))
|
||||||
assert('Unable to write "/dir1' in output)
|
assert('Unable to write "/dir1' in output)
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_fs_ext9(self, u_boot_console, fs_obj_ext):
|
def test_fs_ext9(self, u_boot_console, fs_obj_ext):
|
||||||
"""
|
"""
|
||||||
|
@ -223,3 +232,4 @@ class TestFsExt(object):
|
||||||
'%swrite host 0:0 %x /dir1/%s.w9 0x1400 0x1400'
|
'%swrite host 0:0 %x /dir1/%s.w9 0x1400 0x1400'
|
||||||
% (fs_type, ADDR, MIN_FILE)])
|
% (fs_type, ADDR, MIN_FILE)])
|
||||||
assert('Unable to write "/dir1' in ''.join(output))
|
assert('Unable to write "/dir1' in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
|
@ -9,6 +9,7 @@ This test verifies mkdir operation on file system.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from fstest_helpers import assert_fs_integrity
|
||||||
|
|
||||||
@pytest.mark.boardspec('sandbox')
|
@pytest.mark.boardspec('sandbox')
|
||||||
@pytest.mark.slow
|
@pytest.mark.slow
|
||||||
|
@ -29,6 +30,8 @@ class TestMkdir(object):
|
||||||
'%sls host 0:0 dir1' % fs_type)
|
'%sls host 0:0 dir1' % fs_type)
|
||||||
assert('./' in output)
|
assert('./' in output)
|
||||||
assert('../' in output)
|
assert('../' in output)
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
|
|
||||||
def test_mkdir2(self, u_boot_console, fs_obj_mkdir):
|
def test_mkdir2(self, u_boot_console, fs_obj_mkdir):
|
||||||
"""
|
"""
|
||||||
|
@ -46,6 +49,7 @@ class TestMkdir(object):
|
||||||
'%sls host 0:0 dir1/dir2' % fs_type)
|
'%sls host 0:0 dir1/dir2' % fs_type)
|
||||||
assert('./' in output)
|
assert('./' in output)
|
||||||
assert('../' in output)
|
assert('../' in output)
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_mkdir3(self, u_boot_console, fs_obj_mkdir):
|
def test_mkdir3(self, u_boot_console, fs_obj_mkdir):
|
||||||
"""
|
"""
|
||||||
|
@ -58,6 +62,7 @@ class TestMkdir(object):
|
||||||
'host bind 0 %s' % fs_img,
|
'host bind 0 %s' % fs_img,
|
||||||
'%smkdir host 0:0 none/dir3' % fs_type])
|
'%smkdir host 0:0 none/dir3' % fs_type])
|
||||||
assert('Unable to create a directory' in ''.join(output))
|
assert('Unable to create a directory' in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_mkdir4(self, u_boot_console, fs_obj_mkdir):
|
def test_mkdir4(self, u_boot_console, fs_obj_mkdir):
|
||||||
"""
|
"""
|
||||||
|
@ -69,6 +74,7 @@ class TestMkdir(object):
|
||||||
'host bind 0 %s' % fs_img,
|
'host bind 0 %s' % fs_img,
|
||||||
'%smkdir host 0:0 .' % fs_type])
|
'%smkdir host 0:0 .' % fs_type])
|
||||||
assert('Unable to create a directory' in ''.join(output))
|
assert('Unable to create a directory' in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_mkdir5(self, u_boot_console, fs_obj_mkdir):
|
def test_mkdir5(self, u_boot_console, fs_obj_mkdir):
|
||||||
"""
|
"""
|
||||||
|
@ -80,6 +86,7 @@ class TestMkdir(object):
|
||||||
'host bind 0 %s' % fs_img,
|
'host bind 0 %s' % fs_img,
|
||||||
'%smkdir host 0:0 ..' % fs_type])
|
'%smkdir host 0:0 ..' % fs_type])
|
||||||
assert('Unable to create a directory' in ''.join(output))
|
assert('Unable to create a directory' in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_mkdir6(self, u_boot_console, fs_obj_mkdir):
|
def test_mkdir6(self, u_boot_console, fs_obj_mkdir):
|
||||||
"""
|
"""
|
||||||
|
@ -111,3 +118,4 @@ class TestMkdir(object):
|
||||||
'%sls host 0:0 dir6/0123456789abcdef13/..' % fs_type)
|
'%sls host 0:0 dir6/0123456789abcdef13/..' % fs_type)
|
||||||
assert('0123456789abcdef00/' in output)
|
assert('0123456789abcdef00/' in output)
|
||||||
assert('0123456789abcdef13/' in output)
|
assert('0123456789abcdef13/' in output)
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
|
@ -10,6 +10,7 @@ on file system.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from fstest_helpers import assert_fs_integrity
|
||||||
|
|
||||||
@pytest.mark.boardspec('sandbox')
|
@pytest.mark.boardspec('sandbox')
|
||||||
@pytest.mark.slow
|
@pytest.mark.slow
|
||||||
|
@ -30,6 +31,7 @@ class TestUnlink(object):
|
||||||
'%sls host 0:0 dir1/' % fs_type)
|
'%sls host 0:0 dir1/' % fs_type)
|
||||||
assert(not 'file1' in output)
|
assert(not 'file1' in output)
|
||||||
assert('file2' in output)
|
assert('file2' in output)
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_unlink2(self, u_boot_console, fs_obj_unlink):
|
def test_unlink2(self, u_boot_console, fs_obj_unlink):
|
||||||
"""
|
"""
|
||||||
|
@ -48,6 +50,7 @@ class TestUnlink(object):
|
||||||
output = u_boot_console.run_command(
|
output = u_boot_console.run_command(
|
||||||
'%sls host 0:0 dir2' % fs_type)
|
'%sls host 0:0 dir2' % fs_type)
|
||||||
assert('0 file(s), 2 dir(s)' in output)
|
assert('0 file(s), 2 dir(s)' in output)
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_unlink3(self, u_boot_console, fs_obj_unlink):
|
def test_unlink3(self, u_boot_console, fs_obj_unlink):
|
||||||
"""
|
"""
|
||||||
|
@ -59,6 +62,7 @@ class TestUnlink(object):
|
||||||
'host bind 0 %s' % fs_img,
|
'host bind 0 %s' % fs_img,
|
||||||
'%srm host 0:0 dir1/nofile' % fs_type])
|
'%srm host 0:0 dir1/nofile' % fs_type])
|
||||||
assert('nofile: doesn\'t exist' in ''.join(output))
|
assert('nofile: doesn\'t exist' in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_unlink4(self, u_boot_console, fs_obj_unlink):
|
def test_unlink4(self, u_boot_console, fs_obj_unlink):
|
||||||
"""
|
"""
|
||||||
|
@ -74,6 +78,7 @@ class TestUnlink(object):
|
||||||
output = u_boot_console.run_command(
|
output = u_boot_console.run_command(
|
||||||
'%sls host 0:0 /' % fs_type)
|
'%sls host 0:0 /' % fs_type)
|
||||||
assert(not 'dir4' in output)
|
assert(not 'dir4' in output)
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_unlink5(self, u_boot_console, fs_obj_unlink):
|
def test_unlink5(self, u_boot_console, fs_obj_unlink):
|
||||||
"""
|
"""
|
||||||
|
@ -86,6 +91,7 @@ class TestUnlink(object):
|
||||||
'host bind 0 %s' % fs_img,
|
'host bind 0 %s' % fs_img,
|
||||||
'%srm host 0:0 dir5' % fs_type])
|
'%srm host 0:0 dir5' % fs_type])
|
||||||
assert('directory is not empty' in ''.join(output))
|
assert('directory is not empty' in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_unlink6(self, u_boot_console, fs_obj_unlink):
|
def test_unlink6(self, u_boot_console, fs_obj_unlink):
|
||||||
"""
|
"""
|
||||||
|
@ -97,6 +103,7 @@ class TestUnlink(object):
|
||||||
'host bind 0 %s' % fs_img,
|
'host bind 0 %s' % fs_img,
|
||||||
'%srm host 0:0 dir5/.' % fs_type])
|
'%srm host 0:0 dir5/.' % fs_type])
|
||||||
assert('directory is not empty' in ''.join(output))
|
assert('directory is not empty' in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
||||||
def test_unlink7(self, u_boot_console, fs_obj_unlink):
|
def test_unlink7(self, u_boot_console, fs_obj_unlink):
|
||||||
"""
|
"""
|
||||||
|
@ -108,3 +115,4 @@ class TestUnlink(object):
|
||||||
'host bind 0 %s' % fs_img,
|
'host bind 0 %s' % fs_img,
|
||||||
'%srm host 0:0 dir5/..' % fs_type])
|
'%srm host 0:0 dir5/..' % fs_type])
|
||||||
assert('directory is not empty' in ''.join(output))
|
assert('directory is not empty' in ''.join(output))
|
||||||
|
assert_fs_integrity(fs_type, fs_img)
|
||||||
|
|
Loading…
Add table
Reference in a new issue