Files
AquaControlAI/internal/engine/collector/manager_test.go
T
2026-07-13 00:44:09 +08:00

51 lines
1.5 KiB
Go

package collector
import (
"github.com/google/uuid"
"testing"
"time"
)
func TestManagerStatusRecoversAfterSuccessfulRead(t *testing.T) {
m := NewManager(nil, nil)
id := uuid.New()
m.MarkConnected(id)
online, offline := m.Times(id)
if m.Status(id) != "connected" || online == nil || offline != nil {
t.Fatalf("expected connected status with online timestamp, got status=%q online=%v offline=%v", m.Status(id), online, offline)
}
firstOnline := *online
m.MarkDisconnected(id)
if m.Status(id) != "disconnected" {
t.Fatalf("expected disconnected status, got %q", m.Status(id))
}
_, offline = m.Times(id)
if offline == nil {
t.Fatal("expected offline timestamp after disconnect")
}
time.Sleep(2 * time.Millisecond)
m.MarkConnected(id)
online, offline = m.Times(id)
if m.Status(id) != "connected" || online == nil || offline == nil {
t.Fatalf("expected recovered connected status, got status=%q online=%v offline=%v", m.Status(id), online, offline)
}
if !online.After(firstOnline) {
t.Fatalf("expected reconnect to refresh online timestamp: first=%v current=%v", firstOnline, *online)
}
}
func TestManagerRepeatedConnectedDoesNotRefreshOnlineTimestamp(t *testing.T) {
m := NewManager(nil, nil)
id := uuid.New()
m.MarkConnected(id)
first, _ := m.Times(id)
m.MarkConnected(id)
second, _ := m.Times(id)
if first == nil || second == nil || !first.Equal(*second) {
t.Fatalf("repeated connected mark changed online timestamp: first=%v second=%v", first, second)
}
}