Improve local agent chat and device health detection
This commit is contained in:
@@ -34,6 +34,8 @@ def test_load_host_agent_config_supports_local_mode() -> None:
|
||||
assert config.control_plane_url == ""
|
||||
assert config.enrollment_managed is False
|
||||
assert config.ai_planner_transport == "direct"
|
||||
assert config.dependency_supervisor_enabled is True
|
||||
assert config.appium_supervised is True
|
||||
|
||||
|
||||
def test_load_host_agent_config_parses_poll_and_retry_values() -> None:
|
||||
|
||||
@@ -17,6 +17,9 @@ class ConnectableDriver:
|
||||
def connect(self) -> None:
|
||||
return None
|
||||
|
||||
def screenshot(self) -> bytes:
|
||||
return b"ok"
|
||||
|
||||
|
||||
def _config() -> HostAgentConfig:
|
||||
return HostAgentConfig(
|
||||
@@ -89,6 +92,33 @@ def test_heartbeat_synchronizer_runs_at_configured_interval_until_stopped() -> N
|
||||
assert manager.status("device-a") == "busy"
|
||||
|
||||
|
||||
def test_offline_device_is_retried_on_next_heartbeat_cycle() -> None:
|
||||
class FlakyDriver(ConnectableDriver):
|
||||
def __init__(self, fail: bool) -> None:
|
||||
self.fail = fail
|
||||
|
||||
def screenshot(self) -> bytes:
|
||||
if self.fail:
|
||||
raise RuntimeError("WDA disconnected")
|
||||
return b"ok"
|
||||
|
||||
instances: list[FlakyDriver] = []
|
||||
|
||||
def factory() -> FlakyDriver:
|
||||
driver = FlakyDriver(not instances)
|
||||
instances.append(driver)
|
||||
return driver
|
||||
|
||||
manager = DeviceManager()
|
||||
manager.register_device("device-a", factory) # type: ignore[arg-type]
|
||||
manager.connect("device-a")
|
||||
sync = HeartbeatSynchronizer(manager, object(), _config()) # type: ignore[arg-type]
|
||||
sync.probe_connected_devices()
|
||||
assert manager.status("device-a") == "offline"
|
||||
sync.connect_devices()
|
||||
assert manager.status("device-a") == "busy"
|
||||
|
||||
|
||||
def test_sync_once_notifies_status_tracker_and_on_sync_with_device_count() -> None:
|
||||
manager = DeviceManager()
|
||||
manager.register_device(
|
||||
|
||||
Reference in New Issue
Block a user