-
Notifications
You must be signed in to change notification settings - Fork 548
BIP 1: Support Integration testing using docker
Status: DISCUSSION
Author: hellozepp
Contributor: hellozepp
Date: 2022.02.24
Issue: #1234
Pull Requests: #1234
Byzer缺少一个可以进行集群测试的流程,存在以下的一些问题:
1)经常会有人反馈Byzer local模式正常,提交到yarn上就会有问题的case
2)PR 提交后常规的scalatest本地测试很难发现集群环境潜在的问题
3)发布前人工测试缺少yarn测试的环境,缺少yarn环境自动化发版测试
- 完善CI流程,支持可以自动跑在yarn环境的PR触发的集成测试
1)变更模块:byzer-build、streamingpro-it
2)变更内容:
-
byzer-build支持构建Byzer on yarn的镜像
-
集成测试支持本地和github上通过docker进行yarn集群测试
为方便演示,提交发布一个实验使用的分支,下面介绍详细使用方式。
1)打包Byzer引擎 前提条件:
-
我们的打包脚本仅支持Python3环境,如果需要多版本请先安装conda并使用
-
下载byzer-lang,获取打包使用的脚本
-
启动 Byzer 时,请使用--jars带上 ansj_seg-5.1.6.jar,nlp-lang-1.7.8.jar. 因为在很多示例中,我们需要用到分词相关的功能。
-
执行打包脚本
dev/make-distribution.sh
,本次只支持hadoop3环境,所以我们先使用打包脚本生成基于spark3的tar包。
export MLSQL_SPARK_VERSION=3.0
sh -x dev/make-distribution.sh && tar -xvf mlsql-engine_3.0-2.3.0-SNAPSHOT.tar.gz
2)安装docker Desktop:从 Docker 官网 下载适配您操作系统的安装包,安装并使用。
3)测试
-
IDE中启动测试类 streamingpro-it/src/test/scala/tech/mlsql/it/ComposeSpec.scala
-
或者通过maven命令启动
sh -x dev/run-test.sh 3.0
- 效果演示 it模块会依次启动hadoop3和byzer-lang容器,可以在控制台看到hadoop的启动日志:
byzer-lang启动日志:
启动完成后,将会看到3个docker实例:
实际是多套容器模拟的集群,然后日志收集到测试任务里面,这样就可以像local测试一样测试yarn环境。
在测试任务ComposeSpec中,实际上是模拟的http任务提交到container。同样我们可以在容器运行成功后手动访问该web入口:
注意,端口号为随机生成,需要从testcontainer的API获取。
最后,测试运行成功,容器会自动销毁。整个流程从启动容器到测试和销毁用时8-10分钟(image已经安装好的情况)。
【整理中】
仅支持spark3版本的byzer on yarn测试
-
测试spark2环境是否可以正常跳过
-
测试PR测试是否有足够资源
-
测试主链路,hadoop3和byzer-lang容器是否正常启动,是否可以正常接收http请求
-
测试结果后是否在target中可以找到启动日志
-
byzer的tar包不存在时,是否会提示用户先打包在测试