mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-28 07:36:38 +08:00
40 lines
1.4 KiB
Go
40 lines
1.4 KiB
Go
package handler
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestTrafficLimitMiBOverridesLegacyGB(t *testing.T) {
|
|
flowGB, flowMiB, err := parseTrafficLimit(map[string]interface{}{
|
|
"flow": float64(1), "flowMiB": float64(500),
|
|
}, 100)
|
|
if err != nil || flowGB != 1 || flowMiB != 500 {
|
|
t.Fatalf("parseTrafficLimit = (%d, %d, %v), want (1, 500, nil)", flowGB, flowMiB, err)
|
|
}
|
|
limit := flowLimitBytes(flowGB, flowMiB)
|
|
if limit != 500*bytesPerMiB {
|
|
t.Fatalf("limit = %d, want %d", limit, 500*bytesPerMiB)
|
|
}
|
|
policy := &userTunnelPolicy{Flow: flowGB, FlowMiB: flowMiB, InFlow: limit - 1, Status: 1}
|
|
if shouldPauseUserTunnel(policy, time.Now().UnixMilli()) {
|
|
t.Fatal("policy paused before reaching 500 MiB")
|
|
}
|
|
policy.InFlow = limit
|
|
if !shouldPauseUserTunnel(policy, time.Now().UnixMilli()) {
|
|
t.Fatal("policy did not pause at 500 MiB")
|
|
}
|
|
}
|
|
|
|
func TestTrafficLimitLegacyAndInvalidValues(t *testing.T) {
|
|
flowGB, flowMiB, err := parseTrafficLimit(map[string]interface{}{"flow": float64(2)}, 100)
|
|
if err != nil || flowGB != 2 || flowMiB != 0 || flowLimitBytes(flowGB, flowMiB) != 2*bytesPerGB {
|
|
t.Fatalf("legacy GB limit changed: (%d, %d, %v)", flowGB, flowMiB, err)
|
|
}
|
|
for _, value := range []interface{}{"1.5", -1, "999999999999999999999"} {
|
|
if _, _, err := parseTrafficLimit(map[string]interface{}{"flowMiB": value}, 100); err == nil {
|
|
t.Fatalf("accepted invalid flowMiB %v", value)
|
|
}
|
|
}
|
|
}
|