from rara.v1 import executor_pb2 from rara_worker.server import ExecutorService async def test_capabilities_include_ping() -> None: service = ExecutorService() response = await service.GetCapabilities(executor_pb2.CapabilityRequest(), None) assert response.contract_version == 1 assert [capability.name for capability in response.capabilities] == ["ping"] async def test_ping_execution_completes() -> None: service = ExecutorService() events = [ event async for event in service.Execute( executor_pb2.JobSpec( job_id="job-1", step_run_id="step-1", kind="ping", ), None, ) ] assert [event.phase for event in events] == [ executor_pb2.ProgressEvent.PHASE_ACCEPTED, executor_pb2.ProgressEvent.PHASE_RUNNING, executor_pb2.ProgressEvent.PHASE_SUCCEEDED, ] assert events[-1].result.output["status"] == "ok" async def test_unknown_execution_fails_without_retry() -> None: service = ExecutorService() events = [ event async for event in service.Execute( executor_pb2.JobSpec(job_id="job-2", step_run_id="step-2", kind="missing"), None, ) ] assert events[-1].phase == executor_pb2.ProgressEvent.PHASE_FAILED assert events[-1].error.code == "executor_not_found" assert not events[-1].error.retryable