mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-30 00:06:38 +08:00
64 lines
1.9 KiB
Go
64 lines
1.9 KiB
Go
package handler
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
"go-backend/internal/store/sqlite"
|
|
)
|
|
|
|
func TestProcessFlowItemTracksPeerShareFlowAndEnforcesLimit(t *testing.T) {
|
|
repo, err := sqlite.Open(filepath.Join(t.TempDir(), "panel.db"))
|
|
if err != nil {
|
|
t.Fatalf("open repo: %v", err)
|
|
}
|
|
defer repo.Close()
|
|
|
|
now := time.Now().UnixMilli()
|
|
if err := repo.CreatePeerShare(&sqlite.PeerShare{
|
|
Name: "flow-share",
|
|
NodeID: 1,
|
|
Token: "flow-share-token",
|
|
MaxBandwidth: 3000,
|
|
CurrentFlow: 1000,
|
|
PortRangeStart: 32000,
|
|
PortRangeEnd: 32010,
|
|
IsActive: 1,
|
|
CreatedTime: now,
|
|
UpdatedTime: now,
|
|
}); err != nil {
|
|
t.Fatalf("create peer share: %v", err)
|
|
}
|
|
share, err := repo.GetPeerShareByToken("flow-share-token")
|
|
if err != nil || share == nil {
|
|
t.Fatalf("load peer share: %v", err)
|
|
}
|
|
|
|
if _, err := repo.DB().Exec(`
|
|
INSERT INTO peer_share_runtime(id, share_id, node_id, reservation_id, resource_key, binding_id, role, chain_name, service_name, protocol, strategy, port, target, applied, status, created_time, updated_time)
|
|
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
`, 17, share.ID, share.NodeID, "res-17", "rk-17", "17", "exit", "", "fed_svc_17", "tls", "round", 32001, "", 1, 1, now, now); err != nil {
|
|
t.Fatalf("insert peer_share_runtime: %v", err)
|
|
}
|
|
|
|
h := &Handler{repo: repo}
|
|
h.processFlowItem(flowItem{N: "fed_svc_17", U: 1200, D: 900})
|
|
|
|
updatedShare, err := repo.GetPeerShare(share.ID)
|
|
if err != nil || updatedShare == nil {
|
|
t.Fatalf("reload share: %v", err)
|
|
}
|
|
if updatedShare.CurrentFlow != 3100 {
|
|
t.Fatalf("expected current_flow=3100, got %d", updatedShare.CurrentFlow)
|
|
}
|
|
|
|
runtime, err := repo.GetPeerShareRuntimeByID(17)
|
|
if err != nil || runtime == nil {
|
|
t.Fatalf("reload runtime: %v", err)
|
|
}
|
|
if runtime.Status != 0 {
|
|
t.Fatalf("expected runtime status=0 after limit enforcement, got %d", runtime.Status)
|
|
}
|
|
}
|