doris提交pull request时一般要包含回归测试,回归测试的目录在doris/regression-test,
有文档较好的说明了回归测试过程:
跑回归测试就是执行doris目录下的:
./run-regression-test.sh --run <回归测试名>
这个<回归测试名>是,在groovy文件中定义测试用例时定义的,例如:
suite("test_create_or_replace_view", "p0")
其中“p0”表示组名。
要增加自己的回归测试,可以在 /home/postgres/doris/regression-test/suites 的某个目录下增加groovy文件,doris的回归测试脚本用groovy脚本编写,groovy是一种语法和java类似的脚本语言(兼容java语法),但又不像java那么严格,使用JVM解释,所以能运行java的环境,也能运行groovy,doris实现了一个回归测试框架,是一个java程序,执行./run-regression-test.sh时,如果测试框架未编译,会先编译这个测试框架,然后测试框架调用groovy脚本执行回归测试。
执行回归测试前,要搭建起doris环境,即fe、be要配置好并运行,测试框架的配置文件regression-test/conf/regression-conf.groovy要配置好连接fe的IP、端口、用户名等信息。
回归测试的原理和其它数据库回归测试的原理类似,即执行SQL打印输出,保留之前正确的输出,与修改后的代码跑出的SQL输出比较,如果相同,说明新代码没有引入问题。
如果是增加新SQL功能就用 ./run-regression-test.sh --run <回归测试名> -forceGenOut 来生成新的结果。
但是doris的回归测试框架,除了这个功能,还支持更多的测试功能,远远超出SQL结果的比较,具体用法可以看上面的官方文档。
在我的机器上执行所有回归测试时,发现有一些失败的,我估计是我的集群配置问题(我在一台机器上部署了一个fe节点+一个be节点),通过问社区的同学,回答是,不必本地跑所有的回归测试用例都通过,只要自己的测试用例通过就行,估计这些失败的原因是be节点个数和CI环境不同。
另外回归测试目录名的p0、p1、p2,表示测试用例使用数据量的级别:
p0 是功能小case,数据量小
p1数据量100M-1G
p2是大case