47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
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
|