Files
cleveragents-core/robot/websocket_updates.robot
freemo 8e9aa7af48 fix(client): address server client chain review findings
- Promote _request() to public method request() in ServerHttpClient
  to fix encapsulation violation across sync_client and remote_project
- Fix WebSocket connect() to raise NotImplementedError with clear TODO
  documenting that real websockets transport is not yet implemented
- Fix thread safety: protect last_event_id write under self._lock
  in ws_client.process_event()
- Broaden exception handling in sync() to catch ServerTimeoutError
  and A2aNotAvailableError in addition to ServerConnectionError
- Add has_next to PageResult in benchmark and test helpers
- Add comments explaining Retry-After header logging-only behavior
  and why blocking time.sleep is acceptable in sync client
- Update all test steps, robot helpers, and benchmarks to use the
  renamed public request() method and updated connect() behavior

Refs: #335, #336, #337, #338
2026-03-24 20:28:19 +00:00

82 lines
3.3 KiB
Plaintext

*** Settings ***
Documentation Integration tests for WebSocket updates client
Resource ${CURDIR}/common.resource
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${HELPER} ${CURDIR}/helper_websocket_updates.py
*** Test Cases ***
WS Connect Raises NotImplementedError
[Documentation] Verify connect raises NotImplementedError until real transport is available
${result}= Run Process ${PYTHON} ${HELPER} connect-raises cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} ws-connect-raises-ok
WS Subscribe Event
[Documentation] Verify event subscription and dispatch
${result}= Run Process ${PYTHON} ${HELPER} subscribe-event cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} ws-subscribe-event-ok
WS Dedup Event
[Documentation] Verify duplicate event detection
${result}= Run Process ${PYTHON} ${HELPER} dedup-event cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} ws-dedup-event-ok
WS Reconnect
[Documentation] Verify reconnection with backoff
${result}= Run Process ${PYTHON} ${HELPER} reconnect cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} ws-reconnect-ok
WS Reconnect Exhaust
[Documentation] Verify exhausted reconnects raise error
${result}= Run Process ${PYTHON} ${HELPER} reconnect-exhaust cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} ws-reconnect-exhaust-ok
WS Heartbeat
[Documentation] Verify heartbeat resets reconnect counter
${result}= Run Process ${PYTHON} ${HELPER} heartbeat cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} ws-heartbeat-ok
WS Deduplicator
[Documentation] Verify EventDeduplicator behavior
${result}= Run Process ${PYTHON} ${HELPER} deduplicator cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} ws-deduplicator-ok
WS Connection State
[Documentation] Verify ConnectionState reset
${result}= Run Process ${PYTHON} ${HELPER} connection-state cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} ws-connection-state-ok
WS Version Negotiate
[Documentation] Verify version negotiation
${result}= Run Process ${PYTHON} ${HELPER} version-negotiate cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} ws-version-negotiate-ok