-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_environment.sh
More file actions
executable file
·157 lines (129 loc) · 4.86 KB
/
test_environment.sh
File metadata and controls
executable file
·157 lines (129 loc) · 4.86 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
#!/bin/bash
# 环境测试脚本
# 用于验证Property Series Manager的运行环境
set -e
# 颜色输出函数
print_info() {
echo "ℹ️ $1"
}
print_success() {
echo "✅ $1"
}
print_error() {
echo "❌ $1" >&2
}
print_warning() {
echo "⚠️ $1"
}
echo "=========================================="
echo "Property Series Manager 环境测试"
echo "=========================================="
# 1. 检查依赖工具
print_info "检查依赖工具..."
if command -v psql &> /dev/null; then
PSQL_VERSION=$(psql --version | head -n1)
print_success "PostgreSQL客户端已安装: $PSQL_VERSION"
else
print_error "PostgreSQL客户端(psql)未安装"
echo "安装命令: sudo apt-get install postgresql-client"
fi
if command -v cast &> /dev/null; then
CAST_VERSION=$(cast --version | head -n1)
print_success "Foundry Cast已安装: $CAST_VERSION"
else
print_error "Foundry Cast未安装"
echo "安装命令: curl -L https://foundry.paradigm.xyz | bash && foundryup"
fi
# 2. 检查环境变量
print_info "检查环境变量..."
if [ -n "$RPC_URL" ]; then
print_success "RPC_URL已设置: $RPC_URL"
else
print_warning "RPC_URL未设置,将使用默认值: http://localhost:8545"
fi
if [ -n "$SERIES_FACTORY_ADDR" ]; then
print_success "SERIES_FACTORY_ADDR已设置: $SERIES_FACTORY_ADDR"
else
print_error "SERIES_FACTORY_ADDR未设置(必需)"
fi
if [ -n "$ADMIN_PRIVATE_KEY" ]; then
print_success "ADMIN_PRIVATE_KEY已设置: ${ADMIN_PRIVATE_KEY:0:10}..."
else
print_error "ADMIN_PRIVATE_KEY未设置(必需)"
fi
# 3. 测试数据库连接
print_info "测试数据库连接..."
DATABASE_URL="postgres://neondb_owner:npg_6T8BdQKZFqME@ep-withered-lab-ad210dqn-pooler.c-2.us-east-1.aws.neon.tech/neondb?sslmode=require"
if command -v psql &> /dev/null; then
if psql "$DATABASE_URL" -c "SELECT 1;" &> /dev/null; then
print_success "数据库连接正常"
# 检查properties表是否存在
if psql "$DATABASE_URL" -c "SELECT 1 FROM properties LIMIT 1;" &> /dev/null; then
print_success "properties表存在且可访问"
# 检查是否有数据
RECORD_COUNT=$(psql "$DATABASE_URL" -t -c "SELECT COUNT(*) FROM properties;" | tr -d ' \n')
if [ "$RECORD_COUNT" -gt 0 ]; then
print_success "properties表包含 $RECORD_COUNT 条记录"
else
print_warning "properties表为空"
fi
else
print_error "properties表不存在或无法访问"
fi
else
print_error "数据库连接失败"
fi
else
print_warning "跳过数据库测试(psql未安装)"
fi
# 4. 测试RPC连接(如果设置了)
if [ -n "$RPC_URL" ] && command -v cast &> /dev/null; then
print_info "测试RPC连接..."
if cast client --rpc-url "$RPC_URL" &> /dev/null; then
print_success "RPC连接正常: $RPC_URL"
# 获取链ID
CHAIN_ID=$(cast chain-id --rpc-url "$RPC_URL" 2>/dev/null || echo "未知")
print_info "链ID: $CHAIN_ID"
# 获取最新区块号
BLOCK_NUMBER=$(cast block-number --rpc-url "$RPC_URL" 2>/dev/null || echo "未知")
print_info "最新区块: $BLOCK_NUMBER"
else
print_error "RPC连接失败: $RPC_URL"
fi
else
print_warning "跳过RPC测试(RPC_URL未设置或cast未安装)"
fi
# 5. 测试合约地址(如果设置了)
if [ -n "$SERIES_FACTORY_ADDR" ] && [ -n "$RPC_URL" ] && command -v cast &> /dev/null; then
print_info "测试工厂合约..."
# 检查合约地址格式
if [[ $SERIES_FACTORY_ADDR =~ ^0x[a-fA-F0-9]{40}$ ]]; then
print_success "工厂合约地址格式正确"
# 尝试调用合约(这里只是检查地址是否为合约)
if cast code --rpc-url "$RPC_URL" "$SERIES_FACTORY_ADDR" &> /dev/null; then
CODE_SIZE=$(cast code --rpc-url "$RPC_URL" "$SERIES_FACTORY_ADDR" | wc -c)
if [ "$CODE_SIZE" -gt 4 ]; then # "0x" + 至少一些字节码
print_success "工厂合约存在且包含代码"
else
print_warning "工厂合约地址不包含代码(可能不是合约地址)"
fi
else
print_error "无法获取工厂合约代码"
fi
else
print_error "工厂合约地址格式不正确"
fi
else
print_warning "跳过合约测试(参数未完全设置)"
fi
echo "=========================================="
print_info "环境测试完成"
echo "=========================================="
# 6. 给出建议
echo ""
print_info "建议:"
echo "1. 如果有错误,请根据提示安装缺失的依赖"
echo "2. 设置必要的环境变量(参考.env.example)"
echo "3. 确保数据库和RPC连接正常"
echo "4. 运行 ./property_series_manager.sh 开始使用"
echo ""