Skip to content

BIP 4: byzer release automated test project

hellozepp edited this page Jul 5, 2022 · 9 revisions

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后出现的问题

发版测试内容

容器和CLI测试

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测试

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

k8s镜像测试

暂不支持

技术详细设计

在 byzer-test 项目中创建 release-test 包,并在 Action 里创建 Release Test Workflow,更新 VERSION 文件自动触发或者手动触发。Workflow 会用发版的成品启动对应的服务,用 release-test 包的 UT 覆盖 API 接口/ CLI 命令行等测试场景。

镜像测试

1 个 Job,使用 testcontainer 先后启动 sandboxmulti-image docker compose,这里的容器整合了 notebook 服务,所有可以调用 notebook 的接口发送测试脚本做接口测试。(目前镜像测试使用的是最新的byzer-lang:3.1.1-latest,暂不支持hadoop2.X版本)

二进制包测试

根据 Spark 版本分 2 个 Job,根据 versionspark_version 从 Download 站点下载对应版本的 tar 包,解压后启动 byzer-lang 服务。同样的,也走 API 接口发送脚本测试。

CLI 测试

根据 OS 版本,分 3 个 Job,根据 versionspark_version 从 Download 站点下载对应版本的 all-in-one 包,java 进程调用系统命令执行测试脚本。

screenshot-20220511-143432