- 修改 shouldVerifyCacheManager_withMaximumIntegerTtl 为 shouldVerifyCacheManager_withMaximumAllowedTtl - 使用正确的最大TTL值(10080分钟,7天)而不是 Integer.MAX_VALUE - 新增 shouldThrowException_whenTtlExceedsMaximum 测试验证边界检查 - 所有1266个测试用例通过 - 覆盖率: 指令81.89%, 行88.48%, 分支51.55% docs: 添加项目状态报告 - 生成 PROJECT_STATUS_REPORT.md 详细记录项目当前状态 - 包含质量指标、已完成功能、待办事项和技术债务
182 lines
6.2 KiB
Bash
Executable File
182 lines
6.2 KiB
Bash
Executable File
#!/bin/bash
|
||
# 🔍 Testing-Autonomous 实时监控脚本
|
||
# 用法: ./monitor.sh [project_path]
|
||
|
||
PROJECT_PATH=${1:-.}
|
||
LOG_FILE="$PROJECT_PATH/.testing-autonomous/progress.log"
|
||
COVERAGE_FILE="$PROJECT_PATH/target/site/jacoco/index.html"
|
||
|
||
# 颜色定义
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
echo -e "${BLUE}🔍 Testing-Autonomous 实时监控${NC}"
|
||
echo "=================================="
|
||
echo "项目路径: $PROJECT_PATH"
|
||
echo "=================================="
|
||
echo ""
|
||
|
||
# 检查配置文件
|
||
if [ -f "$PROJECT_PATH/.testing-autonomous/config.yml" ]; then
|
||
echo -e "${GREEN}✅ 配置文件存在${NC}"
|
||
TARGET_COVERAGE=$(grep "instruction:" "$PROJECT_PATH/.testing-autonomous/config.yml" | head -1 | awk '{print $2}' | tr -d '%')
|
||
echo "🎯 目标覆盖率: ${TARGET_COVERAGE}%"
|
||
else
|
||
echo -e "${YELLOW}⚠️ 配置文件不存在,使用默认配置${NC}"
|
||
TARGET_COVERAGE=85
|
||
fi
|
||
|
||
echo ""
|
||
|
||
# 实时监控函数
|
||
monitor_progress() {
|
||
local last_coverage=0
|
||
local round=0
|
||
|
||
while true; do
|
||
clear
|
||
echo -e "${BLUE}🔍 Testing-Autonomous 实时监控${NC}"
|
||
echo "=================================="
|
||
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||
echo "=================================="
|
||
echo ""
|
||
|
||
# 显示进度日志(最近20行)
|
||
if [ -f "$LOG_FILE" ]; then
|
||
echo -e "${BLUE}📊 最新进展:${NC}"
|
||
tail -20 "$LOG_FILE" 2>/dev/null | while read line; do
|
||
if [[ $line == *"ERROR"* ]] || [[ $line == *"失败"* ]]; then
|
||
echo -e "${RED}$line${NC}"
|
||
elif [[ $line == *"SUCCESS"* ]] || [[ $line == *"成功"* ]]; then
|
||
echo -e "${GREEN}$line${NC}"
|
||
elif [[ $line == *"WARNING"* ]] || [[ $line == *"警告"* ]]; then
|
||
echo -e "${YELLOW}$line${NC}"
|
||
else
|
||
echo "$line"
|
||
fi
|
||
done
|
||
echo ""
|
||
fi
|
||
|
||
# 解析当前覆盖率
|
||
if [ -f "$COVERAGE_FILE" ]; then
|
||
# 从JaCoCo报告中提取覆盖率
|
||
COVERAGE=$(grep -o 'ctr2>[0-9]*%' "$COVERAGE_FILE" | head -1 | grep -o '[0-9]*')
|
||
if [ ! -z "$COVERAGE" ]; then
|
||
echo -e "${BLUE}📈 覆盖率状态:${NC}"
|
||
echo "当前: ${COVERAGE}%"
|
||
echo "目标: ${TARGET_COVERAGE}%"
|
||
|
||
# 计算进度条
|
||
PROGRESS=$((COVERAGE * 50 / 100)) # 50字符宽度的进度条
|
||
BAR=$(printf '%*s' "$PROGRESS" | tr ' ' '█')
|
||
REMAINING=$((50 - PROGRESS))
|
||
EMPTY=$(printf '%*s' "$REMAINING" | tr ' ' '░')
|
||
|
||
if [ $COVERAGE -ge $TARGET_COVERAGE ]; then
|
||
echo -e "${GREEN}进度: [${BAR}${EMPTY}] ${COVERAGE}% ✅ 已达标${NC}"
|
||
else
|
||
echo -e "${YELLOW}进度: [${BAR}${EMPTY}] ${COVERAGE}% 🔄 继续优化${NC}"
|
||
fi
|
||
echo ""
|
||
|
||
# 显示差距
|
||
GAP=$((TARGET_COVERAGE - COVERAGE))
|
||
if [ $GAP -gt 0 ]; then
|
||
echo -e "${YELLOW}还需提升: ${GAP}%${NC}"
|
||
fi
|
||
fi
|
||
fi
|
||
|
||
# 检查测试执行状态
|
||
if [ -f "$PROJECT_PATH/target/surefire-reports" ]; then
|
||
TEST_COUNT=$(find "$PROJECT_PATH/target/surefire-reports" -name "*.txt" | wc -l)
|
||
echo -e "${BLUE}🧪 测试统计:${NC}"
|
||
echo "测试文件: $TEST_COUNT 个"
|
||
|
||
# 统计失败/错误
|
||
FAILURES=$(grep -l "FAILURE\|ERROR" "$PROJECT_PATH/target/surefire-reports"/*.txt 2>/dev/null | wc -l)
|
||
if [ $FAILURES -gt 0 ]; then
|
||
echo -e "${RED}❌ 失败: $FAILURES${NC}"
|
||
else
|
||
echo -e "${GREEN}✅ 全部通过${NC}"
|
||
fi
|
||
echo ""
|
||
fi
|
||
|
||
# 检查是否有卡住迹象
|
||
if [ -f "$LOG_FILE" ]; then
|
||
LAST_UPDATE=$(stat -c %Y "$LOG_FILE" 2>/dev/null || stat -f %m "$LOG_FILE" 2>/dev/null)
|
||
CURRENT_TIME=$(date +%s)
|
||
TIME_DIFF=$((CURRENT_TIME - LAST_UPDATE))
|
||
|
||
if [ $TIME_DIFF -gt 300 ]; then # 5分钟无更新
|
||
echo -e "${RED}⚠️ 警告: 已超过5分钟无进展,可能卡住${NC}"
|
||
echo -e "${YELLOW} 自动恢复机制应该已经启动...${NC}"
|
||
fi
|
||
fi
|
||
|
||
echo ""
|
||
echo -e "${BLUE}==================================${NC}"
|
||
echo "按 Ctrl+C 退出监控"
|
||
echo -e "${BLUE}==================================${NC}"
|
||
|
||
# 每5秒刷新一次
|
||
sleep 5
|
||
done
|
||
}
|
||
|
||
# 快速统计模式
|
||
quick_stats() {
|
||
echo -e "${BLUE}📊 快速统计${NC}"
|
||
echo "=================================="
|
||
|
||
# 测试数量
|
||
if [ -d "$PROJECT_PATH/src/test/java" ]; then
|
||
TEST_FILES=$(find "$PROJECT_PATH/src/test/java" -name "*Test.java" | wc -l)
|
||
echo -e "测试文件: ${GREEN}$TEST_FILES${NC} 个"
|
||
fi
|
||
|
||
# 覆盖率
|
||
if [ -f "$COVERAGE_FILE" ]; then
|
||
COVERAGE=$(grep -o 'ctr2>[0-9]*%' "$COVERAGE_FILE" | head -1 | grep -o '[0-9]*')
|
||
if [ ! -z "$COVERAGE" ]; then
|
||
if [ $COVERAGE -ge $TARGET_COVERAGE ]; then
|
||
echo -e "覆盖率: ${GREEN}${COVERAGE}% ✅${NC}"
|
||
else
|
||
echo -e "覆盖率: ${YELLOW}${COVERAGE}% 🔄${NC} (目标: ${TARGET_COVERAGE}%)"
|
||
fi
|
||
fi
|
||
fi
|
||
|
||
# 配置文件状态
|
||
if [ -f "$PROJECT_PATH/.testing-autonomous/config.yml" ]; then
|
||
echo -e "配置: ${GREEN}✅ 已配置${NC}"
|
||
else
|
||
echo -e "配置: ${RED}❌ 未配置${NC}"
|
||
fi
|
||
|
||
echo "=================================="
|
||
}
|
||
|
||
# 主逻辑
|
||
case "${2:-monitor}" in
|
||
monitor)
|
||
monitor_progress
|
||
;;
|
||
stats)
|
||
quick_stats
|
||
;;
|
||
*)
|
||
echo "用法: $0 [project_path] [monitor|stats]"
|
||
echo ""
|
||
echo "示例:"
|
||
echo " $0 . monitor # 实时监控当前项目"
|
||
echo " $0 . stats # 快速统计"
|
||
echo " $0 /path/to/project monitor # 监控指定项目"
|
||
exit 1
|
||
;;
|
||
esac |