[优化] 增加 IP 处理逻辑并优化心跳负载

This commit is contained in:
ryan
2026-06-01 21:16:14 +08:00
parent 92df7d5c84
commit e43312d4c6
3 changed files with 110 additions and 0 deletions
+28
View File
@@ -150,6 +150,7 @@ func TestHeartbeatFlaredPersistsRuntime(t *testing.T) {
resp, err := HeartbeatFlared(node, FlaredHeartbeatPayload{
ClientVersion: " v0.2.0 ",
FrpVersion: " 0.61.1 ",
IP: " 192.168.1.10 ",
TunnelStatus: " RUNNING ",
ConnectedRelays: []FlaredConnectedRelay{
{RelayNodeID: " node-relay-1 ", Status: " HEALTHY ", ProxyCount: 3},
@@ -185,12 +186,39 @@ func TestHeartbeatFlaredPersistsRuntime(t *testing.T) {
if updated.ExtVersion != "0.61.1" {
t.Fatalf("expected frp_version to be trimmed and stored, got %q", updated.ExtVersion)
}
if updated.IP != "192.168.1.10" {
t.Fatalf("expected IP to be trimmed and stored, got %q", updated.IP)
}
if updated.CurrentVersion != "v1" {
t.Fatalf("expected current_version to be stored, got %q", updated.CurrentVersion)
}
if updated.LastSeenAt.IsZero() {
t.Fatal("expected last_seen_at to be updated")
}
// Test IPManualOverride
updated.IPManualOverride = true
if err := updated.Update(); err != nil {
t.Fatalf("failed to lock IP: %v", err)
}
_, err = HeartbeatFlared(updated, FlaredHeartbeatPayload{
ClientVersion: "v0.2.0",
FrpVersion: "0.61.1",
IP: "10.0.0.99",
TunnelStatus: "running",
})
if err != nil {
t.Fatalf("second HeartbeatFlared failed: %v", err)
}
lockedNode, err := model.GetNodeByNodeID(node.NodeID)
if err != nil {
t.Fatalf("failed to reload locked node: %v", err)
}
if lockedNode.IP != "192.168.1.10" {
t.Fatalf("expected IP to stay locked at 192.168.1.10, but got %q", lockedNode.IP)
}
}
func TestHeartbeatFlaredTrimsAndFiltersRelays(t *testing.T) {