從客戶端到服務(wù)端簡單介紹下整個數(shù)據(jù)庫自動化測試的各個模塊:
一、客戶端功能模塊
- 選擇測試環(huán)境:包括單機版、集群版,指定自動構(gòu)建的測試環(huán)境,提交后,將由服務(wù)端調(diào)用k8ssdk 在kubernetes中創(chuàng)建基礎(chǔ)的數(shù)據(jù)環(huán)境;
- 選擇jar版本:數(shù)據(jù)庫版本迭代時發(fā)布的jar包,在測試環(huán)境啟動時會根據(jù)該參數(shù)實時下載jar包;
- 選擇測試數(shù)據(jù)集:包括ssb、tpch數(shù)據(jù)集,在測試環(huán)境啟動時會根據(jù)該參數(shù)自動下載對應的數(shù)據(jù)集,并且下載對應的數(shù)據(jù)集的測試SQL腳本。
- 提交:點擊提交之后,將整個配置發(fā)送到服務(wù)端,由服務(wù)端自動執(zhí)行剩下的任務(wù)。
- 測試環(huán)境列表:展示當前系統(tǒng)中存在的數(shù)據(jù)庫環(huán)境,其中包含連接IP、端口等連接信息,測試人員可連接進去進行額外的測試。
二、服務(wù)端分層
- 表現(xiàn)層:接收客戶端請求,調(diào)用業(yè)務(wù)邏輯層,封裝裝業(yè)務(wù)邏輯層處理后的數(shù)據(jù)。主要是提供三個數(shù)據(jù)接口:一個是創(chuàng)建數(shù)據(jù)庫環(huán)境,另一個是刪除數(shù)據(jù)庫環(huán)境,另一個是展示測試環(huán)境狀態(tài)列表。
- 業(yè)務(wù)邏輯層:解析客戶端參數(shù),定制化調(diào)用k8ssdk創(chuàng)建數(shù)據(jù)庫環(huán)境,調(diào)用持久化層讀取寫入測試配置信息及其測試環(huán)境連接信息到數(shù)據(jù)庫;
- 數(shù)據(jù)持久化層:定義各個操作對象,包括測試環(huán)境連接信息對象(database_instance),數(shù)據(jù)庫jar對象(main_jar)。定義數(shù)據(jù)庫連接訪問操作,供接口控制模塊調(diào)用。
三、k8ssdk
對 k8s.io/client-go 的封裝,適配業(yè)務(wù)需求,簡化構(gòu)建 Service、Configmap、Statefulset、Volume 等 kubernetes 資源。
四、容器鏡像
鏡像中固定有數(shù)據(jù)庫的基本環(huán)境,包含數(shù)據(jù)庫服務(wù)和數(shù)據(jù)庫命令行工具,啟動時自動根據(jù)參數(shù)(在k8ssdk中指定)實時從靜態(tài)文件服務(wù)中獲取對應的數(shù)據(jù)庫版本jar包、測試數(shù)據(jù)、測試腳本等動態(tài)內(nèi)容。
五、Nginx 靜態(tài)文件服務(wù)
負責jar包、測試數(shù)據(jù)、測試腳本等需要實時獲取的數(shù)據(jù)的存儲,容器啟動時會根據(jù)從此處獲取實時數(shù)據(jù)。