Skip to content

BIP 4: byzer release automated test project

Jinghua Zhan edited this page Apr 28, 2022 · 9 revisions

Status: DISCUSSION

Author: @hellozepp

Contributor: @hellozepp

Date: 2022.04.24

Issue:https://github.com/byzer-org/task-management/issues/16

Pull Requests: N/A

好处

  • 提升发版效率

  • 发现多个集成插件和外部jar后出现的问题

容器和CLI测试

github action 支持Linux、macOS、Windows多平台的托管运行器,且内置docker容器,我们可以利用这一点,新建一个工程,建立多个工作流分别对多个脚本进行自动化测试。测试逻辑可以参考byzer中的streamingpro-it中的分布式环境测试,为实现上述需求,且能够跟集成测试有个清晰的边界,对此工程定义如下:

  • 仅用于发版测试,需要有多平台的自动化测试并行工作流

  • 支持容器(sandbox、muti-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测试

vscode需要人为参与安装和启动byzer engine,暂时不需要自动化方式

k8s镜像测试

暂不支持

设计

创建 byzer-test 项目,在 Action 里创建7个workflow,发版测试手动触发。

  • 镜像走 API 接口测试,2套容器个workflow,发送脚本校对响应结果,镜像容器的管理可以使用 testcontainer。这里的整合了 notebook 可以调用notebook的接口发送脚本测试
  • 二进制包的测试,根据 hadoop 版本分2个workflow,byzer-lang 服务启动之后,走 API 接口测试
  • Cli 测试,根据OS版本,分三个workflow,java 进程调用系统命令执行测试脚本