如何测试
一般来说,应该有单元测试来涵盖个别 classes;必须有集成测试来涵盖端到端的场景,如构建,合并和查询。单元测试必须独立运行(不需要外部沙箱)。
测试 v1.5 及以上
mvn clean test
运行单元测试,它的测试覆盖范围有限。- 单元测试没有额外的依赖且能在任何机器上运行
- 单元测试不覆盖端到端的场景,如构建,合并和查询。
- 单元测试只需几分钟即可完成。
dev-support/test_all_against_hdp_2_4_0_0_169.sh
运行集成测试,有很好的覆盖率。- 集成测试 最好运行在 Hadoop 沙箱上。我们建议您在沙箱中检出一个代码副本,并在其中直接运行 test_all_against_hdp_2_2_4_2_2.sh。如果您不想在沙箱上添加代码,请参阅 更多关于 V1.5+ UT/IT 分离 的内容。
- 正如名称所示,脚本仅适用于 HDP 2.4.0.0-169.2,但您可以从中理解集成测试是如何运行的。
- 集成测试从生成随机数据开始,然后构建 Cube、合并 Cube,最后查询结果并与 H2 引擎进行比较。
- 集成测试需要一到两个小时才能完成。
nohup dev-support/test_all_against_hdp_2_4_0_0_169.sh < /dev/null 2>&1 > nohup.out &
以无人值守的方式运行集成测试。
更多关于 V1.5 UT/IT 分离
运行 mvn verify -Dhdp.version=2.4.0.0-169
(假定您运行在 HDP 2.4 沙箱上) 是运行完整的所有测试套件所需的全部内容。
它将按顺序执行以下步骤:
1. Build Artifacts
2. Run all UTs (takes few minutes)
3. Provision Cubes on the sandbox environment for IT uasge (takes 1~2 hours)
4. Run all ITs (takes few tens of minutes)
5. Verify jar stuff
如果您的代码改动很小那么只需要运行 UT,使用:mvn test
如果您的沙箱已经配置,并且您的代码更改不会影响沙箱配置的结果,(并且您不想等待数小时的配置),只需运行以下命令来单独运行 UT 和 IT:mvn test
mvn failsafe:integration-test
Cube 配置
测试用的 cube 配置确实会运行 kylin cube 作业,以在沙箱中准备样例 cube。这些准备好的 cubes 将会被集成测试使用,当前准备步骤与 maven 预集成测试阶段绑定,且其包含运行 BuildCubeWithEngine(需要 HBase),BuildCubeWithStream(需要 Kafka)。您可以在沙箱或进行开发的计算机中运行 mvn 命令。对于后者情况您需要在 $KYLIN_HOME/examples/test_case_data/sandbox/kylin.properties 中设置 kylin.job.use-remote-cli=true。
尝试将 -DfastBuildMode=true
附加到 mvn verify 命令,通过跳过增量 Cubing 来加速配置。