-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_core_switching.sh
More file actions
executable file
·233 lines (208 loc) · 6.11 KB
/
Copy pathtest_core_switching.sh
File metadata and controls
executable file
·233 lines (208 loc) · 6.11 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
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
#!/bin/bash
# RustRay Integration Test Script
# This script helps verify the Xray/RustRay core switching functionality
set -e
echo "======================================"
echo "RR-UI Core Switching Test Suite"
echo "======================================"
echo ""
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Test counter
TESTS_PASSED=0
TESTS_FAILED=0
# Helper functions
pass() {
echo -e "${GREEN}✓ PASS${NC}: $1"
((TESTS_PASSED++))
}
fail() {
echo -e "${RED}✗ FAIL${NC}: $1"
((TESTS_FAILED++))
}
info() {
echo -e "${YELLOW}ℹ INFO${NC}: $1"
}
# Check if rr-ui is running
check_server() {
if curl -s http://localhost:54321/panel/setting/all > /dev/null 2>&1; then
return 0
else
return 1
fi
}
# Test 1: Server Availability
echo "Test 1: Checking if rr-ui server is running..."
if check_server; then
pass "Server is running on port 54321"
else
fail "Server is not running. Please start rr-ui first."
exit 1
fi
echo ""
# Test 2: Fetch Current Settings
echo "Test 2: Fetching current settings..."
SETTINGS=$(curl -s http://localhost:54321/panel/setting/all)
if echo "$SETTINGS" | jq -e '.success == true' > /dev/null 2>&1; then
CORE_TYPE=$(echo "$SETTINGS" | jq -r '.obj.core_type // "xray"')
CORE_PATH=$(echo "$SETTINGS" | jq -r '.obj.core_path // "default"')
pass "Settings retrieved successfully"
info "Current core_type: $CORE_TYPE"
info "Current core_path: $CORE_PATH"
else
fail "Failed to fetch settings"
fi
echo ""
# Test 3: Check if Xray binary exists
echo "Test 3: Checking for Xray binary..."
if command -v xray &> /dev/null; then
XRAY_PATH=$(which xray)
pass "Xray found at: $XRAY_PATH"
else
fail "Xray binary not found in PATH"
fi
echo ""
# Test 4: Check if RustRay binary exists
echo "Test 4: Checking for RustRay binary..."
if command -v rustray &> /dev/null; then
RUSTRAY_PATH=$(which rustray)
pass "RustRay found at: $RUSTRAY_PATH"
else
info "RustRay binary not found in PATH (this is OK if you haven't installed it yet)"
fi
echo ""
# Test 5: Update settings to use Xray (baseline)
echo "Test 5: Setting core to Xray..."
RESPONSE=$(curl -s -X POST http://localhost:54321/panel/setting/update \
-H "Content-Type: application/json" \
-d '{
"web_port": 54321,
"web_cert_file": null,
"web_key_file": null,
"username": "admin",
"password_hash": "",
"core_type": "xray",
"core_path": null
}')
if echo "$RESPONSE" | jq -e '.success == true' > /dev/null 2>&1; then
pass "Successfully switched to Xray"
info "Waiting 3 seconds for core to restart..."
sleep 3
else
fail "Failed to switch to Xray"
echo "Response: $RESPONSE"
fi
echo ""
# Test 6: Verify Xray is running
echo "Test 6: Verifying Xray process..."
if pgrep -x "xray" > /dev/null; then
pass "Xray process is running"
else
fail "Xray process not found"
fi
echo ""
# Test 7: Test invalid binary path
echo "Test 7: Testing error handling with invalid path..."
RESPONSE=$(curl -s -X POST http://localhost:54321/panel/setting/update \
-H "Content-Type: application/json" \
-d '{
"web_port": 54321,
"web_cert_file": null,
"web_key_file": null,
"username": "admin",
"password_hash": "",
"core_type": "xray",
"core_path": "/invalid/path/to/xray"
}')
if echo "$RESPONSE" | jq -e '.success == false' > /dev/null 2>&1; then
pass "Correctly rejected invalid binary path"
ERROR_MSG=$(echo "$RESPONSE" | jq -r '.msg')
info "Error message: $ERROR_MSG"
else
fail "Should have rejected invalid path"
fi
echo ""
# Test 8: Restore to working Xray
echo "Test 8: Restoring to working Xray configuration..."
RESPONSE=$(curl -s -X POST http://localhost:54321/panel/setting/update \
-H "Content-Type: application/json" \
-d '{
"web_port": 54321,
"web_cert_file": null,
"web_key_file": null,
"username": "admin",
"password_hash": "",
"core_type": "xray",
"core_path": null
}')
if echo "$RESPONSE" | jq -e '.success == true' > /dev/null 2>&1; then
pass "Restored to Xray"
sleep 3
else
fail "Failed to restore Xray"
fi
echo ""
# Test 9: Switch to RustRay (if available)
if command -v rustray &> /dev/null; then
echo "Test 9: Switching to RustRay..."
RESPONSE=$(curl -s -X POST http://localhost:54321/panel/setting/update \
-H "Content-Type: application/json" \
-d '{
"web_port": 54321,
"web_cert_file": null,
"web_key_file": null,
"username": "admin",
"password_hash": "",
"core_type": "rustray",
"core_path": null
}')
if echo "$RESPONSE" | jq -e '.success == true' > /dev/null 2>&1; then
pass "Successfully switched to RustRay"
info "Waiting 3 seconds for core to restart..."
sleep 3
# Verify RustRay is running
if pgrep -x "rustray" > /dev/null; then
pass "RustRay process is running"
else
fail "RustRay process not found"
fi
else
fail "Failed to switch to RustRay"
echo "Response: $RESPONSE"
fi
echo ""
# Switch back to Xray
echo "Switching back to Xray..."
curl -s -X POST http://localhost:54321/panel/setting/update \
-H "Content-Type: application/json" \
-d '{
"web_port": 54321,
"web_cert_file": null,
"web_key_file": null,
"username": "admin",
"password_hash": "",
"core_type": "xray",
"core_path": null
}' > /dev/null
sleep 2
else
info "Skipping RustRay test (binary not found)"
fi
# Summary
echo ""
echo "======================================"
echo "Test Summary"
echo "======================================"
echo -e "${GREEN}Passed: $TESTS_PASSED${NC}"
echo -e "${RED}Failed: $TESTS_FAILED${NC}"
echo ""
if [ $TESTS_FAILED -eq 0 ]; then
echo -e "${GREEN}All tests passed!${NC}"
exit 0
else
echo -e "${RED}Some tests failed. Please review the output above.${NC}"
exit 1
fi