提交 ce66f1b9 authored 作者: 陈泽健's avatar 陈泽健

feat(auto-deploy): 添加服务器空间检查功能

- 新增auto_check_space.sh脚本用于检查服务器空间分配
- 实现系统类型判断逻辑,支持新统一平台和传统平台
- 添加目录存在性检查和空间容量验证功能
- 实现T/G/M单位转换为GB的计算逻辑
- 设计返回值机制:0表示空间正常,1表示空间不足,2表示未正确分区
- 更新需求文档,添加空间检查函数的需求说明
- 创建计划执行文档,规划实现步骤和技术要点
上级 baef94d4
# 自动化生成测试报告 # 自动检查服务器空间分配
## 代码路径 ## 代码路径
- 代码路径:[AuxiliaryTool/FunctionalTestReportGeneration] - 代码路径:[自动化部署脚本/x86架构/新统一平台/auto_check_space.sh]
- 主脚本:[自动化部署脚本/x86架构/新统一平台/new_auto.sh]
## 功能需求 ## 功能需求
### 功能目标 ### 功能目标
**目标:** 通过测试用例+BUG列表+功能测试报告模板生成项目功能测试报告 **目标:** 新增一个shell脚本用于检查服务器空间分区,通过主函数脚本来传参进行调用本脚本。暂时不需要增加主脚本的代码进行调用
### 需求描述 ### 需求描述
#### 模板文件获取 #### 空间检查
- 功能测试报告模板:[AuxiliaryTool/FunctionalTestReportGeneration/config/功能测试报告模板.md][AuxiliaryTool/FunctionalTestReportGeneration/config/功能测试报告模板.docx] - 设置一个字段`system_type`,接收系统类型参数,判断系统类型,执行对应检查逻辑。
- BUG列表数据模板:[AuxiliaryTool/FunctionalTestReportGeneration/config/BUG列表模板数据.xlsx] - new_type:新统一平台
- 功能测试用例模板: [AuxiliaryTool/FunctionalTestReportGeneration/config/功能测试用例模板.xlsx] - 检查逻辑:
- 通过df -h命令获取系统空间分配情况,获取/data目录总空间大小,处理多单位值T、G、M。
#### 测试数据获取 - 判断/data目录是否存在,并且总空间大小是否大于等于100GB。
-[AuxiliaryTool/FunctionalTestReportGeneration/testcases]路径下获取测试用例与BUG列表数据,可通过用户输入指定。 - 如果存在,并且总空间大小大于等于100GB,则返回0,表示空间正常。
- 如果存在,并且总空间大小小于100GB,则返回1,表示空间不足。
#### 测试报告生成 - 如果不存在,则返回2,表示未正确分区。不创建分区。
- 根据测试执行结果,自动填充功能测试报告模板,生成完整的测试报告。
- 根据BUG列表数据,自动统计BUG数量和等级分布,并填充到测试报告中。 - old_type:传统平台
- 根据功能测试用例,自动统计用例执行情况,并填充到测试报告中。 - 检查逻辑:
- 通过df -h命令获取系统空间分配情况,获取/目录总空间大小,处理多单位值T、G、M。
### 测试报告生成逻辑 - 判断/目录是否存在,并且总空间大小是否大于等于80GB。
#### 交互方式 - 如果存在,并且总空间大小大于等于80GB,则返回0,表示空间正常。
- 程序交互方式:通过命令行窗口、命令行参数进行交互输入执行。 - 如果存在,并且总空间大小小于80GB,则返回1,表示空间不足。
- 如果不存在,则返回2,表示未正确分区。不创建分区。
#### 数据格式获取
- 数据格式确认:通过读取BUG列表模板文件与功能测试用例模板文件,确认数据格式。 - 字段参数:
- 数据获取:通过用户输入指定测试数据路径,获取测试数据,测试用例文件与BUG列表文件。测试用例文件数据从第4行开始读取,BUG列表数据从第2行开始读取。 - exceted_space:空间预期容量,需在auto_check_space函数中定义
- 批量测试执行(暂不实现):通过批量执行功能测试用例,批量生成功能测试报告。 - actual_space:实际空间容量
- 项目名称获取:通过读取BUG列表中'项目名称'字段,获取项目名称。 - result:返回结果,0表示空间正常,1表示空间不足,2表示未正确分区
#### 数据定义 - 调用参数传递:
- 测试用例文件中定义用例执行结果状态分为:通过、失败、未验证与未开发。 - system_type:系统类型,new_type表示新统一平台,old_type表示传统平台
- BUG列表文件中定义BUG状态分为:激活、已解决与已关闭。 - system_type=new_type ./auto_check_space.sh
- 日期格式定义:日期格式统一为YYYY年MM月DD日。
#### 统计与关联规则
- 用例-BUG关联规则:通过获取BUG列表复现步骤中的用例编号,关联BUG列表数据,获取关联的BUG信息。
- 遗留BUG定义:BUG列表文件中,状态为激活与已解决的BUG定义为遗留BUG。
- 通过率计算规则:通过用例数量 / 总用例数量 * 100%,保留两位小数。
#### 报告内容
- 自动填充规则:测试概览、被测系统信息、测试结论、测试建议、测试环境信息为空,在报告中显示“未填写”,其余为必填字段。
- 图标绘制规则:绘制BUG等级分布、用例执行结果分布、用例通过率图表,使用matplotlib库进行图表绘制。
#### 文档输出规则
- 报告输出格式:输出Word和md文档格式。
- 报告输出位置:输出到[AuxiliaryTool/FunctionalTestReportGeneration/reports]
- 报告命名规则:{项目名称}_功能测试报告_{日期}.docx或{项目名称}_功能测试报告_{日期}.md。
- 报告编号规则:{项目名称}-{日期}
## 规范文档 ## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md` - 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
......
# 空间检查函数计划执行文档
## 需求来源
- 需求文档:`Docs/PRD/自动化部署脚本/新统一平台/需求文档/_PRD_空间检查函数需求文档.md`
---
## 实现计划
### 1. 代码结构设计
```bash
auto_check_space.sh
├── 函数定义:auto_check_space()
├── 输入参数:$system_type (环境变量)
├── 内部变量:
│ ├── exceted_space: 空间预期容量
│ ├── actual_space: 实际空间容量
│ └── result: 返回结果
└── 返回值:0/1/2
```
### 2. 实现步骤
- [ ] 创建脚本文件 `auto_check_space.sh`
- [ ] 定义函数 `auto_check_space()`
- [ ] 实现系统类型判断逻辑
- [ ] 实现目录存在性检查
- [ ] 实现df命令获取空间信息
- [ ] 实现单位转换逻辑(T/G/M → GB)
- [ ] 实现空间比较逻辑
- [ ] 返回结果值
### 3. 技术要点
#### 3.1 环境变量读取
```bash
system_type=${system_type:-""}
```
#### 3.2 目录存在性检查
```bash
if [ -d "$check_path" ]; then
# 目录存在
else
return 2
fi
```
#### 3.3 空间获取与单位转换
```bash
# df -h 输出示例:
# /dev/sda1 150G 50G 100G 33% /
# /dev/sda2 200G 80G 120G 40% /data
# 提取总空间大小和单位
size=$(df -h "$check_path" | tail -1 | awk '{print $2}')
unit=$(echo "$size" | sed 's/[0-9.]//g')
value=$(echo "$size" | sed 's/[^0-9.]//g')
```
#### 3.4 单位转换表
| 单位 | 转换为GB |
|------|---------|
| T | × 1024 |
| G | × 1 |
| M | ÷ 1024 |
### 4. 返回值定义
| 返回值 | 含义 |
|--------|------|
| 0 | 空间正常 |
| 1 | 空间不足 |
| 2 | 未正确分区(目录不存在) |
### 5. 调用方式
```bash
# 新统一平台检查
system_type=new_type ./auto_check_space.sh
echo $? # 查看返回值
# 传统平台检查
system_type=old_type ./auto_check_space.sh
echo $? # 查看返回值
```
---
## 代码文件
- 脚本路径:`自动化部署脚本/x86架构/新统一平台/auto_check_space.sh`
- 主脚本:`自动化部署脚本/x86架构/新统一平台/new_auto.sh`(暂不修改)
---
## 测试计划
- [ ] 测试new_type,/data目录存在且空间≥100GB
- [ ] 测试new_type,/data目录存在且空间<100GB
- [ ] 测试new_type,/data目录不存在
- [ ] 测试old_type,/目录空间≥80GB
- [ ] 测试old_type,/目录空间<80GB
- [ ] 测试单位转换(T/G/M)
---
## 优化功能回填
> 本章节用于记录实现过程中发现的优化点和改进措施
| 日期 | 优化项 | 状态 | 备注 |
|------|--------|------|------|
| - | - | - | - |
#!/bin/bash
#===================================================================================
# 功能说明:自动检查服务器空间分配
# 文件路径:自动化部署脚本/x86架构/新统一平台/auto_check_space.sh
# 调用方式:system_type=new_type ./auto_check_space.sh
# system_type=old_type ./auto_check_space.sh
# 返回值:0-空间正常, 1-空间不足, 2-未正确分区
# 创建日期:2026-03-30
#===================================================================================
#===================================================================================
# 函数名称:auto_check_space
# 功能说明:检查服务器空间分配是否满足要求
# 参数说明:通过环境变量 $system_type 传入系统类型
# new_type: 新统一平台,检查/data目录,要求≥100GB
# old_type: 传统平台,检查/目录,要求≥80GB
# 返回值:0-空间正常, 1-空间不足, 2-未正确分区
#===================================================================================
auto_check_space() {
# 定义内部变量
local exceted_space="" # 空间预期容量(GB)
local actual_space="" # 实际空间容量(GB)
local check_path="" # 检查路径
local result=0 # 返回结果
# 获取系统类型参数
local system_type="${system_type:-""}"
# 根据系统类型设置检查路径和预期容量
case "$system_type" in
new_type)
# 新统一平台:检查/data目录,要求≥100GB
check_path="/data"
exceted_space=100
;;
old_type)
# 传统平台:检查/目录,要求≥80GB
check_path="/"
exceted_space=80
;;
*)
# 未知系统类型
echo "[错误] 未知的系统类型: $system_type,请使用 new_type 或 old_type"
return 2
;;
esac
# 检查目录是否存在
if [ ! -d "$check_path" ]; then
echo "[检查] 目录 $check_path 不存在,未正确分区"
return 2
fi
# 通过df命令获取空间信息,提取总空间大小
local space_info=$(df -h "$check_path" | tail -1 | awk '{print $2}')
# 提取数值和单位
local unit=$(echo "$space_info" | sed 's/[0-9.]//g') # 单位:T/G/M
local value=$(echo "$space_info" | sed 's/[^0-9.]//g') # 数值
# 单位转换:统一转换为GB
case "$unit" in
T|t)
# 1TB = 1024GB
actual_space=$(echo "$value * 1024" | bc)
actual_space=${actual_space%.*} # 取整
;;
G|g)
# 1GB = 1GB
actual_space=${value%.*} # 取整
;;
M|m)
# 1MB = 1/1024 GB
actual_space=$(echo "$value / 1024" | bc)
actual_space=${actual_space%.*} # 取整
;;
*)
echo "[错误] 未知的存储单位: $unit"
return 2
;;
esac
# 空间比较判断
if [ "$actual_space" -ge "$exceted_space" ]; then
echo "[检查] $check_path 总空间: ${actual_space}GB,预期: ≥${exceted_space}GB,结果: 空间正常"
result=0
else
echo "[检查] $check_path 总空间: ${actual_space}GB,预期: ≥${exceted_space}GB,结果: 空间不足"
result=1
fi
return $result
}
#===================================================================================
# 主程序入口
#===================================================================================
# 判断是否被直接调用(source方式调用时不执行主程序)
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
# 执行空间检查函数
auto_check_space
# 输出返回值
exit $?
fi
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论