从客户端到服务端简单介绍下整个数据库自动化测试的各个模块:
一、客户端功能模块
- 选择测试环境:包括单机版、集群版,指定自动构建的测试环境,提交后,将由服务端调用k8ssdk 在kubernetes中创建基础的数据环境;
- 选择jar版本:数据库版本迭代时发布的jar包,在测试环境启动时会根据该参数实时下载jar包;
- 选择测试数据集:包括ssb、tpch数据集,在测试环境启动时会根据该参数自动下载对应的数据集,并且下载对应的数据集的测试SQL脚本。
- 提交:点击提交之后,将整个配置发送到服务端,由服务端自动执行剩下的任务。
- 测试环境列表:展示当前系统中存在的数据库环境,其中包含连接IP、端口等连接信息,测试人员可连接进去进行额外的测试。
二、服务端分层
- 表现层:接收客户端请求,调用业务逻辑层,封装装业务逻辑层处理后的数据。主要是提供三个数据接口:一个是创建数据库环境,另一个是删除数据库环境,另一个是展示测试环境状态列表。
- 业务逻辑层:解析客户端参数,定制化调用k8ssdk创建数据库环境,调用持久化层读取写入测试配置信息及其测试环境连接信息到数据库;
- 数据持久化层:定义各个操作对象,包括测试环境连接信息对象(database_instance),数据库jar对象(main_jar)。定义数据库连接访问操作,供接口控制模块调用。
三、k8ssdk
对 k8s.io/client-go
的封装,适配业务需求,简化构建 Service、Configmap、Statefulset、Volume 等 kubernetes 资源。
四、容器镜像
镜像中固定有数据库的基本环境,包含数据库服务和数据库命令行工具,启动时自动根据参数(在k8ssdk中指定)实时从静态文件服务中获取对应的数据库版本jar包、测试数据、测试脚本等动态内容。
五、Nginx 静态文件服务
负责jar包、测试数据、测试脚本等需要实时获取的数据的存储,容器启动时会根据从此处获取实时数据。