SmartAudio/package/testtools/tinatest/doc/Config.txt

269 lines
14 KiB
Plaintext
Raw Permalink Normal View History

2018-07-13 01:31:50 +00:00
** 此文件为配置tinatest.json的编写说明 **
目录:
1. 简介
2. 配置树
3. 系统默认配置值
4. 定制 - 简介
5. 定制 - 节点配置
6. 定制 - 全局限制
7. 定制 - 全局信息
8. 定制 - 局部限制
9. 定制 - 局部信息
10. 配置示例
11. 可视化配置(menucofig)
============================分割线===========================
1. 简介
----------------------------------------------
配置文件定义所有有效的测试用例(testcase),控制了所有测试用例以及tinatest的所有行为
因此要定制自己的规则,只需要修改配置文件"tinatest.json"
-------------
配置文件路径:
(小机端) /etc/tinatest.json
(电脑端) tinatest/src/config/tinatest.json
-------------
需要注意的是,tinatest支持`make menuconfig`的界面配置,最终执行`convert_json.sh`脚本,
根据menuconfig的配置项重新生成'tinatest.json'文件
(仅当`make menucofig`使能了`Customize TinaTest options`才会执行`convert_json.sh`脚本)
(否则只会拷贝电脑端的tinatest.json到小机端)
-------------
只要节点存在配置项command,即会判定此节点为用例节点
-------------
用例执行顺序是根据配置文件从上往下依次执行
run_alone: 则等待前面的测试用例结束后再执行此用例,且当此用例结束后才执行下一个用例
run_times: 单个测试用例的执行次数,默认执行完一次再执行下一次
run_parallel: 并行执行单个用例的所有次数,即不等待上一次完成,直接启动run_times个测试进程
2. 配置树
----------------------------------------------
配置树为tinatest.json的结构图,例如:
"/stress/reboot" 对应配置文件的路径为:
| "/" : {
| "stress" : {
| "reboot" : {
| "enable" : true,
| "command" : "echo \"===== Going to reboot =====\"; reboot -f",
| "run_times" : 1000,
| "may_reboot" : true
| }
| }
| }
3. 系统默认配置值
----------------------------------------------
系统默认配置值是固化在代码中的测试用例环境值,用于保证当tinatest.json中缺少关
键项配置时能用默认值正常执行.
因此,配置值优先级为:
默认值 < tinatest.json内/sys配置节点 < 测试用例节点个性配置
系统默认配置值如下:
(非下表说明的其他配置项默认值为0/false)
(当/sys下无run_times的配置且用例无run_times的个性配置时,默认值才生效)
---------------------
| 关键字 | 默认值 | 其他说明
| run_cnt_up_to | 10 | 最多同时执行任务数
| outdir | "/mnt/UDISK/collectd" | collectd输出目录
| collectd_interval_sec | 2 | collectd收集环境时间间隔
| run_times | 1 | 默认执行次数
| date | 1 | 记录用例执行日期
| resource | 1 | 记录用例执行占用资源
| run_time_sec | 10000 | 限制用例执行时间
4. 定制 - 简介
---------------------------------------------
1) 系统配置(/sys)分为4类:
节点-配置 : 测试用例节点配置项
全局-限制 : /sys/global/limit - 控制tinatest的行为
全局-信息 : /sys/global/info - 配置collectd采集的系统环境信息
局部-限制 : /sys/local/limit - 测试用例可个性定制的用例限制
局部-信息 : /sys/local/info - 测试用例可个性定制的用例信息采集
---------------------
Note: 全局 指 只能在/sys/global中修改,测试用例配置节点中配置无效,作用范围为所有测试用例
局部 指 既能在/sys/global中修改,也能在测试用例配置节点中配置,且测试用例节点中的配置
会覆盖/sys/global中的配置,作用范围为配置项所在的测试用例
---------------------
2) 对一个测试用例而言,用例个性配置的优先级:
默认值 < tinatest.json内/sys配置节点 < 测试用例节点个性配置
例如:
| "/" : { (在syskey.h中run_times的默认宏值为10)
| "sys" : {
| "local" : {
| "info" : {
| "run_times" : 5, (/sys下配置run_times为5)
| ...
| }
| }
| "demo" : {
| "demo-c" : {
| "command" : "demo-c"
| "run_times" : 100 (测试用例个性配置run_times为100)
| }
| "demo-sh" : {
| "command" : "demo-sh" (测试用例无run_times的个性配置)
| }
| }
| }
最终,根据优先级,
/demo/demo-c 节点被执行100次(个性配置)
/demo/demo-sh 节点被执行5次(tinatest.json内/sys配置节点)
3) 怎样才是一个有效的测试节点?
当节点存在配置 "command" 时为一个有效节点,且本节点无设置enable为false时才能执行
例如:
配置文件如下:
| "/" : {
| "demo" : {
| "enable" : false,
| "demo-c" : {
| "command" : "demo-c"
| }
| "demo-sh" : {
| "command" : "demo-sh"
| }
| }
| }
命令: tinatest /demo
效果: 从/demo节点开始遍历,由于/demo节点设置了enable为false,因此无有效测试节点
命令: tinatest /demo/demo-c
效果: 从/demo/demo-c节点开始遍历(非/demo开始),因此会执行测试用例demo-c
5. 定制 - 节点配置
----------------------------------------------
| 分类 | 配置关键字 | 类型 | 说明
| ======== | ======================= | ====== | ===============================================
| 节点配置 | command | string | 执行用例的shell命令(用例节点标识)
| 节点配置 | enable | bool | 此树节点及树叉下所有节点使能标识(默认为true)
| 节点配置 | stdin | array | 字符串数组的每个元素为对测试用例的一次输入
| 节点配置 | fstdin | string | 重定向文件为用例的标准输入(优先级fstdin < stdin)
6. 定制 - 全局限制
----------------------------------------------
| 分类 | 配置关键字 | 类型 | 说明
| ======== | ======================= | ====== | ===============================================
| 全局限制 | run_cnt_up_to | int | 最大同时执行任务数(<=0无效)
7. 定制 - 全局信息
----------------------------------------------
| 分类 | 子分类 | 配置关键字 | 类型 | 说明
| ======== | ======== | ======================= | ====== | ======================================
| 全局信息 | 通用 | collectd_interval_sec | int | 系统环境信息采集周期(<=0无效)
| 全局信息 | 通用 | enable | bool | collectd单项环境采集使能
| 全局信息 | 通用 | match | NULL | 并非配置项,选中后出现具体匹配项
| 全局信息 | csv | outdir | string | 采集结果以csv数据格式输出的目录
| 全局信息 | rrdtool | outdir | string | 采集结果以rrd数据格式输出的目录
| 全局信息 | cpu | report_to_percentage | bool | 以百分比形式记录采集数据
| 全局信息 | memory | report_to_absolute | bool | 以绝对值形式记录采集数据
| 全局信息 | memory | report_to_percentage | bool | 以百分比形式记录采集数据
| 全局信息 | df | report_to_absolute | bool | 以绝对值形式记录采集数据
| 全局信息 | df | report_to_percentage | bool | 以百分比形式记录采集数据
| 全局信息 | df | sellect_or_ignore | string | 忽略匹配项(ignore)or选择匹配项(select)
| 全局信息 | df | device | string | df - 匹配的设备名, "ALL"表示所有
| 全局信息 | df | mountpoint | string | df - 匹配的挂载点, "ALL"表示所有
| 全局信息 | df | fstype | string | df - 匹配的文件系统, "ALL"表示所有
| 全局信息 | disk | sellect_or_ignore | string | 忽略匹配项(ignore)or选择匹配项(select)
| 全局信息 | disk | disk_regular_expression | string | disk - 支持正则表达的设备名
| 全局信息 | filecount | directory | string | 统计的文件夹
| 全局信息 | filecount | include_hidden | bool | 是否包含隐藏文件
| 全局信息 | filecount | include_subdir | bool | 是否遍历子目录
| 全局信息 | filecount | name | string | 匹配文件名(支持通配) (参考find命令)
| 全局信息 | filecount | size | string | 匹配文件大小 (参考find命令)
| 全局信息 | filecount | mtime | string | 匹配文件修改时间 (参考find命令)
| 全局信息 | ping | host | string | ping - ping的ip
| 全局信息 | ping | send_interval_sec | string | ping - pint一次的时间间隔(<=0无效)
(务必小于collectd_interval_sec)
| 全局信息 | ping | timeout | string | ping - ping一次的超时时间
| 全局信息 | ping | max_ttl | string | ping - ping一次的ttl上限(0-255)
8. 定制 - 局部限制
----------------------------------------------
| 分类 | 配置关键字 | 类型 | 说明
| ======== | ======================= | ====== | ======================================
| 本地限制 | run_times | int | 用例执行次数限制(<=0无效)
| 本地限制 | run_alone | bool | 用例单独执行(等待之前的任务完成)
| 本地限制 | run_parallel | bool | 并行执行(同时执行run_times个用例)
| 本地限制 | may_reboot | bool | 有可能重启(非易失地保存用例数据)
| 本地限制 | run_time_sec | int | 用例执行时长限制(秒)
| 本地限制 | run_time_min | int | 用例执行时长限制(分)
| 本地限制 | run_time_hour | int | 用例执行时长限制(时)
(最终限制时间为 [时*60*60 + 分*60 + 秒])
9. 定制 - 局部信息
| 分类 | 配置关键字 | 类型 | 说明
| ======== | ======================= | ====== | ======================================
| 本地信息 | date | bool | 记录用例开始日期和结束日期
| 本地信息 | resource | bool | 记录用例使用资源情况
10. 配置示例
----------------------------------------------
(1)=================
"reboot" : {
"command" : "echo \"Going to reboot\"; reboot -f", ==> 测试命令
"may_reboot" : true, ==> 此用例会重启(且单独执行)
"run_times" : 1000 ==> 此用例需要执行1000次
}
(2)=================
"sys" : {
"global" : {
"info" : {
"collectd_interval_sec" : 2, ==> collectd的采集间隔为2秒
"collectd_csv" : {
"enable" : true, ==> 使能csv输出格式
"outdir" : "/mnt/UDISK/collectd" ==> 输出目录路径
},
"collectd_rrdtool" : {
"enable" : false, ==> 关闭rrdtool输出格式
},
"collectd_cpu" : {
"enable" : true, ==> 使能collectd的cpu模块
"report_to_percentage" : true ==> 以百分比的形式记录数据
},
}
}
"local" : {
"info" : {
"date" : true, ==> 使能记录用例的开始日期和结束日期
"resource" : true ==> 使能记录用例的使用资源
},
"limit" : {
"run_times" : 1, ==> 默认执行次数为1
"run_time_sec" : 10000, ==> 默认执行时长限制为10000秒
"run_time_min" : 0,
"run_time_hour" : 0
}
}
},
"demo" : {
"demo-c" : {
"enable" : false, ==> 取消使能此用例
"date" : false, ==> 此用例取消日期记录
"resource" : false, ==> 此用例取消资源记录
"command" : "demo-c", ==> 测试用例的调用shell命令
"run_times" : 100 ==> 此用例执行100次(串行)
},
"demo-sh" : {
"command" : "demo-sh.sh"
"run_parallel" : true, ==> 并行调用测试用例
"run_times" : 10 ==> 此用例执行10次(并行)
}
}
此时执行命令: `tt /demo`,则只会并行调用demo-sh测试用例(demo-c没使能),
且由于demo-sh没定制date和resource,而/sys/local/info中默认使能date和resource,因此
demo-sh会记录开始/结束日期和用例使用资源.
11. 可视化配置(menucofig)
----------------------------------------------
在tina根目录执行`make menuconfig`进入界面配置,路径为:
DragonTools --> tinatest
当且仅当使能了`Customize TinaTest Options`才会执行`convert_json.sh`脚本根据menuconfig
的配置重新自动生成'tinatest.json'