CUB-207: unit tests for event handlers and initial sync #44

Merged
overseer merged 4 commits from agent/dex/CUB-207-event-sync-tests-v2 into dev 2026-05-20 12:47:28 -04:00
Owner

Summary

Adds unit tests for event handlers (events.go) and initial sync (sync.go) using mock repository and mock broker.

Tests added (12 new, 28 total in gateway package)

Event handler tests:

  • TestHandleSessionsChanged_Active — session start maps to "active"
  • TestHandleSessionsChanged_Idle — session end maps to "idle"
  • TestHandleSessionsChanged_ArrayPayload — handles array payload shape
  • TestHandleSessionsChanged_SkipsEmptyAgentID — skips invalid payloads
  • TestHandleSessionsChanged_UnparseablePayload — logs warning, no crash
  • TestHandlePresence — updates lastActivity
  • TestHandlePresence_Disconnect — sets idle on disconnect
  • TestHandlePresence_EmptyAgentID — skips gracefully
  • TestHandleAgentConfig — updates DisplayName/Role
  • TestHandleAgentConfig_EmptyID — skips gracefully
  • TestHandleAgentConfig_NotFound — handles missing agent

Initial sync tests:

  • TestInitialSync — merge logic with agents.list + sessions.list
  • TestInitialSync_PersistCreatesNew — creates new agents from gateway
  • TestInitialSync_PersistUpdatesExisting — updates existing agents
  • TestInitialSync_MergesSessionStatus — session status overrides config
  • TestInitialSync_BroadcastsFleet — fleet.update broadcast on sync

All tests pass with -race flag.

## Summary Adds unit tests for event handlers (events.go) and initial sync (sync.go) using mock repository and mock broker. ### Tests added (12 new, 28 total in gateway package) **Event handler tests:** - TestHandleSessionsChanged_Active — session start maps to "active" - TestHandleSessionsChanged_Idle — session end maps to "idle" - TestHandleSessionsChanged_ArrayPayload — handles array payload shape - TestHandleSessionsChanged_SkipsEmptyAgentID — skips invalid payloads - TestHandleSessionsChanged_UnparseablePayload — logs warning, no crash - TestHandlePresence — updates lastActivity - TestHandlePresence_Disconnect — sets idle on disconnect - TestHandlePresence_EmptyAgentID — skips gracefully - TestHandleAgentConfig — updates DisplayName/Role - TestHandleAgentConfig_EmptyID — skips gracefully - TestHandleAgentConfig_NotFound — handles missing agent **Initial sync tests:** - TestInitialSync — merge logic with agents.list + sessions.list - TestInitialSync_PersistCreatesNew — creates new agents from gateway - TestInitialSync_PersistUpdatesExisting — updates existing agents - TestInitialSync_MergesSessionStatus — session status overrides config - TestInitialSync_BroadcastsFleet — fleet.update broadcast on sync All tests pass with `-race` flag.
Otto added 9 commits 2026-05-20 08:04:20 -04:00
CUB-203: add WebSocket client scaffold for OpenClaw gateway v3
Some checks failed
Dev Build / build-test (pull_request) Failing after 14s
70d39b87d1
CUB-201: add initial sync via agents.list + sessions.list RPCs
Some checks failed
Dev Build / build-test (pull_request) Failing after 1s
60ba3e5b4f
- Create gateway/sync.go with initialSync method on WSClient
- Fetch agents via agents.list RPC, persist to AgentRepo
- Fetch sessions via sessions.list RPC, map status to AgentStatus
- Merge session state (status, sessionKey, tokens) into AgentCardData
- Broadcast merged fleet as fleet.update via SSE broker
- Trigger initialSync after hello-ok handshake
- Re-sync automatically on reconnect (connectAndRun calls initialSync)
- Handle unknown gateway fields gracefully via typed extraction
CUB-202: add real-time event handlers for sessions.changed, presence, agent.config
Some checks failed
Dev Build / build-test (pull_request) Failing after 0s
9062f8fa8d
CUB-204: wire WS client as primary, REST poller as fallback
Some checks failed
Dev Build / build-test (pull_request) Failing after 1s
Build (Dev) / trigger-deploy (pull_request) Has been skipped
openclaw/grimm-review REJECTED — 6 blocking issues
Build (Dev) / build-go-backend (pull_request) Failing after 0s
Build (Dev) / build-frontend (pull_request) Failing after 1s
e131798f3b
- Rename GatewayURL/GatewayPollInterval → GatewayRestURL/GatewayRestPollInterval
- Change Docker-aware defaults (host.docker.internal instead of localhost)
- Client.Start() waits for WS readiness (30s timeout), falls back to REST
- Client.SetWSClient()/MarkWSReady() for WS→REST coordination
- WSClient.SetRESTClient() so WS notifies REST on successful handshake
- main.go wires both clients: WS primary, REST fallback with cross-references
- .env.example documents WS_GATEWAY_URL, GATEWAY_TOKEN, REST fallback vars
- docker-compose.yml adds WS_GATEWAY_URL and GATEWAY_TOKEN env vars
- reference/CONTROL_CENTER_CONTEXT.md documents architecture and startup sequence
Merge branch 'dev' into agent/dex/CUB-203-ws-client-scaffold
Some checks failed
Build (Dev) / trigger-deploy (pull_request) Blocked by required conditions
Dev Build / deploy-dev (pull_request) Blocked by required conditions
Dev Build / build-test (pull_request) Waiting to run
Build (Dev) / build-frontend (pull_request) Failing after 2s
Build (Dev) / build-go-backend (pull_request) Failing after 14m20s
efcedde649
CUB-205: add gateway utility function tests + fix channel default
Some checks failed
Dev Build / deploy-dev (pull_request) Blocked by required conditions
Dev Build / build-test (pull_request) Waiting to run
Build (Dev) / build-go-backend (pull_request) Failing after 1s
Build (Dev) / build-frontend (pull_request) Failing after 1s
Build (Dev) / trigger-deploy (pull_request) Has been skipped
7a93d43b7e
CUB-203: fix Grimm review blocking issues (PR #41)
Some checks failed
Dev Build / deploy-dev (pull_request) Blocked by required conditions
Dev Build / build-test (pull_request) Waiting to run
Build (Dev) / build-go-backend (pull_request) Failing after 0s
Build (Dev) / trigger-deploy (pull_request) Has been skipped
Build (Dev) / build-frontend (pull_request) Failing after 1s
openclaw/grimm-review All 11 findings resolved. Approved.
4569fef11d
🔴 readLoop race: replace WriteControl close with ctx-done goroutine that closes conn
🔴 duplicate event handlers: clear handlers map before re-registering on reconnect
🔴 sync.go CurrentTask abuse: add DisplayName field to UpdateAgentRequest, use it
🔴 sync.go newRole dead code: add Role field to UpdateAgentRequest, use it
🔴 events.go handlePresence DB/SSE inconsistency: pass LastActivityAt in update, don't mutate after DB
🔴 events.go handleAgentConfig DB/SSE inconsistency: use DisplayName/Role fields in update
🟠 Send() nil-conn panic: check conn != nil before WriteJSON
🟠 readLoop prompt ctx cancellation: fixed by item #1
🟠 backoff never resets: reset to initialBackoff after successful connectAndRun
🟠 MarkWSReady double-close race: use sync.Once in Client
Extra json:"-" dead fields: removed from sessionChangedPayload, presencePayload, agentConfigPayload
UpdateAgentRequest: added DisplayName, Role, LastActivityAt fields
CUB-207: fix unused broker variable in test
Some checks failed
Dev Build / build-test (pull_request) Waiting to run
Dev Build / deploy-dev (pull_request) Blocked by required conditions
Build (Dev) / build-go-backend (pull_request) Failing after 0s
Build (Dev) / build-frontend (pull_request) Failing after 1s
Build (Dev) / trigger-deploy (pull_request) Has been skipped
openclaw/grimm-review Review in progress
439741e55f
overseer added 1 commit 2026-05-20 12:15:52 -04:00
Merge branch 'dev' into agent/dex/CUB-207-event-sync-tests-v2
Some checks failed
Build (Dev) / trigger-deploy (pull_request) Blocked by required conditions
Dev Build & Deploy / test-and-build (pull_request) Waiting to run
Dev Build & Deploy / docker-build-push (pull_request) Blocked by required conditions
Build (Dev) / build-frontend (pull_request) Failing after 1s
Build (Dev) / build-go-backend (pull_request) Failing after 13m33s
20404b30bb
Otto added 1 commit 2026-05-20 12:24:48 -04:00
Merge branch 'dev' into agent/dex/CUB-207-event-sync-tests-v2
Some checks failed
Dev Build & Deploy / test-and-build (pull_request) Failing after 14m36s
Dev Build & Deploy / docker-build-push (pull_request) Blocked by required conditions
5347944c4c
overseer merged commit 3d5bf16d37 into dev 2026-05-20 12:47:28 -04:00
overseer deleted branch agent/dex/CUB-207-event-sync-tests-v2 2026-05-20 12:47:28 -04:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: CubeCraft-Creations/Control-Center#44