xfstests测试FAQ

xfstests测试工具调试方法

1) 针对环境搭建出错的调试方法

xfstests环境搭建的入口脚本文件是kvm-xfstests/android-xfstests,可以在里面开头处加上set -x语句,这样便打开了单步调试开关,随后环境搭建的详细执行过程便会输出。

根据输出信息,便可定位是环境搭建的哪个步骤出错了。

2) 针对case测试出错的调试方法

xfstests测试时,为了准确了解测试case对应脚本文件中,诸如_require_dm_target flakey这样的函数内部执行时是否会报错或者有问题,或者说为了进一步熟悉每条测试case的执行过程,

都需要对测试case对应的脚本文件进行单步调试。

1> 单步调试的困难:

因为目前的xfstests测试工具的运行方式有两个特点:

  a>  host端发起并主宰测试过程,通过adb命令远程操作手机中的xfstests测试脚本进行手机端的文件系统测试工作。

  b>  host端会操作手机运行chroot命令,迫使手机进入xfstests所需要的根文件系统环境中进行实际的测试工作。

所以简单在测试case所在脚本中加set -x命令,是看不到测试case的实际详细运行过程的。

2> 解决方法:

把手机中/data/xfstests-chroot/root/runtests.sh文件adb pull出来,在该文件里面的语句中加入-d选项,如下所示。

bash ./check -R xunit  -d  -T $EXTRA_OPT $AEX $TEST_SET_EXCLUDE

并修改测试case所在的脚本文件,假设为手机中/data/xfstests-chroot/root/xfstests/test/generic/034文件, 在该文件开头加上set -x语句。

然后adb push把两个修改后的脚本放置到手机上它原来所处的位置。

然后host端执行cd xfstests-bld && ./android-xfstests.sh shell命令,登录到手机中后,再执行命令:/runtests.sh generic/034,

就可以看到034号case的输出的单步调试详细信息了。

xfstests测试常见问题及解决方法

1:有些手机报setenforce 0失败的解决方法

需要在文件xfstests-bld/kvm-xfstests/android-xfstests的函数wait_for_device里面,在最后一行setenforce 0之前,加上语句sleep 2。

因为在adb root之后和adb shell setenforce 0之前,有些手机需要等待一会,以便adb root执行成功后,才能执行setenforce 0命令。

如果不等待的话,setenforce 0命令执行的时候,系统没root成功的话,setenforce就会执行失败。

2:部分机型上报shrink data partition错误的解决方法。

需要查看手机的data分区,通常是data分区的文件系统容量还是占满了整个data分区,并未shrink成功。

 1> xfstest做shrink data partition的目的:

是为了从手机原有的data分区中再分出来一块分区,专门做文件系统的稳定性测试工作。

 2> 报错对应的解决方法:

为了shrink data partition成功,有个最简单的修改方式,就是把/system/bin/resize.f2fs或者resize2fs这些bin文件强制改成其他名字,

然后再做xfstest的测试工作。

这样接下来重启开机时,userdata分区的resize工作就做不了了,从而可以保证xfstest的shrink data partition工作及时生效。

或者上面方法不行的话,就需要强制代码里面去掉resize userdata分区的相关工作了,data分区为f2fs的机型可以带下面changes打包:

http://gerritlvs.pt.XXX.com/#/c/XXX

3:有些not run的测试case定位原因其实是这个xfstests-bld/kvm-xfstests/test-appliance/root_fs.tar.gz还是用的旧版本,所以要首先要到下面的网址上:

https://github.com/tytso/xfstests

查看下有无对这些测试case提新的修复patches,新的修复patch是否可以不再让这些测试case not run了。

如果有的话,就需要对比看下修复patches的提交日期是否早于下面网址中的root_fs.arm64.tar.gz文件创建日期。

https://www.kernel.org/pub/linux/kernel/people/tytso/kvm-xfstests

如果早于的话,则有可能上面网址的root_fs.arm64.tar.gz文件已经包含了该修复patches.

所以下载该新版的root_fs.arm64.tar.gz文件,让xfstests用到该新版的root_fs文件即可解决not run的问题。

4:部分机型上报fastboot: error: Cannot generate image for userdata错误解决方法

XX-ext4机型上报下面错误log:

fastboot format:ext4:0x100000000 userdata
Warning: userdata size is 0xADFFFB000, but 0x100000000 was requested for formatting.
/usr/bin/mke2fs failed with status 1
fastboot: error: Cannot generate image for userdata

错误原因:

kvm-xfstests/android-xfstests里面的setup_partitions阶段虽然做了shrink userdata partitions工作,但是仅仅是做让userdata partitions size和userdata fs size保持一致的工作。

下来还通过try_shrink_userdata函数里面的fastboot format:ext4:0x100000000 userdata语句做进一步的shrink userdata partitions工作。

但是该fastboot工具还是有问题的。重编了XX_q的fastboot工具,用这个工具做format:ext4:0x100000000 userdata工作便成功了。

原创文章,作者:Zhu, Yuanyuan,如若转载,请注明出处:https://www.yidc.net/archives/7146