-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_idempotency.sh
More file actions
executable file
·144 lines (121 loc) · 4.94 KB
/
test_idempotency.sh
File metadata and controls
executable file
·144 lines (121 loc) · 4.94 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
#!/bin/bash
# 幂等性测试:验证多次执行 config.sh 产生相同的结果
cd /home/engine/project
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ Config.sh 幂等性测试 ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo ""
# 清理环境
rm -f deploy.conf
echo "=== 第一次执行 config.sh(生成新密码)==="
source config.sh >/dev/null 2>&1
# 保存所有密码
PASS1_POSTGRES=$POSTGRES_PASSWORD
PASS1_REDIS=$REDIS_PASSWORD
PASS1_RSSHUB=$RSSHUB_ACCESS_KEY
PASS1_FRESHRSS=$FRESHRSS_ADMIN_PASSWORD
PASS1_OUTLINE_SECRET=$OUTLINE_SECRET_KEY
PASS1_GITEA=$GITEA_ADMIN_PASSWORD
echo "生成的密码:"
echo " POSTGRES_PASSWORD: $PASS1_POSTGRES"
echo " REDIS_PASSWORD: $PASS1_REDIS"
echo " RSSHUB_ACCESS_KEY: $PASS1_RSSHUB"
echo " FRESHRSS_ADMIN_PASSWORD: $PASS1_FRESHRSS"
echo " GITEA_ADMIN_PASSWORD: $PASS1_GITEA"
echo " OUTLINE_SECRET_KEY: ${PASS1_OUTLINE_SECRET:0:20}...${PASS1_OUTLINE_SECRET:(-10)}"
echo ""
# 模拟 deploy.sh 保存配置
echo "=== 保存配置到 deploy.conf ==="
source <(sed '/^main /,$d' deploy.sh)
saveConfigToFile >/dev/null
echo "✓ 已保存 $(wc -l < deploy.conf) 行配置"
echo ""
# 清除当前环境变量
echo "=== 清除当前环境变量 ==="
unset POSTGRES_PASSWORD REDIS_PASSWORD RSSHUB_ACCESS_KEY FRESHRSS_ADMIN_PASSWORD OUTLINE_SECRET_KEY GITEA_ADMIN_PASSWORD
echo "✓ 环境变量已清除"
echo ""
echo "=== 第二次执行 config.sh(从 deploy.conf 加载)==="
source config.sh 2>&1 | head -1
# 保存第二次的密码
PASS2_POSTGRES=$POSTGRES_PASSWORD
PASS2_REDIS=$REDIS_PASSWORD
PASS2_RSSHUB=$RSSHUB_ACCESS_KEY
PASS2_FRESHRSS=$FRESHRSS_ADMIN_PASSWORD
PASS2_OUTLINE_SECRET=$OUTLINE_SECRET_KEY
PASS2_GITEA=$GITEA_ADMIN_PASSWORD
echo "加载的密码:"
echo " POSTGRES_PASSWORD: $PASS2_POSTGRES"
echo " REDIS_PASSWORD: $PASS2_REDIS"
echo " RSSHUB_ACCESS_KEY: $PASS2_RSSHUB"
echo " FRESHRSS_ADMIN_PASSWORD: $PASS2_FRESHRSS"
echo " GITEA_ADMIN_PASSWORD: $PASS2_GITEA"
echo " OUTLINE_SECRET_KEY: ${PASS2_OUTLINE_SECRET:0:20}...${PASS2_OUTLINE_SECRET:(-10)}"
echo ""
# 验证
echo "=== 验证结果 ==="
SUCCESS=true
if [ "$PASS1_POSTGRES" = "$PASS2_POSTGRES" ]; then
echo "✓ POSTGRES_PASSWORD 一致"
else
echo "✗ POSTGRES_PASSWORD 不一致!($PASS1_POSTGRES != $PASS2_POSTGRES)"
SUCCESS=false
fi
if [ "$PASS1_REDIS" = "$PASS2_REDIS" ]; then
echo "✓ REDIS_PASSWORD 一致"
else
echo "✗ REDIS_PASSWORD 不一致!"
SUCCESS=false
fi
if [ "$PASS1_RSSHUB" = "$PASS2_RSSHUB" ]; then
echo "✓ RSSHUB_ACCESS_KEY 一致"
else
echo "✗ RSSHUB_ACCESS_KEY 不一致!"
SUCCESS=false
fi
if [ "$PASS1_FRESHRSS" = "$PASS2_FRESHRSS" ]; then
echo "✓ FRESHRSS_ADMIN_PASSWORD 一致"
else
echo "✗ FRESHRSS_ADMIN_PASSWORD 不一致!"
SUCCESS=false
fi
if [ "$PASS1_OUTLINE_SECRET" = "$PASS2_OUTLINE_SECRET" ]; then
echo "✓ OUTLINE_SECRET_KEY 一致"
else
echo "✗ OUTLINE_SECRET_KEY 不一致!"
SUCCESS=false
fi
if [ "$PASS1_GITEA" = "$PASS2_GITEA" ]; then
echo "✓ GITEA_ADMIN_PASSWORD 一致"
else
echo "✗ GITEA_ADMIN_PASSWORD 不一致!"
SUCCESS=false
fi
echo ""
echo "=== 幂等性测试(第三次执行)==="
echo "不清除环境变量,再次执行 config.sh..."
source config.sh >/dev/null 2>&1
PASS3_POSTGRES=$POSTGRES_PASSWORD
if [ "$PASS1_POSTGRES" = "$PASS3_POSTGRES" ]; then
echo "✓ 第三次密码仍然一致"
else
echo "✗ 第三次密码改变了!"
SUCCESS=false
fi
echo ""
if [ "$SUCCESS" = true ]; then
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ ✓✓✓ 幂等性测试通过!多次执行配置完全一致! ║"
echo "╚══════════════════════════════════════════════════════════════╝"
EXIT_CODE=0
else
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ ✗✗✗ 幂等性测试失败!请检查上面的错误。 ║"
echo "╚══════════════════════════════════════════════════════════════╝"
EXIT_CODE=1
fi
echo ""
echo "=== 清理 ==="
rm -f deploy.conf simple_test.sh
echo "✓ 测试环境已清理"
exit $EXIT_CODE