Bump version to 1.0.11
Machine status probe on page load: - POST /api/machines/refresh probes all machines in parallel (max 20 concurrent, 1.5s timeout) - Updates DB status and broadcasts via SSE to all connected browser tabs - Server-side throttle: ignores refresh requests within 10s - Machines.tsx and Dashboard.tsx fire probe on mount - Visual "Checking machine status..." indicator in Machines table - MachineHandler now accepts *Engine for ProbeAllMachines access
This commit is contained in:
@@ -3,6 +3,7 @@ package syncengine
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
"sync/atomic"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@@ -37,3 +38,29 @@ func TestIsReachableTimeout(t *testing.T) {
|
||||
t.Errorf("IsReachable returned too early: %v", d)
|
||||
}
|
||||
}
|
||||
|
||||
func TestProbeThrottle(t *testing.T) {
|
||||
e := &Engine{lastProbeAt: atomic.Int64{}}
|
||||
|
||||
e.lastProbeAt.Store(time.Now().UnixNano())
|
||||
|
||||
now := time.Now().UnixNano()
|
||||
last := e.lastProbeAt.Load()
|
||||
if now-last < int64(probeThrottleSeconds*time.Second) {
|
||||
return
|
||||
}
|
||||
t.Error("throttle check did not run as expected")
|
||||
}
|
||||
|
||||
func TestProbeConstants(t *testing.T) {
|
||||
if probeThrottleSeconds != 10 {
|
||||
t.Errorf("probeThrottleSeconds = %d, want 10", probeThrottleSeconds)
|
||||
}
|
||||
if probeTimeout != 1500*time.Millisecond {
|
||||
t.Errorf("probeTimeout = %v, want 1500ms", probeTimeout)
|
||||
}
|
||||
if probeMaxConcurrent != 20 {
|
||||
t.Errorf("probeMaxConcurrent = %d, want 20", probeMaxConcurrent)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user