Skip to content

Commit 7ecba1e

Browse files
committed
add scheduler test
Signed-off-by: oliver könig <[email protected]>
1 parent 69dda7d commit 7ecba1e

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

nemo_run/run/torchx_backend/schedulers/docker.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,8 @@ def describe(self, app_id: str) -> Optional[DescribeAppResponse]:
190190
)
191191
)
192192
state = AppState.FAILED if int(status["exit_code"]) != 0 else AppState.SUCCEEDED
193+
else:
194+
state = AppState.UNKNOWN
193195

194196
return DescribeAppResponse(
195197
app_id=app_id,

test/run/torchx_backend/schedulers/test_docker.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import pytest
2020
from torchx.schedulers.api import AppDryRunInfo
2121
from torchx.specs import AppDef, Role
22+
from torchx.specs.api import AppState
2223

2324
from nemo_run.core.execution.docker import DockerExecutor
2425
from nemo_run.run.torchx_backend.schedulers.docker import (
@@ -125,6 +126,33 @@ def test_describe(docker_scheduler, docker_executor):
125126
assert len(response.roles) == 1
126127

127128

129+
def test_describe_running(docker_scheduler, docker_executor):
130+
with (
131+
mock.patch.object(DockerJobRequest, "load") as mock_load,
132+
mock.patch.object(DockerContainer, "get_container") as mock_get_container,
133+
mock.patch.object(PersistentDockerScheduler, "_get_app_state") as mock_get_app_state,
134+
):
135+
container = DockerContainer(
136+
name="test_role",
137+
command=["test"],
138+
executor=docker_executor,
139+
extra_env={},
140+
)
141+
mock_load.return_value = DockerJobRequest(
142+
id="test_session___test_role___test_container_id",
143+
executor=docker_executor,
144+
containers=[container],
145+
)
146+
mock_get_container.return_value = container
147+
mock_get_app_state.return_value = AppState.RUNNING
148+
149+
response = docker_scheduler.describe("test_session___test_role___test_container_id")
150+
assert response is not None
151+
assert response.app_id == "test_session___test_role___test_container_id"
152+
assert "RUNNING" in str(response.state)
153+
assert len(response.roles) == 1
154+
155+
128156
def test_save_and_get_job_dirs():
129157
with tempfile.TemporaryDirectory() as temp_dir:
130158
from nemo_run.config import set_nemorun_home

0 commit comments

Comments
 (0)