IoTDB SQL自动化脚本执行主要在Linux系统服务器上进行运行操作,目的是为了防止功能更新造成的功能BUG或兼容性BUG。
测试环境,会持续更新Apache-IoTDB仓库Master分支代码构建IoTDB安装包,并配置测试用例依赖的JAR包。 如:
- 安装配置trigger/UDF test cases运行环境(每个环境仅做一次,且使用root用户权限)
rsync -avz [email protected]:/data/support-soft .
cd support-soft
# target_path 默认/data/nginx
sudo ./setup-env.sh -u <user>
reference: UDF:
- 测试文档: https://apache-iotdb.feishu.cn/sheets/shtcnBNOqZiICQvwyafSpKVy8Qe
- 测试java工程: https://github.com/changxue2022/iotdb-udf-test
Trigger:
- 测试文档: https://apache-iotdb.feishu.cn/sheets/shtcnMcsLTDUnYV95XBkjiddqAg
- 测试java工程: https://github.com/changxue2022/user-guide-trigger
执行trigger/udf 测试用例: 放置jar包
-
UDF依赖:
- 将
lib/udf_jar/ext
目录下的jar放置到目录$IOTDB_HOME/ext/udf
(也可以是$IOTDB_HOME/ext/udf
的子目录)下. - 将
lib/udf_jar/local
的两个jar 放到/data/nginx
目录下。
- 将
-
Trigger依赖:
- 将
lib/udf_jar/ext
目录下的jar放置到目录$IOTDB_HOME/ext/udf
(也可以是$IOTDB_HOME/ext/udf
的子目录)下. - 将
lib/udf_jar/local
的两个jar 放到/data/nginx
目录下。
- 将
需将$IOTDB_HOME/lib
下所有的jar包全部拷贝到iotdb-sql/user/driver/iotdb
目录下。
//.run文件编写规则
connect root/root; //连接用户
create/show/select/count/list... //数据库相关的增删改成操作
<<NULL; //不记录测试结果
<<SQLSTATE; //校验异常
以setup
模式生成的.result
文件与.run
文件最后统一存放在iotdb-sql/user/scripts
目录下。
DBtype IOTDB
iotdbURL jdbc:iotdb://172.20.31.7:6667/(修改为真实的ip和port)
iotdbDriver org.apache.iotdb.jdbc.IoTDBDriver
iotdbUser root(iotdb对应的用户名)
iotdbPasswd root(iotdb对应的用户名密码)
interval 11000
maxCircle 1
user_ip 127.0.0.1
mode setup(修改为:setup/test)
displayRow 10000
OVERTIME 1000
EndByMail off
maxConnection 127
waitTime 20
├── Readme.md // help
├── bin // class文件目录
├── lib
| ├── jdom.jar //jar包存放目录
├── result.xml //脚本级汇总结果
├── src //工具源码
├── test.sh //运行测试
├── tools //当前benchmark工具存放路径
├── user // 数据库jdbc驱动/配置文件/用例
│ ├── CONFIG //配置
│ ├── driver // iotdb的lib目录下全部的jar包
│ ├── result // 结果索引
│ └──ResultIndex.out
│ ├── scripts // 用例执行脚本
序号 | 覆盖功能模块 | 备注 |
---|---|---|
1 | 元数据 | 如存储组,节点,时间序列,元数据模板,TTL,自动创建元数据等操作- |
2 | 数据查询 | 如选择表达式查询,过滤条件查询,结果分页查询,结果对齐格式查询,聚合查询,最新点查询,空值查询,空值过滤,性能追踪,*和**通用符查询 |
3 | 运维命令 | 如FLUSH,MERGE,CLEAR CACHE等 |
4 | 元数据 | 如存储组,节点,时间序列,元数据模板,TTL,自动创建元数据等操作 |
5 | 查询写回(select into) | - |
6 | 触发器(Trigger) | - |
7 | 用户自定义函数(UDF) | - |
8 | 权限管理 | 角色,用户,权限,用户与角色,角色与权限,用户与权限等- |
可参照run文件规则编写测试用例,本地运行生成result文件,然后将.run
文件和.result
文件统一放到测试工具scripts文件目录下。
trigger/privilege_trig.run 问题说明: 给普通用户在root.**路径的CREATE_TRIGGER权限,脚本中的第128,129行: 128 list privileges user lily_create_trig on root.sg1; 129 list privileges user lily_create_trig on root.sg2; root.sg1,root.sg2路径看不到CREATE_TRIGGER权限,此bug已记录到IOTDB-2797。 现在的处理方式是,按照现有iotdb的表现(错误表现),来标记SQL语句结果类型,比如 128,129行的list privileges应该不为空(现在.result中为空)。 133,145,155行的create trigger应该成功(现在标记<<SQLSTATE)。 143,165的show triggers应该有对应结果(现在.result中为空)。 168,169,170的drop trigger应该成功(现在标记<<SQLSTATE)
权限模块:
- 赋予用户角色操作权限(GRANT_USER_ROLE)和撤销用户角色操作权限(REVOKE_USER_ROLE)功能异常,关于这块的测试用例采取注释处理,后续bug修复再启动测试。
- 删除存储组权限(DELETE_STORAGE_GROUP)功能丢失,相关用例采取注释处理,后续bug修复再启动测试。
数据处理模块: Select into 创建出非法时间序列:select temperature into h1 from root.sg1.; 创建出时间序列 root.sg1..h1
对应bug修复后,test会失败,到时分析结果,修改.run脚本,重新生成.result即可。