forked from apache/flink-cdc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_gaussdb_cdc.sh
More file actions
executable file
·218 lines (187 loc) · 10.3 KB
/
test_gaussdb_cdc.sh
File metadata and controls
executable file
·218 lines (187 loc) · 10.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#!/bin/bash
# ==============================================================================
# GaussDB CDC 一键测试脚本
# 按顺序执行:部署 -> 测试 -> 验证
# ==============================================================================
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
MAGENTA='\033[0;35m'
NC='\033[0m' # No Color
# 脚本路径
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
DEPLOY_SCRIPT="$SCRIPT_DIR/deploy_gaussdb.sh"
TEST_SCRIPT="$SCRIPT_DIR/run_gaussdb_test.sh"
CHECK_SCRIPT="$SCRIPT_DIR/check_sync_result.sh"
# 测试结果
DEPLOY_SUCCESS=false
TEST_SUCCESS=false
CHECK_SUCCESS=false
# 开始时间
START_TIME=$(date +%s)
# 清屏并显示标题
clear
echo -e "${MAGENTA}"
echo "╔══════════════════════════════════════════════════════════════════╗"
echo "║ ║"
echo "║ GaussDB CDC 一键测试脚本 ║"
echo "║ One-Click Test for GaussDB CDC Connector ║"
echo "║ ║"
echo "╚══════════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
echo ""
echo -e "${CYAN}测试流程:${NC}"
echo -e " 1️⃣ 部署最新代码到 Flink 集群"
echo -e " 2️⃣ 运行增量同步测试 (INSERT/UPDATE/DELETE)"
echo -e " 3️⃣ 验证数据一致性"
echo ""
echo -e "${YELLOW}⏱️ 开始时间: $(date '+%Y-%m-%d %H:%M:%S')${NC}"
echo ""
# 自动运行,无需手动确认
# read -p "按 Enter 键开始测试,或 Ctrl+C 取消..."
echo ""
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
# ========== 步骤 1: 部署 ==========
echo -e "${MAGENTA}╔══════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${MAGENTA}║ 步骤 1/3: 部署最新代码 ║${NC}"
echo -e "${MAGENTA}╚══════════════════════════════════════════════════════════════════╝${NC}"
echo ""
if [ ! -f "$DEPLOY_SCRIPT" ]; then
echo -e "${RED}❌ 错误: 找不到部署脚本 $DEPLOY_SCRIPT${NC}"
exit 1
fi
echo -e "${CYAN}正在执行: $DEPLOY_SCRIPT${NC}"
echo ""
if bash "$DEPLOY_SCRIPT"; then
DEPLOY_SUCCESS=true
echo ""
echo -e "${GREEN}✅ 步骤 1 完成: 部署成功${NC}"
else
echo ""
echo -e "${RED}❌ 步骤 1 失败: 部署失败${NC}"
echo -e "${YELLOW}💡 提示: 请检查编译错误或 Docker 容器状态${NC}"
exit 1
fi
echo ""
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
# 等待用户确认
echo -e "${YELLOW}⏸️ 部署完成,等待 5 秒让集群稳定...${NC}"
sleep 5
# ========== 步骤 2: 运行测试 ==========
echo ""
echo -e "${MAGENTA}╔══════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${MAGENTA}║ 步骤 2/3: 运行增量同步测试 ║${NC}"
echo -e "${MAGENTA}╚══════════════════════════════════════════════════════════════════╝${NC}"
echo ""
if [ ! -f "$TEST_SCRIPT" ]; then
echo -e "${RED}❌ 错误: 找不到测试脚本 $TEST_SCRIPT${NC}"
exit 1
fi
echo -e "${CYAN}正在执行: $TEST_SCRIPT test${NC}"
echo ""
if bash "$TEST_SCRIPT" test; then
TEST_SUCCESS=true
echo ""
echo -e "${GREEN}✅ 步骤 2 完成: 测试通过${NC}"
else
echo ""
echo -e "${RED}❌ 步骤 2 失败: 测试未通过${NC}"
echo -e "${YELLOW}💡 提示: 请检查 Flink 日志或数据库连接${NC}"
echo -e "${YELLOW} 查看日志: docker logs flink-taskmanager${NC}"
exit 1
fi
echo ""
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
# ========== 步骤 3: 验证结果 ==========
echo ""
echo -e "${MAGENTA}╔══════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${MAGENTA}║ 步骤 3/3: 验证数据一致性 ║${NC}"
echo -e "${MAGENTA}╚══════════════════════════════════════════════════════════════════╝${NC}"
echo ""
if [ ! -f "$CHECK_SCRIPT" ]; then
echo -e "${RED}❌ 错误: 找不到验证脚本 $CHECK_SCRIPT${NC}"
exit 1
fi
echo -e "${CYAN}正在执行: $CHECK_SCRIPT${NC}"
echo ""
if bash "$CHECK_SCRIPT"; then
CHECK_SUCCESS=true
echo ""
echo -e "${GREEN}✅ 步骤 3 完成: 验证通过${NC}"
else
echo ""
echo -e "${RED}❌ 步骤 3 失败: 验证未通过${NC}"
echo -e "${YELLOW}💡 提示: 数据可能未完全同步,请检查 CDC 配置${NC}"
exit 1
fi
echo ""
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
# ========== 最终报告 ==========
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
MINUTES=$((DURATION / 60))
SECONDS=$((DURATION % 60))
echo ""
echo -e "${MAGENTA}╔══════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${MAGENTA}║ 测试完成报告 ║${NC}"
echo -e "${MAGENTA}╚══════════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo -e "${CYAN}测试结果:${NC}"
echo ""
if [ "$DEPLOY_SUCCESS" = true ]; then
echo -e " ${GREEN}✅ 步骤 1: 部署成功${NC}"
else
echo -e " ${RED}❌ 步骤 1: 部署失败${NC}"
fi
if [ "$TEST_SUCCESS" = true ]; then
echo -e " ${GREEN}✅ 步骤 2: 测试通过 (INSERT/UPDATE/DELETE)${NC}"
else
echo -e " ${RED}❌ 步骤 2: 测试失败${NC}"
fi
if [ "$CHECK_SUCCESS" = true ]; then
echo -e " ${GREEN}✅ 步骤 3: 数据一致性验证通过${NC}"
else
echo -e " ${RED}❌ 步骤 3: 数据一致性验证失败${NC}"
fi
echo ""
echo -e "${CYAN}测试统计:${NC}"
echo -e " ⏱️ 总耗时: ${MINUTES} 分 ${SECONDS} 秒"
echo -e " 📅 完成时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
if [ "$DEPLOY_SUCCESS" = true ] && [ "$TEST_SUCCESS" = true ] && [ "$CHECK_SUCCESS" = true ]; then
echo -e "${GREEN}╔══════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ ║${NC}"
echo -e "${GREEN}║ 🎉 恭喜!所有测试通过! ║${NC}"
echo -e "${GREEN}║ 🎉 Congratulations! All tests passed! ║${NC}"
echo -e "${GREEN}║ ║${NC}"
echo -e "${GREEN}║ GaussDB CDC 增量同步功能正常工作 ║${NC}"
echo -e "${GREEN}║ ║${NC}"
echo -e "${GREEN}╚══════════════════════════════════════════════════════════════════╝${NC}"
echo ""
exit 0
else
echo -e "${RED}╔══════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${RED}║ ║${NC}"
echo -e "${RED}║ ❌ 测试失败 ║${NC}"
echo -e "${RED}║ ❌ Test Failed ║${NC}"
echo -e "${RED}║ ║${NC}"
echo -e "${RED}║ 请检查上面的错误信息 ║${NC}"
echo -e "${RED}║ ║${NC}"
echo -e "${RED}╚══════════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo -e "${YELLOW}💡 故障排查建议:${NC}"
echo -e " 1. 查看 Flink 日志: ${CYAN}docker logs flink-taskmanager${NC}"
echo -e " 2. 检查作业状态: ${CYAN}docker exec flink-jobmanager ./bin/flink list${NC}"
echo -e " 3. 验证数据库连接: ${CYAN}./run_gaussdb_test.sh init${NC}"
echo -e " 4. 查看详细文档: ${CYAN}cat TEST_SCRIPTS_GUIDE.md${NC}"
echo ""
exit 1
fi