简介
LTP-DDT通过TI验证linux的测试应用。基于LTP。LTP验证许多内核区域,像一些 存储管理、调度器和系统调用。LTP-DDT扩展LTP的内核测试,验证TI的Kernel驱动开发。LTP-DDT致力于嵌入式设备驱动测试。包括了成千上万的测试验证设备驱动的功能和性能。LTP-DDT也包括了测试系统用例和系统的稳定性。
要求
下载
git clone http://git.ti.com/git/test-automation/ltp-ddt.git
增加新的DDT测试
testcases/ddt:包括了测试文件C代码、脚本和python脚本。
runtest/ddt:包括了测试环境,是调用测试文件。
DDT测试实施指导
测试用例
- 写添加的测试用例。
- 确保linux脚本可用。
- 避免在平台上被指定硬件编码值,相反尽可能确定正确的值在使用linux提供的信息(/sys和/proc).
- 当不支持确定动态值,定义默认值和提供可行重写基于各自ARCH,DRIVER,SOC或者机器上。既可能定义可重写的值在通用层。ARCH,DRIVER,SOC或者机器上的变量能通过ltprun脚本输出。
- 避免在C代码中加入逻辑定义动态值。如果代码需要不同的值在不同的平台上测试,确保命令行参数值和写一个脚本调用C可执行文件。shell脚本应该使用可重写逻辑定义,去定义正确的值去测试C的可执行文件。
- 使用默认shell脚本模板避免在testcases/ddt/scripts/TEMPLATE作为一个开始点开发你的脚本。
- 开发包括一个巨大shell脚本。分开逻辑文件各自更小脚本,每个更小的脚本应该执行定义好的任务和识别其他用户开发测试用例。脚本返回值应该被名为get_*.
- 如果你的脚本返回一个单值,使用echo显示返回值。如果脚本需要返回多个值,考虑在更小的脚本中止它。如果真的需要放回多个值,写一个name=value pairs(每行)到文件描述符10.
看例子testcases/ddt/scripts/TEMPLATE.
测试环境
- 按照LTP指导。测环境文件是基于一个或更多的测试步骤。每个测试步骤行需遵守以下格式:
<TAG><COMMAND>,where.
<TAG> 是个字符串,识别测试步骤。
使用接下来的公约命名TAGs,为了测试用例能够选择在AREA,SCOPE和
TYPE/<AREA>_<SCOPE>_<TYPE>_<OPT_ID>,
i.e. “NAND_S_FUNC_RW_8K”, “NAND_M_PERF_ALL-SIZES”
SCOPE标签经常使用作为指明大多数时间请求运行测试,给用户在估计执行时间能够过滤测试用例。
SCOPE TAGS:
XS: <= 1 min
S: <= 10 mins
M: <= 1 hour
L: <= 8 hours
XL: <= 24 hours
XXL: <= 1 week
TYPE TAGS:
‘FUNC’, ‘PERF’, ‘STRESS’, ‘USECASE’, ‘COMPLIANCE’, ‘MODULAR’, ‘DOC’
COMMANDS 一个或者更多的shell脚本列表通过分号分割。命令返回0,测试用例通过,反之失败。
- 使用默认测试环境文件框架在runtest/ddt/TEMPLATE,作为一个开发测试环境点。
- 使用@requires 注释,指定ARCH,DRIVER,SOC 和 MACHINE要求运行测试环境,可以使用(),&&,||,*去指定测试请求。
e.g.
@requires /net/eth/* && spi_master
运行这个测试平台必须要一个以太网驱动和spi_master 驱动。
- 使用@setup_requires注释指定测试启动请求。一些测试情况,像USB和视频捕捉请求指定外设,像USB flash 驱动,DVD播放器,相机,etc,连接到DUT。使用@setup_requires 测试开发者 显著提高测试开始请求。这个信息可能使用自动测试框架运行测试请求到DUTs,使用恰当外设连接他。
如果测试环境识别一些设置请求,请跟随下面约定名字识别这个文档的第9章。
你可以使用undersocre(_) 分开多个@setup_requires的例子:
@setup_requires usbhostvideo_usbhostaudio
这个测试请求usbhostvideo 和 usbhostaudio 设置.
加入新的测试平台
安装LTP-DDT
LTP-DDT的环境安装
为了交叉编译LTP-DDT,需要一个交叉编译链请求。
安装并测试交叉编译链
- 我们典型使用Linaro或者Arago工具链。
安装Linaro工具链,地址
http://arago-project.org/wiki/index.php/Setting_Up_Build_Environment#Cross-compile_toolchain
安装Arago 工具链链接:
wget http://software-dl.ti.com/sdoemb/sdoemb_public_sw/arago_toolchain/2011_09/exports/arago-2011.09-armv7a-linux-gnueabi-sdk.tar.bz2
tar -xjf arago-2011.09-armv7a-linux-gnueabi-sdk.tar.bz2 -C /opt
- 设置环境变量路径PATH到包括交叉编译链的二进制工具链。
e.g.
$ export PATH=/opt/arago-2011.09/armv7a/bin:$PATH
测试交叉编译路径
For Arago Toolchain
$ arm-arago-linux-gnueabi-gcc -v
For Linaro Toolchain:
$ arm-linux-gnueabihf-gcc -v
交叉编译和安装
注意:交叉编译可能设在不同的例子在这个章节。
对于
Arago Toolchain: CROSS_COMPILE=arm-none-linux-gnueabi-;
Linaro Toolchain: CROSS_COMPILE=arm-linux-gnueabihf-;
编译之前的检查
- 更新testcases/ddt/alsa_test_suite/Makefile用alse的include和lib路径。
e.g.
ALSA_INCPATH=/home/useraccount/usr/include
ALSA_LIBPATH=/home/useraccount/usr/lib
文件系统的例子不包括ALSE的include和lib,参考下个步骤安装。
注意:或者代替更新Makefile,用户能自行把ALSA_INCPATH and ALSA_LIBPATH 作为参数 来make。
cd kernel路径和然后执行headers_install 在kernel安装路径
e.g.
$cd linux-xx.xx.xx.xx
$make CROSS_COMPILE=arm-none-linux-gnueabi- distclean
$make CROSS_COMPILE=arm-none-linux-gnueabi- headers_install
编译步骤
make autotools
export CROSS_COMPILER=arm-linux-gnueabihf-
export CC=${CROSS_COMPILER}gcc
export LD=${CROSS_COMPILER}ld
export AR=${CROSS_COMPILER}ar
export STRIP=${CROSS_COMPILER}strip
export RANLIB=${CROSS_COMPILER}ranlib
./configure --host=arm-linux-gnueabihf
make SKIP_IDCHECK=1 KERNEL_USR_INC=/opt/lcpd/git_repos/ti-linux-kernel/usr/include CROSS_COMPILE=arm-linux-gnueabihf- clean
make SKIP_IDCHECK=1 KERNEL_USR_INC=/opt/lcpd/git_repos/ti-linux-kernel/usr/include CROSS_COMPILE=arm-linux-gnueabihf-
安装步骤
$ sudo make DESTDIR=<destination directory> SKIP_IDCHECK=1 PLATFORM=<Platform name> install
For example:
$sudo make DESTDIR=/opt/filesystem/home/root/ltp-ddt-install SKIP_IDCHECK=1 PLATFORM=am335x-evm install
安装 ALSA 的INCLUDES 和 LIBS
在你的文件系统里安装下面的包
alsa-dev (e.g. alsa-dev_1.0.18-r0.1_armv5te.ipk)
alsa-lib-dev (e.g. alsa-lib-dev_1.0.18-r0.1_armv5te.ipk)
libasound2 (e.g. libasound2_1.0.18-r0.1_armv5te.ipk)
解压 .ipk文件使用下面的命令
$ ar -p alsa-dev_1.0.18-r0.1_armv5te.ipk data.tar.gz | tar -zx
$ ar -p libasound2_1.0.18-r0.1_armv5te.ipk data.tar.gz | tar -zx
$ ar -p alsa-lib-dev_1.0.18-r0.1_armv5te.ipk data.tar.gz | tar -zx
e.g.
运行测试用例
- 与运行LTP,一样运行DDT测试。使用ltprun程序和通过参数-f 指定测试runtest目录的环境,通过-P参数指定平台使用(过滤测试用例)。除用-f参数选择测试环境,用户也通过-s样式和-S SKIPFILE 选项。这些选项选择或跳过测试用例基于测试用例TAG指定测试环境文件。
./runltp -P am335x-evm -f ddt/lmbench
- runltp脚本有很多选项。其中一个用的压力测试:
-t 期间: 定义测试时间用 s,m,h,d.
-x 例子: 并行运行多倍测试用例。
-c <options>: 运行测试用例背景附加CPU负载。
-D <options>: 运行测试用例背景附加二次存储。
-m <options>: 运行测试用例背景附加主存储。
-i <options>:运行测试用例背景附加IO总线。
-n : 运行测试用例背景附加网络流量。