-
Notifications
You must be signed in to change notification settings - Fork 548
BIP 4: byzer release automated test project
Status: DISCUSSION
Author: @hellozepp
Contributor: @MichelZhan
Date: 2022.04.24
Issue:https://github.com/byzer-org/task-management/issues/16
Pull Requests: https://github.com/byzer-org/byzer-test/pull/1
-
提升发版效率
-
发现多个集成插件和外部jar后出现的问题
github action 支持Linux、macOS、Windows多平台的托管运行器,且内置docker容器,我们可以利用这一点,新建一个工程,建立多个工作流分别对多个脚本进行自动化测试。测试逻辑可以参考byzer中的streamingpro-it中的分布式环境测试,为实现上述需求,且能够跟集成测试有个清晰的边界,对此工程定义如下:
-
仅用于发版测试,需要有多平台的自动化测试并行工作流
-
支持容器(sandbox、multi-image)自动化测试,docker是跨平台的,我们只需要测试linux环境的容器即可
-
支持 all-in-one tar包在Linux、macOS、Windows多个托管环境的CLI自动化测试,注意CLI依赖jdk环境,可以在初始化github工作流时设置,版本为jdk8
-
发版测试应该为专门编写的测试脚本,不能复用集成测试中的脚本
-
由于测试流程较长,执行是成功或失败,应该飞书通知到群组结果,飞书使用的秘钥需要进行加密
我们目前已经支持了在集成测试中做byzer on hadoop,同样需要集成到发版测试中,要点如下:
-
byzer-lang spark2版本二进制包自动测试,测试逻辑跟集成测试逻辑一致,区别是将代码替换而二进制包
-
byzer-lang spark3版本二进制包自动测试,测试逻辑跟集成测试逻辑一致,区别是直接从下载站下载二进制包无需打包
vscode需要人为参与安装和启动byzer engine,暂时不需要自动化方式
暂不支持
在 byzer-test 项目中创建 release-test
包,并在 Action 里创建 Release Test
Workflow,更新 VERSION
文件自动触发或者手动触发。Workflow 会用发版的成品启动对应的服务,用 release-test
包的 UT 覆盖 API 接口/ CLI 命令行等测试场景。
1 个 Job,使用 testcontainer
先后启动 sandbox
和 multi-image
docker compose,这里的容器整合了 notebook 服务,所有可以调用 notebook 的接口发送测试脚本做接口测试。(目前镜像测试使用的是最新的byzer-lang:3.1.1-latest,暂不支持hadoop2.X版本)
根据 Spark 版本分 2 个 Job,根据 version
和 spark_version
从 Download 站点下载对应版本的 tar 包,解压后启动 byzer-lang 服务。同样的,也走 API 接口发送脚本测试。
根据 OS 版本,分 3 个 Job,根据 version
和 spark_version
从 Download 站点下载对应版本的 all-in-one 包,java 进程调用系统命令执行测试脚本。