In this commit and the following, test scripts for new filesystem functionalities introduced by my patch set, "fs: fat: extend FAT write operations," are provided. In particular, this patch adds test cases for sub-directory write and write with non-zero offset. Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Alexander Graf <agraf@suse.de>lime2-spi
parent
de8106c198
commit
71f27af58e
@ -0,0 +1,224 @@ |
||||
# SPDX-License-Identifier: GPL-2.0+ |
||||
# Copyright (c) 2018, Linaro Limited |
||||
# Author: Takahiro Akashi <takahiro.akashi@linaro.org> |
||||
# |
||||
# U-Boot File System:Exntented Test |
||||
|
||||
""" |
||||
This test verifies extended write operation on file system. |
||||
""" |
||||
|
||||
import pytest |
||||
import re |
||||
from fstest_defs import * |
||||
|
||||
@pytest.mark.boardspec('sandbox') |
||||
class TestFsExt(object): |
||||
def test_fs_ext1(self, u_boot_console, fs_obj_ext): |
||||
""" |
||||
Test Case 1 - write a file with absolute path |
||||
""" |
||||
fs_type,fs_img,md5val = fs_obj_ext |
||||
with u_boot_console.log.section('Test Case 1 - write with abs path'): |
||||
# Test Case 1a - Check if command successfully returned |
||||
output = u_boot_console.run_command_list([ |
||||
'host bind 0 %s' % fs_img, |
||||
'%sload host 0:0 %x /%s' % (fs_type, ADDR, MIN_FILE), |
||||
'%swrite host 0:0 %x /dir1/%s.w1 $filesize' |
||||
% (fs_type, ADDR, MIN_FILE)]) |
||||
assert('20480 bytes written' in ''.join(output)) |
||||
|
||||
# Test Case 1b - Check md5 of file content |
||||
output = u_boot_console.run_command_list([ |
||||
'mw.b %x 00 100' % ADDR, |
||||
'%sload host 0:0 %x /dir1/%s.w1' % (fs_type, ADDR, MIN_FILE), |
||||
'md5sum %x $filesize' % ADDR, |
||||
'setenv filesize']) |
||||
assert(md5val[0] in ''.join(output)) |
||||
|
||||
def test_fs_ext2(self, u_boot_console, fs_obj_ext): |
||||
""" |
||||
Test Case 2 - write to a file with relative path |
||||
""" |
||||
fs_type,fs_img,md5val = fs_obj_ext |
||||
with u_boot_console.log.section('Test Case 2 - write with rel path'): |
||||
# Test Case 2a - Check if command successfully returned |
||||
output = u_boot_console.run_command_list([ |
||||
'host bind 0 %s' % fs_img, |
||||
'%sload host 0:0 %x /%s' % (fs_type, ADDR, MIN_FILE), |
||||
'%swrite host 0:0 %x dir1/%s.w2 $filesize' |
||||
% (fs_type, ADDR, MIN_FILE)]) |
||||
assert('20480 bytes written' in ''.join(output)) |
||||
|
||||
# Test Case 2b - Check md5 of file content |
||||
output = u_boot_console.run_command_list([ |
||||
'mw.b %x 00 100' % ADDR, |
||||
'%sload host 0:0 %x dir1/%s.w2' % (fs_type, ADDR, MIN_FILE), |
||||
'md5sum %x $filesize' % ADDR, |
||||
'setenv filesize']) |
||||
assert(md5val[0] in ''.join(output)) |
||||
|
||||
def test_fs_ext3(self, u_boot_console, fs_obj_ext): |
||||
""" |
||||
Test Case 3 - write to a file with invalid path |
||||
""" |
||||
fs_type,fs_img,md5val = fs_obj_ext |
||||
with u_boot_console.log.section('Test Case 3 - write with invalid path'): |
||||
# Test Case 3 - Check if command expectedly failed |
||||
output = u_boot_console.run_command_list([ |
||||
'host bind 0 %s' % fs_img, |
||||
'%sload host 0:0 %x /%s' % (fs_type, ADDR, MIN_FILE), |
||||
'%swrite host 0:0 %x /dir1/none/%s.w3 $filesize' |
||||
% (fs_type, ADDR, MIN_FILE)]) |
||||
assert('Unable to write "/dir1/none/' in ''.join(output)) |
||||
|
||||
def test_fs_ext4(self, u_boot_console, fs_obj_ext): |
||||
""" |
||||
Test Case 4 - write at non-zero offset, enlarging file size |
||||
""" |
||||
fs_type,fs_img,md5val = fs_obj_ext |
||||
with u_boot_console.log.section('Test Case 4 - write at non-zero offset, enlarging file size'): |
||||
# Test Case 4a - Check if command successfully returned |
||||
output = u_boot_console.run_command_list([ |
||||
'host bind 0 %s' % fs_img, |
||||
'%sload host 0:0 %x /%s' % (fs_type, ADDR, MIN_FILE), |
||||
'%swrite host 0:0 %x /dir1/%s.w4 $filesize' |
||||
% (fs_type, ADDR, MIN_FILE)]) |
||||
output = u_boot_console.run_command( |
||||
'%swrite host 0:0 %x /dir1/%s.w4 $filesize 0x1400' |
||||
% (fs_type, ADDR, MIN_FILE)) |
||||
assert('20480 bytes written' in output) |
||||
|
||||
# Test Case 4b - Check size of written file |
||||
output = u_boot_console.run_command_list([ |
||||
'%ssize host 0:0 /dir1/%s.w4' % (fs_type, MIN_FILE), |
||||
'printenv filesize', |
||||
'setenv filesize']) |
||||
assert('filesize=6400' in ''.join(output)) |
||||
|
||||
# Test Case 4c - Check md5 of file content |
||||
output = u_boot_console.run_command_list([ |
||||
'mw.b %x 00 100' % ADDR, |
||||
'%sload host 0:0 %x /dir1/%s.w4' % (fs_type, ADDR, MIN_FILE), |
||||
'md5sum %x $filesize' % ADDR, |
||||
'setenv filesize']) |
||||
assert(md5val[1] in ''.join(output)) |
||||
|
||||
def test_fs_ext5(self, u_boot_console, fs_obj_ext): |
||||
""" |
||||
Test Case 5 - write at non-zero offset, shrinking file size |
||||
""" |
||||
fs_type,fs_img,md5val = fs_obj_ext |
||||
with u_boot_console.log.section('Test Case 5 - write at non-zero offset, shrinking file size'): |
||||
# Test Case 5a - Check if command successfully returned |
||||
output = u_boot_console.run_command_list([ |
||||
'host bind 0 %s' % fs_img, |
||||
'%sload host 0:0 %x /%s' % (fs_type, ADDR, MIN_FILE), |
||||
'%swrite host 0:0 %x /dir1/%s.w5 $filesize' |
||||
% (fs_type, ADDR, MIN_FILE)]) |
||||
output = u_boot_console.run_command( |
||||
'%swrite host 0:0 %x /dir1/%s.w5 0x1400 0x1400' |
||||
% (fs_type, ADDR, MIN_FILE)) |
||||
assert('5120 bytes written' in output) |
||||
|
||||
# Test Case 5b - Check size of written file |
||||
output = u_boot_console.run_command_list([ |
||||
'%ssize host 0:0 /dir1/%s.w5' % (fs_type, MIN_FILE), |
||||
'printenv filesize', |
||||
'setenv filesize']) |
||||
assert('filesize=2800' in ''.join(output)) |
||||
|
||||
# Test Case 5c - Check md5 of file content |
||||
output = u_boot_console.run_command_list([ |
||||
'mw.b %x 00 100' % ADDR, |
||||
'%sload host 0:0 %x /dir1/%s.w5' % (fs_type, ADDR, MIN_FILE), |
||||
'md5sum %x $filesize' % ADDR, |
||||
'setenv filesize']) |
||||
assert(md5val[2] in ''.join(output)) |
||||
|
||||
def test_fs_ext6(self, u_boot_console, fs_obj_ext): |
||||
""" |
||||
Test Case 6 - write nothing at the start, truncating to zero |
||||
""" |
||||
fs_type,fs_img,md5val = fs_obj_ext |
||||
with u_boot_console.log.section('Test Case 6 - write nothing at the start, truncating to zero'): |
||||
# Test Case 6a - Check if command successfully returned |
||||
output = u_boot_console.run_command_list([ |
||||
'host bind 0 %s' % fs_img, |
||||
'%sload host 0:0 %x /%s' % (fs_type, ADDR, MIN_FILE), |
||||
'%swrite host 0:0 %x /dir1/%s.w6 $filesize' |
||||
% (fs_type, ADDR, MIN_FILE)]) |
||||
output = u_boot_console.run_command( |
||||
'%swrite host 0:0 %x /dir1/%s.w6 0 0' |
||||
% (fs_type, ADDR, MIN_FILE)) |
||||
assert('0 bytes written' in output) |
||||
|
||||
# Test Case 6b - Check size of written file |
||||
output = u_boot_console.run_command_list([ |
||||
'%ssize host 0:0 /dir1/%s.w6' % (fs_type, MIN_FILE), |
||||
'printenv filesize', |
||||
'setenv filesize']) |
||||
assert('filesize=0' in ''.join(output)) |
||||
|
||||
def test_fs_ext7(self, u_boot_console, fs_obj_ext): |
||||
""" |
||||
Test Case 7 - write at the end (append) |
||||
""" |
||||
fs_type,fs_img,md5val = fs_obj_ext |
||||
with u_boot_console.log.section('Test Case 7 - write at the end (append)'): |
||||
# Test Case 7a - Check if command successfully returned |
||||
output = u_boot_console.run_command_list([ |
||||
'host bind 0 %s' % fs_img, |
||||
'%sload host 0:0 %x /%s' % (fs_type, ADDR, MIN_FILE), |
||||
'%swrite host 0:0 %x /dir1/%s.w7 $filesize' |
||||
% (fs_type, ADDR, MIN_FILE)]) |
||||
output = u_boot_console.run_command( |
||||
'%swrite host 0:0 %x /dir1/%s.w7 $filesize $filesize' |
||||
% (fs_type, ADDR, MIN_FILE)) |
||||
assert('20480 bytes written' in output) |
||||
|
||||
# Test Case 7b - Check size of written file |
||||
output = u_boot_console.run_command_list([ |
||||
'%ssize host 0:0 /dir1/%s.w7' % (fs_type, MIN_FILE), |
||||
'printenv filesize', |
||||
'setenv filesize']) |
||||
assert('filesize=a000' in ''.join(output)) |
||||
|
||||
# Test Case 7c - Check md5 of file content |
||||
output = u_boot_console.run_command_list([ |
||||
'mw.b %x 00 100' % ADDR, |
||||
'%sload host 0:0 %x /dir1/%s.w7' % (fs_type, ADDR, MIN_FILE), |
||||
'md5sum %x $filesize' % ADDR, |
||||
'setenv filesize']) |
||||
assert(md5val[3] in ''.join(output)) |
||||
|
||||
def test_fs_ext8(self, u_boot_console, fs_obj_ext): |
||||
""" |
||||
Test Case 8 - write at offset beyond the end of file |
||||
""" |
||||
fs_type,fs_img,md5val = fs_obj_ext |
||||
with u_boot_console.log.section('Test Case 8 - write beyond the end'): |
||||
# Test Case 8a - Check if command expectedly failed |
||||
output = u_boot_console.run_command_list([ |
||||
'host bind 0 %s' % fs_img, |
||||
'%sload host 0:0 %x /%s' % (fs_type, ADDR, MIN_FILE), |
||||
'%swrite host 0:0 %x /dir1/%s.w8 $filesize' |
||||
% (fs_type, ADDR, MIN_FILE)]) |
||||
output = u_boot_console.run_command( |
||||
'%swrite host 0:0 %x /dir1/%s.w8 0x1400 %x' |
||||
% (fs_type, ADDR, MIN_FILE, 0x100000 + 0x1400)) |
||||
assert('Unable to write "/dir1' in output) |
||||
|
||||
def test_fs_ext9(self, u_boot_console, fs_obj_ext): |
||||
""" |
||||
Test Case 9 - write to a non-existing file at non-zero offset |
||||
""" |
||||
fs_type,fs_img,md5val = fs_obj_ext |
||||
with u_boot_console.log.section('Test Case 9 - write to non-existing file with non-zero offset'): |
||||
# Test Case 9a - Check if command expectedly failed |
||||
output = u_boot_console.run_command_list([ |
||||
'host bind 0 %s' % fs_img, |
||||
'%sload host 0:0 %x /%s' % (fs_type, ADDR, MIN_FILE), |
||||
'%swrite host 0:0 %x /dir1/%s.w9 0x1400 0x1400' |
||||
% (fs_type, ADDR, MIN_FILE)]) |
||||
assert('Unable to write "/dir1' in ''.join(output)) |
Loading…
Reference in new issue