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

269 lines
14 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

** 此文件为配置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'